Stream C: Multi-provider AI coaching backend + 20-provider registry
AI coaching service (backend/app/services/ai_provider.py): - Two code paths: OpenAI-compatible (6 providers) + Anthropic (Claude) - Streaming SSE responses via httpx async - System prompt built from AGENT_GUIDE + live user context - Graceful error handling for all provider failures - Gemini adapter for Google's generateContent API Chat endpoint (backend/app/routers/ai_chat.py): - POST /api/ai/chat — SSE streaming response - GET /api/ai/status — check configured provider - History capped at 20 messages, content at 4K chars Provider registry expanded to 20 providers: - 9 device integrations (strava, polar, garmin, whoop, oura, coros, fitbit, withings, suunto) - 8 AI providers (openai, openrouter, huggingface, groq, ollama, claude, gemini, custom_ai) - 3 other (usda, nutritionix, telegram) - Categorized: device, ai_provider, nutrition, notifications - COROS: MCP bridge approach (no API integration needed) - Strava: AI/ML warning per their ToS Frontend ChatCoach.jsx to follow in next commit.
This commit is contained in:
parent
6e082ce58f
commit
9a8e6ce1eb
4 changed files with 555 additions and 27 deletions
|
|
@ -96,6 +96,7 @@ from app.routers.catalog import router as catalog_router
|
|||
from app.routers.support import router as support_router
|
||||
from app.routers.nutrition import router as nutrition_router
|
||||
from app.routers.meal_plans import router as meal_plans_router
|
||||
from app.routers.ai_chat import router as ai_chat_router
|
||||
|
||||
app.include_router(auth_router)
|
||||
app.include_router(onboarding_router)
|
||||
|
|
@ -109,6 +110,7 @@ app.include_router(support_router)
|
|||
app.include_router(programs_router)
|
||||
app.include_router(nutrition_router)
|
||||
app.include_router(meal_plans_router)
|
||||
app.include_router(ai_chat_router)
|
||||
|
||||
|
||||
@app.get("/api/health")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue