You need to enable JavaScript to run this app.
文档中心
数据智能体

数据智能体

复制全文
下载 pdf
A2A
发起流式问答
复制全文
下载 pdf
发起流式问答

8. A2A 发起流式问答:SendStreamingMessage

请求说明

项目

内容

请求方式

POST

请求地址

https://${IDA_DOMAIN}/dataAgent/llm/openApi/v2/a2a/

method

SendStreamingMessage

默认鉴权

Authorization: Bearer ${JWT_TOKEN}

新版发起数据问答基于 A2A(Agent-to-Agent)JSON-RPC 2.0 协议,通过 SendStreamingMessage 方法向指定会话发起一轮流式提问,服务端通过 SSE(Server-Sent Events) 持续推送任务状态与产物。

  1. 入参改为 JSON-RPC 2.0 信封结构(jsonrpc / id / method / params)。
  2. 响应事件在原有 task / statusUpdate / artifactUpdate 外层多一层 result 包裹。
  3. 调用前需先创建会话,并将返回的会话 ID 作为 message.metadata.sessionId 传入。

该协议仅新版IDA支持。

鉴权

jwtToken 鉴权。

请求头

  • Authorization: Bearer ${JWT_TOKEN}
  • Content-Type: application/json

请求参数

请求体遵循 JSON-RPC 2.0 结构。message.metadata 仅支持下表列出的业务字段,不继承 executeTaskV2 的完整 TaskMetaData;未列出的字段不会参与任务构造。

位置

参数

类型

是否必选

传参说明

ROOT

jsonrpc

string

是

固定值 2.0

ROOT

id

int/string

是

请求 ID,会原样回填到响应事件

ROOT

method

string

是

固定值 sendStreamingMessage

ROOT

params

object

是

JSON-RPC 参数体

params

message

Message

是

用户消息体

params

sceneId

string/int

否

场景 ID;也可放在 message.metadata.sceneId
数据来源:IDA-获取可用 Scene 与 Skill

params.message

role

string

否

建议传 ROLE_USER;bridge 接受 user/agent 及 ROLE_* 写法

params.message

parts

List[Part]

是

至少包含一个非空 text part;OpenAPI 侧无需 kind 字段

params.message

metadata

MessageMetadata

是

会话信息及下列业务字段

params.message.metadata

sessionId

string/int

是

createSession 返回的会话 ID;推荐传字符串
数据来源:IDA-获取会话列表

params.message.metadata

type

string

否

任务类型,通常为 deep_research

params.message.metadata

version

string

否

协议版本,通常为 v5

params.message.metadata

sceneId

string/int

否

场景 ID

params.message.metadata

traceContext

object

否

业务埋点上下文

params.message.metadata

enableWebSearch

bool

否

启用联网搜索

params.message.metadata

enableLarkQa / enableLarkQA

bool

否

启用飞书企业问答

params.message.metadata

enableConsultSearch

bool

否

启用专业搜索

params.message.metadata

enableFastMode

bool

否

启用快速模式

params.message.metadata

enableKnowledgeQA

bool

否

启用数据问答/知识问答模式

params.message.metadata

knowledgeQAType

string

否

知识问答路由类型;兼容 knowledgeQA_type、knowledge_qa_type

params.message.metadata

knowledgeContext

string

否

知识召回上下文;兼容 knowledge_context

params.message.metadata

enableAeolusAssetSearch

bool

否

启用风神资产搜索

params.message.metadata

enableAssetLookup / enableAssetLookUp

bool

否

启用 AIDA 资产 lookup;两种大小写均支持

params.message.metadata

enableExplainChartDefinition

bool

否

启用图表口径解释

params.message.metadata

enableSlideGeneration

bool

否

启用幻灯片生成

params.message.metadata

enableWebApplicationGeneration

bool

否

启用网页应用生成

params.message.metadata

enabledMCPServers

list

否

启用的 MCP Server 列表

params.message.metadata

llmModel

string

否

指定模型

params.message.metadata

imageAspectRatio

string

否

图片宽高比;兼容 image_aspect_ratio、ratio

params.message.metadata

skill

string

否

显式指定单个 Skill code

params.message.metadata

stepId

int

否

步骤 ID

params.message.metadata

templateId

int

否

模板 ID;使用模板时填写 IDA-获取提示词模板列表

params.message.metadata

templateShareToken

string

否

模板分享 Token

params.message.metadata

templateVariables

list

否

模板变量;使用模板时填写

params.message.metadata

appIdList

list

否

显式指定知识召回项目;兼容 app_id_list

params.message.metadata

kbIdList

list

否

显式指定知识库;兼容 kb_id_list

params.message.metadata

docIdList

list

否

显式指定知识文档;兼容 doc_id_list

params.message.metadata

kbInfoMap

object

否

按项目指定知识库/文档范围;兼容 kb_info_map

会话 ID 契约

  1. 调用前必须通过 createSession 创建会话。IDA-创建会话
  2. 推荐将会话 ID 作为字符串传入 params.message.metadata.sessionId。
  3. bridge 的兜底顺序为:params.sessionId → params.metadata.sessionId → params.message.metadata.sessionId → params.contextId → params.metadata.contextId → params.message.metadata.contextId。取到后统一转换为整数;全部为空时报 sessionId 缺失。

