mirror of
https://github.com/kuaifan/dootask.git
synced 2026-08-01 10:55:59 +00:00
54 lines
2.0 KiB
Markdown
54 lines
2.0 KiB
Markdown
---
|
||
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]]
|