From 7dfc005a3e0efa7f8b4de7ccf7250c16f81a50da Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Wed, 24 Sep 2025 21:06:20 +0800 Subject: [PATCH] =?UTF-8?q?refactor(llm):=20=E7=B2=BE=E7=AE=80=E6=95=85?= =?UTF-8?q?=E9=9A=9C=E8=BD=AC=E7=A7=BB=E6=89=A7=E8=A1=8C=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `_execute_with_failover` 方法在 `raise_on_failure=True` 时,保证了要么返回有效结果,要么抛出异常。 因此,先前在调用该方法后的 `if result:` 判断和 `raise RuntimeError` 语句是冗余且不可达的。本次重构移除了这些不必要的代码,直接返回该方法的调用结果,使代码更加简洁和清晰。 --- src/llm_models/utils_model.py | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index b750bbbb5..45488fa39 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -209,12 +209,7 @@ class LLMRequest: ) return content, (reasoning_content, model_info.name, tool_calls) - result = await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) - if result: - return result - - # 这段代码理论上不可达,因为 raise_on_failure=True 会抛出异常 - raise RuntimeError("图片响应生成失败,所有模型均尝试失败。") + return await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) async def generate_response_for_voice(self, voice_base64: str) -> Optional[str]: """ @@ -237,8 +232,7 @@ class LLMRequest: return response.content or None # 对于语音识别,如果所有模型都失败,我们可能不希望程序崩溃,而是返回None - result = await self._execute_with_failover(request_callable=request_logic, raise_on_failure=False) - return result + return await self._execute_with_failover(request_callable=request_logic, raise_on_failure=False) async def generate_response_async( self, @@ -507,12 +501,7 @@ class LLMRequest: return embedding, model_info.name - 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 失败,所有模型均尝试失败。") + return await self._execute_with_failover(request_callable=request_logic, raise_on_failure=True) def _model_scheduler( self, failed_models: set | None = None @@ -674,7 +663,7 @@ class LLMRequest: cannot_retry_msg=f"任务-'{task_name}' 模型-'{model_name}': 连接异常,超过最大重试次数,请检查网络连接状态或URL是否正确", ) elif isinstance(e, ReqAbortException): - logger.warning(f"任务-'{task_name}' 模型-'{model_name}': 请求被中断,详细信息-{str(e.message)}") + logger.warning(f"任务-'{task_name}' 模型-'{model_name}': 请求被中断,详细信息-{e}") return -1, None # 不再重试请求该模型 elif isinstance(e, RespNotOkException): return self._handle_resp_not_ok( @@ -688,7 +677,7 @@ class LLMRequest: ) elif isinstance(e, RespParseException): # 响应解析错误 - logger.error(f"任务-'{task_name}' 模型-'{model_name}': 响应解析错误,错误信息-{e.message}") + logger.error(f"任务-'{task_name}' 模型-'{model_name}': 响应解析错误,错误信息-{e}") logger.debug(f"附加内容: {str(e.ext_info)}") return -1, None # 不再重试请求该模型 else: