Skip to main content
知识检索与问答

知识问答

基于知识库的 SSE 流式问答

POST
/api/v2/apps/knowledge/chat
cURL
curl -X POST "https://{workspaceId}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat" \
  -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -d '{
    "input": {
      "messages": [
        {"role": "user", "content": [{"type": "text", "text": "什么是百炼知识库?"}]}
      ]
    },
    "parameters": {
      "agent_options": {
        "agent_id": "aid-xxxxxxxxxxxxxxxx"
      }
    },
    "stream": true
  }'
{
  "output": {
    "choices": [
      {
        "message": {
          "role": "assistant",
          "type": "ai",
          "content": "百炼知识库是阿里云百炼平台提供的知识管理服务,支持文档导入、自动切片、语义检索与问答。",
          "extra": {
            "step_change": "generation_start",
            "step": "generating",
            "group": "generating"
          },
          "tool_calls": []
        },
        "finish_reason": ""
      }
    ],
    "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  },
  "code": "200",
  "message": "Success",
  "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
基于知识库的智能问答接口。接口通过 SSE 流式输出,把回答过程拆成三个阶段依次返回:先规划(思考要查什么、查哪个库),再工具调用(执行检索),最后生成(输出回答)。调用前须先在控制台创建并发布问答服务。
响应以 SSE 流式事件返回,事件生命周期为:plan_start → plan_end → tool_calling → tool_return → generation_start → generation_endplan → tool_calling → tool_return 整段可重复多次(多轮检索)。

基本信息

项目说明
调用方式HTTP 接口调用,SSE 流式输出
请求地址POST https://{workspaceId}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat
Content-Typeapplication/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。空包情况下 stepstep_changegroup 字段可能不存在。tool_calltool_calling(抛出 tool_calls)与 tool_return(工具返回)两个事件组成。

步骤变化事件

stepstep_change事件说明
planningplan_start开始规划step 变为 planning,后续 content 为规划内容
planning规划中content 为规划文本流
planningplan_end结束规划step 即将变化,事件发生时仍为 planning
tool_callingtool_calling工具调用抛出完整 tool_calls(含工具名与参数),携带本轮 usage
tool_callingtool_return工具返回roletoolcontent 为返回摘要,additional_kwargs.extra_json 为结构化返回(检索类即 docs
generatinggeneration_start开始生成后续 content 为最终回答文本流
generating生成中content 为回答文本流
generatinggeneration_end结束生成finish_reasonstop,携带最终 usage

事件生命周期

工具清单

模型在工具调用阶段会从以下工具里选用,工具名放在 tool_calls[].function.namearguments 是一段 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_tokensobtain_file / section_peruse)为字符串形式的数字,如 "989482"
  • target_ids / knowledge_base_id 即知识库(pipeline)ID;section_path 形如 开放接口文档>接口调用说明> 分隔层级)。
  • 一次请求中多个工具可串联调用(如 semantic_search 定位文件 → obtain_file 取全文)。

临时文件(session_files)

开启控制台文件预解析后,可在对话时临时传入文件。文件 ID 通过 addFile(注册文件) 接口获取,完整链路:
  1. 调用 applyFileUploadLease 获取上传租约与 OSS 预签名 URL
  2. 使用返回的 URL 通过 PUT 上传文件到 OSS
  3. 调用 addFile 注册文件,获取 fileId
  4. 将该 fileId 传入本接口的 parameters.agent_options.session_files(最多 10 个)
未在控制台开启文件预解析时,session_files 参数不会被识别。

客户端拼接建议

目标拼接方式
规划全文累加所有 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)获取。

Body

application/json
object
required

输入参数。

object
required

配置参数字段。

boolean
defaulttrue
required

是否开启流式输出。必须填 true,当前版本仅支持流式响应;填 false 或不填请求将失败。

Response

200-application/json
object
string

状态码,成功为 200

string

状态信息,成功为 Success

string

请求 ID(DashScope 平台级,全流不变)。

object
Managed Agent API
RAG API
Connector API
Memory API
框架集成
  • 框架