agentscope-ai / agentscope-ai/agentscope-java
[Bug]:模型输出长度截断后遗留不完整工具调用,导致任务未完成或重复失败
未關閉
area/core/model
area/core/tool
bug
- 主要語言
- Java
- 星號
- 5.6k
- 分支
- 1.3k
- 平均合併
- 4 天 12 小時
- 30 天內合併 PR
- 77
描述
当 OpenAI 兼容 Chat 模型生成较大的工具参数时,例如一次性通过 `write_file` 写入完整 HTML,模型可能达到输出长度上限并返回 `finish_reason=length`。
此时工具调用的 `arguments` 只输出部分 JSON。流式事件中可能已出现 `path`、`content` 等片段,但最终无法组成完整参数。现有降级逻辑会将非法 JSON 转换为 `{}`,工具仍可能进入执行或参数校验路径,造成:
- 文件未生成,任务实际未完成;
- AgentState 中遗留无匹配 ToolResult 的 ToolUse,后续继续会话报 `Pending tool calls exist without results`;
- 模型收到普通失败结果后,可能原样重试同一个大文件调用,再次触发输出截断;
- 无终态事件的会话可能被错误标记为 completed。
期望在保留既有非法 JSON 降级兼容行为的前提下,识别由输出长度截断导致的不完整工具调用,阻止实际执行,并向模型返回明确的恢复策略。
原始兜底逻辑会返回:
导致模型反复使用大参数:
貢獻指南
評估
這個 Issue 還沒有評估資料。