Add AI connectivity check endpoint: GET /admin/api/ai/connectivity
This commit is contained in:
@@ -318,3 +318,61 @@ async def update_runtime_config(
|
||||
is_overridden=True,
|
||||
message=f"Fournisseur changé à {state['provider']}, modèle {state['model']}",
|
||||
)
|
||||
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# GET /admin/api/ai/connectivity — test réseau vers les API AI
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
|
||||
@router.get("/connectivity")
|
||||
async def check_ai_connectivity():
|
||||
"""Vérifie la connectivité réseau vers OpenRouter et Gemini."""
|
||||
results = {}
|
||||
|
||||
# Test OpenRouter
|
||||
t0 = time.time()
|
||||
try:
|
||||
async with httpx.AsyncClient(timeout=httpx.Timeout(10, connect=5)) as client:
|
||||
resp = await client.get(
|
||||
"https://openrouter.ai/api/v1/models",
|
||||
headers={"Authorization": f"Bearer {settings.OPENROUTER_API_KEY}"} if settings.OPENROUTER_API_KEY else {},
|
||||
)
|
||||
results["openrouter"] = {
|
||||
"reachable": True,
|
||||
"status": resp.status_code,
|
||||
"latency_ms": round((time.time() - t0) * 1000, 1),
|
||||
"has_key": bool(settings.OPENROUTER_API_KEY),
|
||||
}
|
||||
except Exception as e:
|
||||
results["openrouter"] = {
|
||||
"reachable": False,
|
||||
"error": str(e)[:200],
|
||||
"latency_ms": round((time.time() - t0) * 1000, 1),
|
||||
"has_key": bool(settings.OPENROUTER_API_KEY),
|
||||
}
|
||||
|
||||
# Test Gemini
|
||||
t0 = time.time()
|
||||
try:
|
||||
async with httpx.AsyncClient(timeout=httpx.Timeout(10, connect=5)) as client:
|
||||
resp = await client.get("https://generativelanguage.googleapis.com")
|
||||
results["gemini"] = {
|
||||
"reachable": True,
|
||||
"status": resp.status_code,
|
||||
"latency_ms": round((time.time() - t0) * 1000, 1),
|
||||
"has_key": bool(settings.GEMINI_API_KEY),
|
||||
}
|
||||
except Exception as e:
|
||||
results["gemini"] = {
|
||||
"reachable": False,
|
||||
"error": str(e)[:200],
|
||||
"latency_ms": round((time.time() - t0) * 1000, 1),
|
||||
"has_key": bool(settings.GEMINI_API_KEY),
|
||||
}
|
||||
|
||||
return {
|
||||
"results": results,
|
||||
"ai_enabled": settings.AI_ENABLED,
|
||||
"ai_provider": runtime_ai_config.provider or settings.AI_PROVIDER,
|
||||
"ai_request_timeout": settings.AI_REQUEST_TIMEOUT,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user