cURL
基于知识库的智能问答接口。接口通过 SSE 流式输出,把回答过程拆成三个阶段依次返回:先规划(思考要查什么、查哪个库),再工具调用(执行检索),最后生成(输出回答)。调用前须先在控制台创建并发布问答服务。
模型在工具调用阶段会从以下工具里选用,工具名放在
开启控制台文件预解析后,可在对话时临时传入文件。文件 ID 通过 addFile(注册文件) 接口获取,完整链路:
平台不保存对话状态,每次请求需传入完整
响应以 SSE 流式事件返回,事件生命周期为:
plan_start → plan_end → tool_calling → tool_return → generation_start → generation_end。plan → tool_calling → tool_return 整段可重复多次(多轮检索)。基本信息
| 项目 | 说明 |
|---|---|
| 调用方式 | HTTP 接口调用,SSE 流式输出 |
| 请求地址 | POST https://{workspaceId}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat |
| Content-Type | application/json |
| Accept | 建议传 text/event-stream |
| 鉴权 | Authorization: Bearer <API-Key> |
| 限流 | 默认用户维度 25 QPS |
执行阶段
执行阶段(group) | 说明 |
|---|---|
planning | 规划中,包含 start 和 end 事件 |
generating | 生成中,包含 start 和 end 事件 |
当前步骤(step) | 说明 |
|---|---|
planning | 规划中 |
tool_calling | 工具调用中(此时 group 仍为 planning) |
generating | 生成中 |
由于模型原因
step_change 值可能不存在,请优先使用持久化的 step。空包情况下 step、step_change、group 字段可能不存在。tool_call 由 tool_calling(抛出 tool_calls)与 tool_return(工具返回)两个事件组成。步骤变化事件
step | step_change | 事件 | 说明 |
|---|---|---|---|
planning | plan_start | 开始规划 | step 变为 planning,后续 content 为规划内容 |
planning | 空 | 规划中 | content 为规划文本流 |
planning | plan_end | 结束规划 | step 即将变化,事件发生时仍为 planning |
tool_calling | tool_calling | 工具调用 | 抛出完整 tool_calls(含工具名与参数),携带本轮 usage |
tool_calling | tool_return | 工具返回 | role 为 tool,content 为返回摘要,additional_kwargs.extra_json 为结构化返回(检索类即 docs) |
generating | generation_start | 开始生成 | 后续 content 为最终回答文本流 |
generating | 空 | 生成中 | content 为回答文本流 |
generating | generation_end | 结束生成 | finish_reason 为 stop,携带最终 usage |
事件生命周期
工具清单
模型在工具调用阶段会从以下工具里选用,工具名放在 tool_calls[].function.name。arguments 是一段 JSON 字符串,需要再解析一次才能拿到具体参数;工具的返回结果放在 tool_return 帧的 additional_kwargs.extra_json.docs 里。
function.name | 工具 | arguments | 返回 docs[] |
|---|---|---|---|
semantic_search | 知识库搜索 | {"query", "target_ids"} | 命中切片数组,含正文与多维得分 |
obtain_file | 获取文件完整内容 | {"file_id", "max_tokens"} | 文件级信息(含 Markdown 预签 URL),全文在 message.content |
execute_sql | 执行 SQL 查询(NL2SQL) | {"sql", "knowledge_base_id"} | SQL 结果行,每行 = _citation_index + 查询列字段 |
section_browse | 章节检索 | {"knowledge_base_id", "file_id", "section_path"} | 章节预览(前 300 字) |
section_peruse | 章节精读 | {"knowledge_base_id", "file_id", "section_path", "max_tokens"} | 章节完整内容 |
max_tokens(obtain_file/section_peruse)为字符串形式的数字,如"989482"。target_ids/knowledge_base_id即知识库(pipeline)ID;section_path形如开放接口文档>接口调用说明(>分隔层级)。- 一次请求中多个工具可串联调用(如
semantic_search定位文件 →obtain_file取全文)。
临时文件(session_files)
开启控制台文件预解析后,可在对话时临时传入文件。文件 ID 通过 addFile(注册文件) 接口获取,完整链路:
- 调用 applyFileUploadLease 获取上传租约与 OSS 预签名 URL
- 使用返回的 URL 通过 PUT 上传文件到 OSS
- 调用 addFile 注册文件,获取
fileId - 将该
fileId传入本接口的parameters.agent_options.session_files(最多 10 个)
客户端拼接建议
| 目标 | 拼接方式 |
|---|---|
| 规划全文 | 累加所有 step == "planning" 帧的 message.content |
| 最终回答 | 累加所有 step == "generating" 帧的 message.content |
| 引用来源 | 从 tool_return 帧的 additional_kwargs.extra_json.docs 取,按 _citation_index 与正文对应 |
| 用量统计 | 取 generation_end 帧顶层 usage(最终回答用量);检索用量见对应 tool_calling 帧 |
多轮对话
平台不保存对话状态,每次请求需传入完整 messages 历史。建议限制历史长度(最近 10 轮),避免超出模型上下文窗口。Authorizations
string
header
required
DashScope API Key,在控制台 API Key 页面(https://agent.console.aliyun.com/settings/apikey)获取。