diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 45488fa39..b750bbbb5 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -209,7 +209,12 @@ class LLMRequest: ) return content, (reasoning_content, model_info.name, tool_calls) - return await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) + result = await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) + if result: + return result + + # 这段代码理论上不可达,因为 raise_on_failure=True 会抛出异常 + raise RuntimeError("图片响应生成失败,所有模型均尝试失败。") async def generate_response_for_voice(self, voice_base64: str) -> Optional[str]: """ @@ -232,7 +237,8 @@ class LLMRequest: return response.content or None # 对于语音识别,如果所有模型都失败,我们可能不希望程序崩溃,而是返回None - return await self._execute_with_failover(request_callable=request_logic, raise_on_failure=False) + result = await self._execute_with_failover(request_callable=request_logic, raise_on_failure=False) + return result async def generate_response_async( self, @@ -501,7 +507,12 @@ class LLMRequest: return embedding, model_info.name - return await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) + result = await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) + if result: + return result + + # 这段代码理论上不可达,因为 raise_on_failure=True 会抛出异常 + raise RuntimeError("获取 embedding 失败,所有模型均尝试失败。") def _model_scheduler( self, failed_models: set | None = None @@ -663,7 +674,7 @@ class LLMRequest: cannot_retry_msg=f"任务-'{task_name}' 模型-'{model_name}': 连接异常,超过最大重试次数,请检查网络连接状态或URL是否正确", ) elif isinstance(e, ReqAbortException): - logger.warning(f"任务-'{task_name}' 模型-'{model_name}': 请求被中断,详细信息-{e}") + logger.warning(f"任务-'{task_name}' 模型-'{model_name}': 请求被中断,详细信息-{str(e.message)}") return -1, None # 不再重试请求该模型 elif isinstance(e, RespNotOkException): return self._handle_resp_not_ok( @@ -677,7 +688,7 @@ class LLMRequest: ) elif isinstance(e, RespParseException): # 响应解析错误 - logger.error(f"任务-'{task_name}' 模型-'{model_name}': 响应解析错误,错误信息-{e}") + logger.error(f"任务-'{task_name}' 模型-'{model_name}': 响应解析错误,错误信息-{e.message}") logger.debug(f"附加内容: {str(e.ext_info)}") return -1, None # 不再重试请求该模型 else: