fix(report_agent): handle None responses from LLM during content generation and enforce fallback behavior

This commit is contained in:
666ghj 2026-01-29 17:08:39 +08:00
parent 0b71f89f96
commit 54f1291967

View file

@ -1190,9 +1190,20 @@ class ReportAgent:
temperature=0.5,
max_tokens=4096
)
# 检查 LLM 返回是否为 NoneAPI 异常或内容为空)
if response is None:
logger.warning(f"章节 {section.title}{iteration + 1} 次迭代: LLM 返回 None")
# 如果还有迭代次数,添加消息并重试
if iteration < max_iterations - 1:
messages.append({"role": "assistant", "content": "(响应为空)"})
messages.append({"role": "user", "content": "请继续生成内容。"})
continue
# 最后一次迭代也返回 None跳出循环进入强制收尾
break
logger.debug(f"LLM响应: {response[:200]}...")
# 检查是否有工具调用和最终答案
has_tool_calls = bool(self._parse_tool_calls(response))
has_final_answer = "Final Answer:" in response
@ -1338,8 +1349,12 @@ class ReportAgent:
temperature=0.5,
max_tokens=4096
)
if "Final Answer:" in response:
# 检查强制收尾时 LLM 返回是否为 None
if response is None:
logger.error(f"章节 {section.title} 强制收尾时 LLM 返回 None使用默认错误提示")
final_answer = f"本章节生成失败LLM 返回空响应,请稍后重试)"
elif "Final Answer:" in response:
final_answer = response.split("Final Answer:")[-1].strip()
else:
final_answer = response