Describe the bug(问题描述)
当使用 StreamOptions.Builder#incremental 并将其设置为 false(累计模式)时,框架的行为与预期不一致。
按文档说明,累计模式应该返回“所有已累加的内容”,但实际表现为:在每次调用工具(tool call)后,之前的内容会被重置,导致历史推理内容和文本内容丢失。
To Reproduce(复现步骤)
- 设置参数:
- 使用如下测试话术(触发多轮推理 + 工具调用):
"先输出一段推理内容,然后调用工具,再输出一段推理内容和文本,然后再调用工具,最后输出文本。"
- 执行请求并观察流式输出结果
Expected behavior(期望行为)
在 incremental = false(累计模式)下,每次流式返回都应该包含完整的累计内容,包括:
- 之前的推理内容(reasoning / ThinkingBlock)
- 之前输出的文本内容
- 工具调用前后的所有内容
即:整个会话过程中不应丢失任何已生成内容。
Actual behavior(实际行为)
当前表现为:每次工具调用后内容被重置。
具体过程如下:
-
模型输出第一段推理内容
→ ThinkingBlock 正常按累计模式返回
-
模型调用工具,然后输出推理内容 + 文本
→ 推理内容从“工具调用之后”开始重新累计
→ 之前的推理内容丢失
→ 文本内容从此时开始累计
-
模型再次调用工具
→ 推理内容再次被重置
→ 上一轮累计的推理内容丢失
→ 上一轮的文本内容也丢失
→ 仅从本次工具调用之后开始累计
Error messages(错误信息)
没有明确的报错信息,该问题体现在流式返回内容的行为上。
Environment(环境信息)
- AgentScope-Java Version: 1.0.11
- Java Version: 17
- OS: Windows 10
Additional context(补充说明)
根据文档描述,incremental = false 表示“累计模式(cumulative)”,理论上应该返回完整的历史累积内容。
但当前观察到的行为更像是:累计范围仅限于“每个 tool call 片段内部”,而不是整个流式会话。
目前不确定这是:
- 设计如此(即:按 tool call 分段累计),还是
- 实现上的问题(累计逻辑被错误重置)
希望可以得到确认或说明。
Describe the bug(问题描述)
当使用
StreamOptions.Builder#incremental并将其设置为false(累计模式)时,框架的行为与预期不一致。按文档说明,累计模式应该返回“所有已累加的内容”,但实际表现为:在每次调用工具(tool call)后,之前的内容会被重置,导致历史推理内容和文本内容丢失。
To Reproduce(复现步骤)
incremental = false"先输出一段推理内容,然后调用工具,再输出一段推理内容和文本,然后再调用工具,最后输出文本。"
Expected behavior(期望行为)
在
incremental = false(累计模式)下,每次流式返回都应该包含完整的累计内容,包括:即:整个会话过程中不应丢失任何已生成内容。
Actual behavior(实际行为)
当前表现为:每次工具调用后内容被重置。
具体过程如下:
模型输出第一段推理内容
→
ThinkingBlock正常按累计模式返回模型调用工具,然后输出推理内容 + 文本
→ 推理内容从“工具调用之后”开始重新累计
→ 之前的推理内容丢失
→ 文本内容从此时开始累计
模型再次调用工具
→ 推理内容再次被重置
→ 上一轮累计的推理内容丢失
→ 上一轮的文本内容也丢失
→ 仅从本次工具调用之后开始累计
Error messages(错误信息)
没有明确的报错信息,该问题体现在流式返回内容的行为上。
Environment(环境信息)
Additional context(补充说明)
根据文档描述,
incremental = false表示“累计模式(cumulative)”,理论上应该返回完整的历史累积内容。但当前观察到的行为更像是:累计范围仅限于“每个 tool call 片段内部”,而不是整个流式会话。
目前不确定这是:
希望可以得到确认或说明。