From 21aec70e929f32a781bcf3817a5d545336a42812 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Mon, 25 Aug 2025 01:55:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E6=88=96=E8=AE=B8=E4=BF=AE=E5=A5=BD?= =?UTF-8?q?=E4=BA=86=E5=8F=8D=E6=88=AA=E6=96=AD=EF=BC=9F=E4=BD=86=E6=88=91?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E9=AA=8C=E8=AF=81=EF=BC=8C=E7=94=A8gemini=20?= =?UTF-8?q?2.5=20pro=E7=94=9F=E6=88=90=E6=97=A5=E7=A8=8B=E6=88=AA=E6=96=AD?= =?UTF-8?q?=E5=A4=AA=E4=B8=A5=E9=87=8D=E4=BA=86=EF=BC=8C=E8=BF=9E=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E7=9A=84=E4=BA=8C=E5=8D=81=E5=9B=9B=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E9=83=BD=E6=97=A0=E6=B3=95=E8=BE=93=E5=87=BA=EF=BC=8Cgemini=20?= =?UTF-8?q?2.5=20Flash=E6=88=AA=E6=96=AD=E5=A5=BD=E5=BE=88=E5=A4=9A?= =?UTF-8?q?=EF=BC=8C=E6=88=91=E8=AF=95=E4=BA=865=E6=AC=A1=E7=94=9F?= =?UTF-8?q?=E6=88=90=E7=9A=84=E9=83=BD=E6=98=AF=E5=AE=8C=E6=95=B4=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E8=83=BD=E4=BF=AE=E5=A5=BD=E4=BA=86=EF=BC=9F?= =?UTF-8?q?=E4=BD=86=E6=9C=89=E5=BE=85=E9=AA=8C=E8=AF=81=EF=BC=8C=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=E5=9C=A8=E5=BE=85=E5=8A=9E=E4=B8=8A=E6=89=93=E4=B8=AA?= =?UTF-8?q?=E9=97=AE=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/llm_models/utils_model.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 8432302c5..d4ed32fb8 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -340,16 +340,22 @@ class LLMRequest: is_truncated = True logger.warning("未检测到 [done] 标记,判定为截断") - if (is_empty_reply or is_truncated) and empty_retry_count < max_empty_retry: - empty_retry_count += 1 - reason = "空回复" if is_empty_reply else "截断" - logger.warning(f"检测到{reason},正在进行第 {empty_retry_count}/{max_empty_retry} 次重新生成") + if is_empty_reply or is_truncated: + if empty_retry_count < max_empty_retry: + empty_retry_count += 1 + reason = "空回复" if is_empty_reply else "截断" + logger.warning(f"检测到{reason},正在进行第 {empty_retry_count}/{max_empty_retry} 次重新生成") - if empty_retry_interval > 0: - await asyncio.sleep(empty_retry_interval) + if empty_retry_interval > 0: + await asyncio.sleep(empty_retry_interval) - model_info, api_provider, client = self._select_model() - continue + model_info, api_provider, client = self._select_model() + continue + else: + # 已达到最大重试次数,但仍然是空回复或截断 + reason = "空回复" if is_empty_reply else "截断" + # 抛出异常,由外层重试逻辑或最终的异常处理器捕获 + raise RuntimeError(f"经过 {max_empty_retry + 1} 次尝试后仍然是{reason}的回复") # 记录使用情况 if usage := response.usage: