SendStreamingMessage 项目 | 内容 |
|---|---|
请求方式 |
|
请求地址 |
|
|
|
默认鉴权 |
|
新版发起数据问答基于 A2A(Agent-to-Agent)JSON-RPC 2.0 协议,通过 SendStreamingMessage 方法向指定会话发起一轮流式提问,服务端通过 SSE(Server-Sent Events) 持续推送任务状态与产物。
jsonrpc / id / method / params)。task / statusUpdate / artifactUpdate 外层多一层 result 包裹。message.metadata.sessionId 传入。该协议仅新版IDA支持。
jwtToken 鉴权。
Authorization: Bearer ${JWT_TOKEN}Content-Type: application/json请求体遵循 JSON-RPC 2.0 结构。message.metadata 仅支持下表列出的业务字段,不继承 executeTaskV2 的完整 TaskMetaData;未列出的字段不会参与任务构造。
位置 | 参数 | 类型 | 是否必选 | 传参说明 |
|---|---|---|---|---|
ROOT | jsonrpc | string | 是 | 固定值 |
ROOT | id | int/string | 是 | 请求 ID,会原样回填到响应事件 |
ROOT | method | string | 是 | 固定值 |
ROOT | params | object | 是 | JSON-RPC 参数体 |
params | message | Message | 是 | 用户消息体 |
params | sceneId | string/int | 否 | 场景 ID;也可放在 |
params.message | role | string | 否 | 建议传 |
params.message | parts | List[Part] | 是 | 至少包含一个非空 text part;OpenAPI 侧无需 |
params.message | metadata | MessageMetadata | 是 | 会话信息及下列业务字段 |
params.message.metadata | sessionId | string/int | 是 |
|
params.message.metadata | type | string | 否 | 任务类型,通常为 |
params.message.metadata | version | string | 否 | 协议版本,通常为 |
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 | 否 | 知识问答路由类型;兼容 |
params.message.metadata | knowledgeContext | string | 否 | 知识召回上下文;兼容 |
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 | 否 | 图片宽高比;兼容 |
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 | 否 | 显式指定知识召回项目;兼容 |
params.message.metadata | kbIdList | list | 否 | 显式指定知识库;兼容 |
params.message.metadata | docIdList | list | 否 | 显式指定知识文档;兼容 |
params.message.metadata | kbInfoMap | object | 否 | 按项目指定知识库/文档范围;兼容 |
会话 ID 契约
createSession 创建会话。IDA-创建会话params.message.metadata.sessionId。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 -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。该接口返回 SSE 流式响应。
Header | 是否必选 | 示例 | 说明 |
|---|---|---|---|
Accept | 是 |
| 流式响应(SSE) |
A2A-Version | 建议 |
| A2A 协议版本 |
Content-Type: text/event-streamX-Accel-Buffering: no、Cache-Control: no-cache, no-transformdata: 前缀承载一个 JSON-RPC 结果信封:data: {"jsonrpc":"2.0","id":1,"result":{ ... }}
其中 result 内为下列三类事件之一:
位置 | 参数 | 类型 | 描述 |
|---|---|---|---|
result | task | DeepResearchTask | 首个事件,任务初始快照,状态 |
result | statusUpdate | DeepResearchTaskStatusUpdateEvent | 任务状态更新, |
result | artifactUpdate | DeepResearchTaskArtifactUpdateEvent | 产物增量; |
终态判定: statusUpdate.status.state == TASK_STATE_COMPLETED 且 final == true 即整轮结束。最终结论文本通常落在末尾 artifactUpdate 的 parts.text(artifactId 形如 final-fallback-*)。
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}}}