From 1352818b25d3df85b370a49d2d83a39c99899c0c Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Sat, 30 May 2026 20:18:13 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20strip()=20cl=C3=A9s=20API=20+=20log=20ma?= =?UTF-8?q?squ=C3=A9=20pour=20debug=20401?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/ai.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/ai.py b/backend/ai.py index 88ce59e..3ce2889 100644 --- a/backend/ai.py +++ b/backend/ai.py @@ -17,19 +17,19 @@ ProviderName = Literal["deepseek", "openrouter", "gemini"] # Provider configurations PROVIDERS = { "deepseek": { - "api_key": os.getenv("DEEPSEEK_API_KEY", ""), + "api_key": os.getenv("DEEPSEEK_API_KEY", "").strip(), "base_url": "https://api.deepseek.com/v1", "model": os.getenv("DEEPSEEK_MODEL", "deepseek-chat"), "auth_header": "Bearer {api_key}", }, "openrouter": { - "api_key": os.getenv("OPENROUTER_API_KEY", ""), + "api_key": os.getenv("OPENROUTER_API_KEY", "").strip(), "base_url": "https://openrouter.ai/api/v1", "model": os.getenv("OPENROUTER_MODEL", "openai/gpt-4o-mini"), "auth_header": "Bearer {api_key}", }, "gemini": { - "api_key": os.getenv("GEMINI_API_KEY", ""), + "api_key": os.getenv("GEMINI_API_KEY", "").strip(), "base_url": "https://generativelanguage.googleapis.com/v1beta", "model": os.getenv("GEMINI_MODEL", "gemini-2.0-flash"), "auth_header": None, # Uses query param ?key= @@ -59,6 +59,9 @@ async def _call_deepseek_openrouter(prompt: str, system: str, provider: Optional temperature: float = 0.7, max_tokens: int = 2048) -> str: """Call OpenAI-compatible API (DeepSeek, OpenRouter).""" cfg = _get_provider_config(provider) + # Debug: log masked key to diagnose 401 + key_preview = cfg["api_key"][:8] + "..." + cfg["api_key"][-4:] if len(cfg["api_key"]) > 12 else "***" + logger.info(f"AI call: provider={cfg['name']} model={cfg['model']} key={key_preview}") headers = { "Authorization": cfg["auth_header"].format(api_key=cfg["api_key"]), "Content-Type": "application/json",