agentscope-ai / agentscope-ai/agentscope-java

[Bug]:模型输出长度截断后遗留不完整工具调用,导致任务未完成或重复失败

未關閉
#2,648 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
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 降级兼容行为的前提下,识别由输出长度截断导致的不完整工具调用,阻止实际执行,并向模型返回明确的恢复策略。

原始兜底逻辑会返回:

Image

导致模型反复使用大参数:

Image

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。