From 4ce7999bd77d33583bee4fd23bd7b36dab148923 Mon Sep 17 00:00:00 2001 From: OG T Date: Tue, 31 Mar 2026 11:38:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(nvidia):=20=E8=A8=98=E9=8C=84=20HTTPStatusE?= =?UTF-8?q?rror=20=E9=9F=BF=E6=87=89=E9=AB=94=E4=BB=A5=E8=A8=BA=E6=96=B7?= =?UTF-8?q?=20400=20=E9=8C=AF=E8=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2026-03-31 ogt: 首席架構師審查要求增加錯誤診斷 Co-Authored-By: Claude Opus 4.5 --- apps/api/src/services/nvidia_provider.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/api/src/services/nvidia_provider.py b/apps/api/src/services/nvidia_provider.py index 162e53ab4..5dd279d88 100644 --- a/apps/api/src/services/nvidia_provider.py +++ b/apps/api/src/services/nvidia_provider.py @@ -780,6 +780,20 @@ class NvidiaProvider: logger.warning("nvidia_chat_timeout", error=str(e)) return f"Timeout: {e}", False, 0, 0.0 + except httpx.HTTPStatusError as e: + # 2026-03-31 ogt: 記錄完整響應體以診斷 400 錯誤 + self._circuit_breaker.record_failure() + NVIDIA_REQUESTS_TOTAL.labels(status="error", tool_name="chat").inc() + response_text = e.response.text if e.response else "No response body" + logger.warning( + "nvidia_chat_failed", + error=str(e), + error_type="HTTPStatusError", + status_code=e.response.status_code if e.response else None, + response_body=response_text[:500], # 截斷避免日誌過大 + ) + return str(e), False, 0, 0.0 + except Exception as e: self._circuit_breaker.record_failure() NVIDIA_REQUESTS_TOTAL.labels(status="error", tool_name="chat").inc()