crewai 0.80 的 Task 要求输出完整报告,实际到 800 字就停,expected_output 里的章节缺失,日志显示 max_iter 已经用到 15。
一开始怀疑是「模型的 max_tokens 限制了单次输出」,查了一圈,方向不对。
原因不止一个,得分开看。max_iter 不够,Agent 提前停止。还有一种是Agent 反复调用工具消耗了轮次。
少数情况下是结果没有落文件,长文本被截断丢弃。
动手时先把 max_iter 和 max_tokens 一起调大
python -c "print('Agent(max_iter=30, max_tokens=8000)')"
然后让 Agent 把报告写进文件而不是直接返回
python -c "print('tool: write_report(path, content)')"
接着检查任务描述里是否要求一次输出全文
python -c "print('split into outline then sections')"
等前面都确认过,再跑完后校验章节数和字数
python check_report.py --min-sections 6 --min-chars 3000
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
别只看报错消失,验证要多做一步。报告章节齐全,字数超过 3000,日志里 max_iter 没有触顶。
长报告更适合分节生成再拼接,单次输出受 max_tokens 限制,靠调大轮次解决不了内容被截断的问题。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
