agentscope-ai / agentscope-ai/agentscope-java

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

Aberta
#2,648 0 comentários 0 reações 0 responsáveis Ver no GitHub
area/core/model area/core/tool bug
Linguagem predominante
Java
Estrelas
5.6k
Forks
1.3k
Merge médio
4d 12h
PRs com merge (30d)
77

Descrição

当 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

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.