54 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: ai-assistant.tool-call.concept
title: 工具调用的流式事件结构
type: concept
feature: ai-assistant
scope: end-user
locale: zh
aliases:
- tool_call 是什么
- AI 工具调用的过程
- 工具调用气泡
- AI 调用了工具显示什么
- tool_call 事件
related_tools: []
related_pages: []
prerequisites: []
negative:
- 单次回复可包含多次工具调用(并行或串行),不限于一次
- 工具调用结果不计入用户上下文 token但会消耗会话 token
- 用户不能在前端取消已发出的工具调用,只能整体中断本轮回复
last_verified: v1.7.90
---
# 工具调用的流式事件结构
## 定义
AI 助手回复以流式 SSE 推送给前端,事件中除了文本增量,还会出现工具调用片段。每次工具调用在浮窗里渲染为一个独立气泡,展示"工具名 + 参数 + 状态",让用户能看到 AI 在背后做什么。
## 一次完整工具调用的事件序列
1. `tool_call_start`:模型决定调工具,前端插入气泡,状态置「执行中」
2. `tool_call_arguments`(可多次):参数 JSON 增量流式拼接
3. `tool_call_result`:后端/前端返回结果,状态变「完成」或「失败」
4. 模型基于结果继续生成 `message` 文本
## 气泡可见信息
- 工具名(如 `list_tasks`
- 入参 JSON折叠/展开)
- 出参摘要(成功)或错误码(失败)
- 执行耗时
## 与普通文本的关系
- 工具结果不直接回给用户,而是回灌给模型
- 模型读结果后再生成下一段自然语言回答("我找到 3 条任务……"
- 用户体感是"AI 一边查一边说"
## 不支持
- 工具调用进行中无法手动改参数;要重来需点重试或重新提问
- 失败的工具调用不会自动二次重试(模型可能换工具或道歉)
## 相关
- 工具机制总览:[[ai-assistant.tools.concept]]
- 工具清单:[[ai-assistant.tools-list.concept]]
- 失败处理:[[ai-assistant.tool-failed.faq]]