目前在使用 ADK 包的 ChatModelAgent 创建带工具的 Agent,在前端展示数据时遇到问题。
希望的展示形式是 timeline + (think)正文块。也就是首先会有一个可折叠的 timeline,上面每一个节点对应“用户输入”到“最终答案”中间的每一步,目前是只有“工具调用”(调用 A 工具[输入,输出])。
在 AI 输出内容时能把中间过程(工具调用)直接挂到 timeline 中作为其中的节点。最终答案则在正文块正常显示。
目前想到的办法与问题:
- 先在正文块输出内容,一旦判断这次输出是工具调用的话,就把正文块内容清除并在 timeline 中添加节点。会有明显的内容迁移的感觉,不太合适。
- 通过 Prompt 要求大模型在调用工具时不要输出原因,可以在第一个 chunk 就判断是否工具调用。但是不一定每个大模型都严格遵守,而且如果是思考模型,还是会先输出 reasoning_content,这个还是会发给前端。
这种展示形式使用 ADK 是否有技巧能实现?还是说需要另外其他实现方式?
类似下面这样的展示形式:
User Message
Assistant(expanded)
├─ ▶ Tool: query_metrics(expanded)
│ input: {...}
│ output: {...}
└─ ▶ Tool: render_chart(expanded)
output:
Answer:
(think)
CPU usage is 80%
[chart]
目前在使用 ADK 包的 ChatModelAgent 创建带工具的 Agent,在前端展示数据时遇到问题。
希望的展示形式是 timeline + (think)正文块。也就是首先会有一个可折叠的 timeline,上面每一个节点对应“用户输入”到“最终答案”中间的每一步,目前是只有“工具调用”(调用 A 工具[输入,输出])。
在 AI 输出内容时能把中间过程(工具调用)直接挂到 timeline 中作为其中的节点。最终答案则在正文块正常显示。
目前想到的办法与问题:
这种展示形式使用 ADK 是否有技巧能实现?还是说需要另外其他实现方式?
类似下面这样的展示形式:
User Message
Assistant(expanded)
├─ ▶ Tool: query_metrics(expanded)
│ input: {...}
│ output: {...}
└─ ▶ Tool: render_chart(expanded)
output:
Answer:
(think)
CPU usage is 80%
[chart]