From f22438eb945e08aa35aafcbb867025e9676c470f Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Thu, 11 Sep 2025 22:20:26 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20(llm=5Fanalyzer)=20=E5=81=A5=E5=A3=AE?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86=EF=BC=8C=E5=AE=89=E5=85=A8=E8=AE=BF?= =?UTF-8?q?=E9=97=AELLM=E6=9C=8D=E5=8A=A1=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?=E5=B5=8C=E5=A5=97=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/analysis/llm_analyzer.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/analysis/llm_analyzer.py b/src/analysis/llm_analyzer.py index 1c31eb5..3eff7f4 100644 --- a/src/analysis/llm_analyzer.py +++ b/src/analysis/llm_analyzer.py @@ -56,8 +56,21 @@ class LLMAnalyzer: except Exception as json_err: error_text = await resp.text() logger.error(f"自定义LLM服务商响应JSON解析失败: {json_err}, 内容: {error_text}") - # 兼容 OpenAI 格式 - content = response_json["choices"][0]["message"]["content"] + return None + # 兼容 OpenAI 格式,安全访问嵌套字段 + content = None + try: + choices = response_json.get("choices") + if choices and isinstance(choices, list) and len(choices) > 0: + message = choices[0].get("message") + if message and isinstance(message, dict): + content = message.get("content") + if content is None: + logger.error(f"自定义LLM响应格式异常: {response_json}") + return None + except Exception as key_err: + logger.error(f"自定义LLM响应结构解析失败: {key_err}, 响应内容: {response_json}") + return None # 构造一个兼容原有逻辑的对象 class CustomResponse: completion_text = content