请求示例

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sendStreamingMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "parts": [
        { "text": "分析一下销售额趋势" }
      ],
      "metadata": {
        "sessionId": "8350",
        "type": "deep_research",
        "version": "v5",
        "enableKnowledgeQA": true,
        "enableWebSearch": true,
        "enableAssetLookUp": true
      }
    }
  }
}

Curl 示例

curl -N -X POST "https://${IDA_DOMAIN}/dataAgent/llm/openApi/v2/a2a/" \
  -H "Authorization: Bearer ${JWT_TOKEN}" \
  -H "Content-Type: application/json" \
  --data-raw '{"jsonrpc":"2.0","id":1,"method":"SendStreamingMessage","params":{"message":{"role":"ROLE_USER","parts":[{"text":"分析一下销售额趋势"}],"metadata":{"sessionId":"6620","type":"deep_research","version":"v5"}}}}'

使用模板的请求示例

使用模板时,在 message.metadata 中传入 templateId 和 templateVariables。parts[0].text 仍需提供非空文本;模板渲染成功后,服务端会使用渲染后的完整问题执行问答。模板创建详情见IDA-创建提示词模板

{
  "jsonrpc": "2.0",
  "id": "req-template-demo-001",
  "method": "sendStreamingMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "parts": [
        { "text": "请使用指定模板生成营销活动日报" }
      ],
      "metadata": {
        "sessionId": "10001",
        "type": "deep_research",
        "version": "v5",
        "enableKnowledgeQA": true,
        "enableWebSearch": true,
        "templateId": 123,
        "templateVariables": [
          {
            "varId": "var_activity_name_demo",
            "value": { "text": "示例活动" }
          },
          {
            "varId": "var_activity_period_demo",
            "value": { "text": "2026-07-01 至 2026-07-31" }
          },
          {
            "varId": "var_data_source_demo",
            "value": {
              "text": "",
              "files": [
                {
                  "uid": "file_demo_001",
                  "name": "marketing_daily_demo.md",
                  "storageKey": "agent-public-upload-demo-redacted",
                  "fileName": "marketing_daily_demo.md",
                  "fileType": "md",
                  "fileSize": 2048,
                  "resourceType": "file"
                }
              ]
            }
          }
        ]
      }
    }
  }
}

字段说明:

  • templateId:模板 ID。
  • templateVariables[].varId:必须与模板定义中的变量 ID 一致。
  • 文本变量使用 value.text,文件变量使用 value.files。
  • 示例中的会话 ID、变量 ID、文件名和存储键均为脱敏占位值,不能直接用于真实请求。

返回参数

该接口返回 SSE 流式响应。

响应头(建议/必需)

Header

是否必选

示例

说明

Accept

是

text/event-stream

流式响应(SSE)

A2A-Version

建议

1.0

A2A 协议版本

返回数据格式(SSE)

  • Content-Type: text/event-stream
  • 附加响应头:X-Accel-Buffering: no、Cache-Control: no-cache, no-transform
  • 每行以 data: 前缀承载一个 JSON-RPC 结果信封:
data: {"jsonrpc":"2.0","id":1,"result":{ ... }}

其中 result 内为下列三类事件之一:

位置

参数

类型

描述

result

task

DeepResearchTask

首个事件,任务初始快照,状态 TASK_STATE_SUBMITTED

result

statusUpdate

DeepResearchTaskStatusUpdateEvent

任务状态更新,state 依次为 SUBMITTED → WORKING → COMPLETED

result

artifactUpdate

DeepResearchTaskArtifactUpdateEvent

产物增量;append=true 表示 parts.text 为追加增量(需按 artifactId 拼接);lastChunk=true 表示该片段结束

终态判定: statusUpdate.status.state == TASK_STATE_COMPLETED 且 final == true 即整轮结束。最终结论文本通常落在末尾 artifactUpdate 的 parts.text(artifactId 形如 final-fallback-*)。

SSE 响应示例

data: {"jsonrpc":"2.0","id":1,"result":{"task":{"id":"9105","contextId":"8350","status":{"state":"TASK_STATE_SUBMITTED"},"metadata":{"agentId":80,"phase":"submitted"}}}}

data: {"jsonrpc":"2.0","id":1,"result":{"statusUpdate":{"taskId":"9105","contextId":"8350","status":{"state":"TASK_STATE_WORKING"},"metadata":{"phase":"running"},"final":false}}}

data: {"jsonrpc":"2.0","id":1,"result":{"artifactUpdate":{"taskId":"9105","contextId":"8350","artifact":{"artifactId":"step-910504","name":"思考推理","parts":[{"text":"## 1. 简要结论","mediaType":"text/plain"}],"metadata":{"type":"deep_research_running_step","stepType":"executor_think"}},"append":true,"lastChunk":true}}}

data: {"jsonrpc":"2.0","id":1,"result":{"statusUpdate":{"taskId":"9105","contextId":"8350","status":{"state":"TASK_STATE_COMPLETED"},"metadata":{"phase":"completed"},"final":true}}}
最近更新时间:2026.09.09 14:51:59
这个页面对您有帮助吗?
有用
有用
无用
无用