From 45ccab6033aa95175114b33fd7c6c715500ab3de Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:01:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(llm=5Fmodels):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E4=BF=A1=E6=81=AF=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E6=97=B6=E5=BC=95=E5=8F=91=E7=9A=84=E5=B1=9E=E6=80=A7=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在处理模型信息 `model_info` 为 `None` 的情况下,直接访问 `model_info.name` 会导致 `AttributeError`。 此提交通过以下方式修复了该问题: - 在 `_select_model` 调用后立即将 `model_info.name` 赋值给 `model_name` 变量,确保后续使用时该变量已定义。 - 在 `_handle_error` 方法中,当 `model_info` 可能为 `None` 时,增加了一个条件检查,如果 `model_info` 不存在,则将 `model_name` 设为 "unknown",从而避免了潜在的 `AttributeError`。 --- src/llm_models/utils_model.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index d4ed32fb8..cb7dfa590 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -287,6 +287,7 @@ class LLMRequest: # 模型选择和请求准备 start_time = time.time() model_info, api_provider, client = self._select_model() + model_name = model_info.name # 检查是否启用反截断 use_anti_truncation = getattr(self.model_for_task, "anti_truncation", False) @@ -403,7 +404,7 @@ class LLMRequest: # 重试失败 if raise_when_empty: raise RuntimeError(f"经过 {max_empty_retry} 次重试后仍然无法生成有效回复") - return "生成的响应为空,请检查模型配置或输入内容是否正确", ("", model_info.name, None) + return "生成的响应为空,请检查模型配置或输入内容是否正确", ("", model_name, None) async def get_embedding(self, embedding_input: str) -> Tuple[List[float], str]: """获取嵌入向量 @@ -565,7 +566,7 @@ class LLMRequest: Returns: (等待间隔(如果为0则不等待,为-1则不再请求该模型), 新的消息列表(适用于压缩消息)) """ - model_name = model_info.name + model_name = model_info.name if model_info else "unknown" if isinstance(e, NetworkConnectionError): # 网络连接错误 return self._check_retry(