通义深度搜索-生成对话

产品链接

面向深度的查询问答和调研分析需求场景,多步骤推理规划研究路径,生成有洞察、可溯源、图文并茂的长文报告-大模型服务平台百炼(Model Studio)-阿里云帮助中心


本产品(通义深度搜索)对外服务接口目录。所有接口使用 DashScope HTTP 协议对外提供服务。

基于智能体应用管理提供的 agent_id 与 agent_version 信息,提供场景化对话、研究、写作相关能力。

请求语法

POST /deep-search-agent/chat/completions HTTP/1.1

请求参数

参数名

类型

是否必须

说明

stream

bool

必须填 true,当前版本仅支持流式响应。若提供false或不提供,请求将失败

input

object

输入字段

input.request_id

str

请求ID(业务自定义)

input.messages

array[object]

对话消息

input.messages.[].role

str

角色,枚举值为:userassistant

input.messages.[].content

str

生成内容

parameters

object

配置参数字段

parameters.agent_options

object

智能体专用参数

parameters.agent_options.agent_id

string

应用ID

parameters.agent_options.agent_version

string

应用版本

parameters.agent_options.session_files

array[string]

动态文件 ID 列表,文件 ID 的获取参考文件上传文档,最大支持传入10个文件ID

返回参数

参数名

类型

是否必须

说明

request_id

str

请求ID(dashscope 平台)

code

str

状态码(成功:200)

message

str

状态信息

output

object

输出字段

output.request_id

str

请求ID(业务自定义)

output.choices

array[object]

模型输出信息

output.choices.[].finish_reason

str

生成结束原因,仅尾包输出stop

output.choices.[].message

object

对话消息

output.choices.[].message.role

str

角色,枚举值为:userassistanttool

output.choices.[].message.content

str | array[object]

生成内容/工具返回内容,当生成配置开启输出报告时,报告消息体类型为array[object]

output.choices.[].message.reasoning_content

str

思考内容,如果 content内没有内容,则尝试获取最后一轮深度思考中的reasoning_content内容

output.choices.[].message.tool_calls

array[object]

工具调用信息

output.choices.[].message.tool_calls[0].arguments

dcit[str,object]

工具调用参数

output.choices.[].message.tool_calls[0].name

str

工具调用名称

output.choices.[].message.additional_kwargs.extra_json

Any

工具调用返回时,携带结构化输出信息

output.choices.[].message.extra

dict

步骤状态信息

output.choices.[].message.extra.group

str

执行阶段

output.choices.[].message.extra.step_change

str

步骤变化事件

output.choices.[].message.extra.step

str

当前步骤

output.choices.[].message.response_metadata

dict

请求模型调用详细信息

output.usage

object

用量统计

output.usage.input_tokens

int

输入 tokens

output.usage.output_tokens

int

输出 tokens

output.usage.total_tokens

int

总 tokens

计划枚举

执行阶段(group

描述

说明

planning

计划中

对应plan模型,即系统处于任务规划阶段,该阶段包含 start 和 end 事件

generating

生成中

表示为写作模型,表示系统正处于报告生成阶段,此阶段不区分详细事件变化,无 start/end 事件;step 状态仅包括 thinking 和 generating,且不会调用工具。

当前步骤(step

描述和说明

planning

计划中

thinking

思考中

reporting

总结中(法律场景特有)

generating

生成中

tool_calling

工具调用中

tool_calling_{工具名称}

工具调用中,附带工具名称

  • 由于模型原因 step_change 值可能为不存在,请尽可能使用持久化的标志step

  • 空包情况下 step、step_change、group 字段的值可能不存在

  • plan、think、generation 均由 xxx_start 事件 和 xxx_end 事件两个事件组成

  • tool_call 由 tool_call_start、tool_calling、tool_return 三个事件组成

  • tool_call_start 表示工具调用开始(开始流式收集工具调用信息,此时还无法吐出工具调用详情(name、args等))、tool_calling 表示获取到完整工具调用的参数并会抛出完整的工具调用参数tool_return 表示工具调用返回结果,同时会携带结构化的工具返回信息。

步骤变化事件 (step_change)

事件发生时step的值

事件名称

解释说明

plan_start

planning

开始规划

step状态变为planning, 表示对应状态的开头(包含当前包)。

plan_end

planning

结束规划

step开始变成其他状态,事件发生时step仍为planning,表示对应状态的结尾(包含当前包)。

think_start

thinking

开始思考

plan事件同理

think_end

thinking

结束思考

plan事件同理

report_start

reporting

开始总结

plan事件同理

report_end

reporting

结束总结

plan事件同理

generation_start

generating

开始生成

plan事件同理

generation_end

generating

结束生成

plan事件同理

tool_call_start

tool_calling

开始工具调用

表示工具调用开始(开始流式收集工具调用信息,此时还无法吐出工具调用详情(name、arguments等))。

tool_calling

tool_calling_{工具名称}

工具调用中

会输出tool_call的具体参数和工具名称,tool_calling状态变为tool_calling_{工具名称}

tool_return

tool_calling_{工具名称}

工具返回

会携带工具返回信息,step开始变成其他状态,事件发生时step仍为tool_calling_{工具名称}

示例

请求示例

{ "input": { "messages": [ { "role": "user", "content": "现在日期" } ] }, "parameters": { "agent_options": { "agent_id": "aid-xxx", "agent_version": "beta" } } }

返回示例

data: { "code": "200", "message": "", "output": { "choices": [{ "finish_reason": "", "message": { "content": "", "additional_kwargs": {}, "response_metadata": {}, "tool_calls": [], "reasoning_content": "", "role": "assistant", "extra": { "group": "planning", "step_change": "think_start", "step": "thinking" } } }] }, "usage": null, "request_id": "5b853312-8d0c-42ff-9d26-08339d5ff38e" }

当生成配置开启输出报告时,模型尾包会给出 html 和 md 的存储地址和路径,content 中 type 的含义参考如下

  • file_path:文件存储路径用于后续导出pdf和二次获取以下文件下载链接

  • md_file_url:md下载链接

  • html_file_url:html下载链接

{ "status_code": 200, "code": "", "message": "", "output": { "choices": [ { "finish_reason": "stop", "message": { "content": [ { "type": "file_path", "text": "msearch/agents/files/upload/536fa835-a381-4870-99c1-79dee3ab946c" }, { "type": "md_file_url", "text": "https://msearch-cloud.oss-cn-hangzhou.aliyuncs.com/msearch/agents/files/upload/536fa835-a381-4870-99c1-79dee3ab946c.md?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250904T151053Z&x-oss-expires=900&x-oss-credential=LTAI5tCLjk1ruCfq2caq****%2F20250904%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-signature=9f9af4642f3611b1b8210bd801f10610236656a016e6bda67e2239ecf59b644f" }, { "type": "html_file_url", "text": "https://msearch-cloud.oss-cn-hangzhou.aliyuncs.com/msearch/agents/files/upload/536fa835-a381-4870-99c1-79dee3ab946c.html?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250904T151053Z&x-oss-expires=900&x-oss-credential=LTAI5tCLjk1ruCfq2caq****%2F20250904%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-signature=34164425671a0f26a39adacd12735d9ec127aec8caa68f8e1de6e252f5889a9c" } ], "additional_kwargs": {}, "response_metadata": { "model_name": "deep-research-generation", "agent_name": "writing_agent" }, "tool_calls": [], "reasoning_content": "", "role": "assistant" } } ] }, "usage": null, "request_id": "3070fa78-c5d5-4bad-b2fc-e20787f6eb75" }

调用示例

Python示例:

# coding=utf-8 import os import json import requests split_line = "\\n-------------------------------------生成报告链接---------------------------------------------------\\n" chat_completions_url = 'https://dashscope.aliyuncs.com/api/v2/apps/deep-search-agent/chat/completions' headers = { 'Authorization': f'Bearer {os.getenv("DASHSCOPE_API_KEY", "")}', # 配置 API KEY 'Content-Type': 'application/json' } if __name__ == "__main__": params = { "input": { "messages": [{"role": "user", "content": "目前国内主流多模态模型分别有哪些,根据性能和效果做下评估"}] # 传入请求消息 }, "parameters": { "agent_options": { # 设置 agent 选项 "agent_id": "${agent_id}", # 应用ID,可在应用管理页面获取到,例如:aid-8fd***e00 "agent_version": "${agent_version}" # 应用版本,beta 测试版本 / release 发布版本 } }, "stream": True } response = requests.post(chat_completions_url, headers=headers, json=params, stream=True) resultlist = [] stage = '' action = '' content = '' reasoning_content = '' for chunk in response.iter_lines(): if chunk: chunk_str = chunk.decode('utf-8').strip() if chunk_str.startswith('data:'): json_str = chunk_str[len('data:'):].strip() try: obj = json.loads(json_str) # 检查异常 if obj.get('code') != '200': print("服务异常:", obj) # 获取消息体 msg = obj.get('output', {}).get('choices', [{}])[0].get('message', {}) extra_flags = msg.get('extra', {}) # 获取模型状态标记字段 if stage != extra_flags.get('group', ''): # 获取 模型当前阶段 print(f"agent stage: {extra_flags.get('group', '')}") stage = extra_flags.get('group', '') if action != extra_flags.get('step', '') and extra_flags.get('step', ''): # 获取 模型当前阶段 print(f"agent action: {extra_flags.get('step', '')}") action = extra_flags.get('step', '') role = msg.get('role', '') # 获取模型角色 assistant or role content = msg.get('content') # 获取生成内容 toolcalls = msg.get('tool_calls', []) # 获取工具调用 if toolcalls: print(f'{toolcalls}') if not content: # 如果 content内没有内容,则尝试获取最后一轮深度思考中的reasoning_content内容 content = msg.get('reasoning_content', '') if isinstance(content, str): if role == "tool": print("\\n" + content + "\\n", end='') # 前后都换行 else: print(content, end='') # 流式输出 else: # 注意 content 可能不是字符串 print(split_line, content) # 可按需保存 resultlist.append(obj) except Exception as e: print("异常解析:", e)

java示例:

import java.io.*; import java.net.*; import java.util.*; import com.alibaba.fastjson.*; import java.nio.charset.StandardCharsets; public class DeepSearchStreamDemo { // 配置 API KEY public final static String CHAT_COMPLETIONS_URL = "https://dashscope.aliyuncs.com/api/v2/apps/deep-search-agent/chat/completions"; public final static String API_KEY = System.getenv("DASHSCOPE_API_KEY"); public static void main(String[] args) throws Exception { // 构造参数 Map<String, Object> params = new HashMap<>(); // input.messages List<Map<String, Object>> messages = new ArrayList<>(); Map<String, Object> msgObj = new HashMap<>(); msgObj.put("role", "user"); msgObj.put("content", "${prompt}"); messages.add(msgObj); // input Map<String, Object> input = new HashMap<>(); input.put("messages", messages); // parameters.agent_options Map<String, Object> agentOptions = new HashMap<>(); // agentOptions.put("agent_id", "${agent_id}");// 应用ID,可在应用管理页面获取到,例如:aid-8fd***e00 agentOptions.put("agent_version", "${agent_version}"); // 应用版本,beta 测试版本 / release 发布版本 // parameters Map<String, Object> parameters = new HashMap<>(); parameters.put("agent_options", agentOptions); params.put("input", input); params.put("parameters", parameters); params.put("stream", true); String body = JSON.toJSONString(params); // HTTP 请求 URL apiUrl = new URL(CHAT_COMPLETIONS_URL); HttpURLConnection conn = (HttpURLConnection) apiUrl.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setRequestProperty("Authorization", "Bearer " + API_KEY); conn.setRequestProperty("Content-Type", "application/json"); // 发送 body try (OutputStream os = conn.getOutputStream()) { os.write(body.getBytes(StandardCharsets.UTF_8)); } // 处理流式响应 InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); String line; String stage = ""; String action = ""; List<JSONObject> resultList = new ArrayList<>(); while ((line = reader.readLine()) != null) { if (!line.trim().isEmpty()) { String chunkStr = line.trim(); if (chunkStr.startsWith("data:")) { String jsonStr = chunkStr.substring(5).trim(); try { JSONObject obj = JSON.parseObject(jsonStr); // 检查异常 if (!"200".equals(obj.getString("code"))) { System.out.print("服务异常: " + obj); } // 获取 output->choices[0]->message JSONObject msg = null; if (obj.containsKey("output")) { JSONObject output = obj.getJSONObject("output"); if (output != null && output.containsKey("choices")) { JSONArray choices = output.getJSONArray("choices"); if (choices != null && !choices.isEmpty()) { JSONObject firstChoice = choices.getJSONObject(0); if (firstChoice.containsKey("message")) { msg = firstChoice.getJSONObject("message"); } } } } if (msg == null) { continue; } // 获取 extra_flags 字段 JSONObject extraFlags = msg.containsKey("extra") && msg.get("extra") != null ? msg.getJSONObject("extra") : new JSONObject(); // agent stage String stageNew = extraFlags.containsKey("group") && extraFlags.get("group") != null ? extraFlags.getString("group") : ""; if (!stage.equals(stageNew)) { System.out.println("agent stage: " + stageNew); } stage = stageNew; // agent action String actionNew = extraFlags.containsKey("step") && extraFlags.get("step") != null ? extraFlags.getString("step") : ""; if (!action.equals(actionNew) && !actionNew.isEmpty()) { System.out.println("agent action: " + actionNew); } action = actionNew; String role = msg.containsKey("role") && msg.get("role") != null ? msg.getString("role") : ""; Object contentObj = msg.get("content"); String content = null; boolean isContentString = false; // content 是字符串类型 if (contentObj instanceof String) { content = contentObj.toString(); isContentString = true; } // 字符串为空时补 reasoning_content if (isContentString && content.isEmpty()) { Object reasoningContentObj = msg.get("reasoning_content"); if (reasoningContentObj instanceof String) { content = reasoningContentObj.toString(); } } // 工具调用 if (msg.containsKey("tool_calls") && msg.get("tool_calls") instanceof List) { JSONArray toolCalls = msg.getJSONArray("tool_calls"); if (!toolCalls.isEmpty()) { System.out.println(toolCalls); } } // -------输出内容判断-------- if (isContentString) { // 是字符串,无论空不空都直接打印(和Python一致) if ("tool".equals(role)) { System.out.print("\\n" + content + "\\n"); } else { System.out.print(content); } } else { // 不是字符串(比如Object/Array)时打印分隔线,再打印内容 System.out.println("\\n------------------------------------------------------------------生成报告链接------------------------------------------------------------------"); System.out.println(contentObj != null ? contentObj.toString() : "null"); } // ------end---- // 可按需保存 resultList.add(obj); } catch (Exception e) { System.out.println("异常解析: " + e); } } } } reader.close(); } }

点击下方访问产品链接:

面向深度的查询问答和调研分析需求场景,多步骤推理规划研究路径,生成有洞察、可溯源、图文并茂的长文报告-大模型服务平台百炼(Model Studio)-阿里云帮助中心

欢迎加入讨论钉钉群,在这里您可以与其他用户进行深入交流,分享使用经验或获取更多技术支持,群号102415041551

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1155490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习:基于python二手房数据分析系统 可视化 Scrapy 爬虫 链家二手房数据 Django框架 基于用户的协同过滤推荐 二手房推荐系统 (源码)

博主介绍&#xff1a;✌全网粉丝10W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…

机器学习:python招聘数据分析可视化系统 机器学习 招聘推荐 薪资预测 爬虫 决策树回归模型 XGBoost回归模型 Flask框架 前程无忧

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…

书籍-塔西佗《编年史》

塔西佗《编年史》详细介绍 书籍基本信息 书名&#xff1a;编年史&#xff08;Annales / Ab Excessu Divi Augusti&#xff09; 作者&#xff1a;塔西佗&#xff08;Publius Cornelius Tacitus&#xff0c;约56-120年&#xff09; 成书时间&#xff1a;约公元110-120年 卷数&…

如何翻译图片?图片上的外语一键翻译成中文,教程来了~

工程图纸是扫描图可以翻译吗&#xff1f;手机拍的图纸照片可以翻译吗&#xff1f;图片形式的图纸可以翻译吗&#xff1f;针对以上三类工程图纸翻译常见问题&#xff0c;进行统一答复&#xff1a;PlanForm-AI工程图纸翻译都可以翻译&#xff0c;教程如下&#xff1a;1.如果你遇到…

物联网毕设 基于单片机的红外热视仪(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计3 核心软件设计4 实现效果5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己…

机器学习:python租房数据分析可视化系统 K-means聚类算法 线性回归预测算法 机器学习 链家租房网 Django框架 scrapy 爬虫(建议收藏)

博主介绍&#xff1a;✌全网粉丝10W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…

OpenCSG课程精华:为什么结构化提示词更有效?Markdown / XML / JSON 的正确打开方式

构化提示词的关键不是“好看”&#xff0c;而是边界清晰、可被系统消费。本文解释 Markdown、XML、JSON 三种结构化方式的适用场景&#xff0c;并给出更稳的输出控制方法。 一、结构化的意义&#xff1a;先解决“边界不清”&#xff0c;再谈“表达优雅” 大模型最怕的是混淆&…

jmeter基础知识-安装配置环境变量

1.安装JDK 2.配置java环境变量 搜索栏输入编辑环境变量 用户变量&#xff1a;只对当前用户生效 系统变量&#xff1a;对所有用户生效 点击新建在变量名中输入&#xff1a;JAVA_HOME 变量值中输入jdk的安装路径 例如&#xff1a;C:\ProgramFiles\Java\jdk1.8.0_161 再次点击…

RH134 第八章 管理存储堆栈

一 创建和拓展逻辑卷1.1 逻辑卷&#xff08;LVM&#xff09;概念LVM 有助于更加轻松地管理磁盘空间。可以将卷组 Volume Group 中的可用空间分配给逻辑卷 (Logical Volume)&#xff0c;并且可以调整文件系统的大小✔ 如果磁盘出现错误&#xff0c;可将替换磁盘注册为物理卷 (Ph…

什么是PKI

文章目录 为什么需要PKIPKI应用场景有哪些PKI是如何工作的 公钥基础设施PKI&#xff08;Public Key Infrastructure&#xff09;&#xff0c;是一种遵循既定标准的证书管理平台&#xff0c;它利用公钥技术能够为所有网络应用提供安全服务。PKI技术是信息安全技术的核心&#xf…

在Spring Boot项目中,Shiro和Spring Security该如何选择?

安全管理是Java应用开发中无法避免的问题&#xff0c;随着Spring Boot和微服务的流行&#xff0c;Spring Security受到越来越多Java开发者的重视&#xff0c;究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进…

2026软件测试金3银4常见的软件测试面试题

现阶段很多测试同行抱怨工作难找&#xff0c;网上的面试题又真不真实先不说&#xff0c;乱七八糟的&#xff0c;下面是我耗费了三个月时间的、结合真实的实际面试情况所写下的真实软件测试面试题以及&#xff0c;如何回答&#xff0c;总共十个章节以及写成一个文档全文8w多个字…

从GPT到智能体:OpenCSG带你看清提示词工程的“执行力升级”——拆分步骤、工具调用与安全边界

复杂任务失败的根源&#xff0c;常常不是模型不行&#xff0c;而是“一步到位”不成立。本文给出可落地的拆分方法、多轮调用策略&#xff0c;并补齐智能体场景下必须重视的安全边界。 一、复杂任务的第一原则&#xff1a;不要指望“一次调用做完一切” 当任务包含“理解→规…

计算机毕业设计springboot二手房租售管理系统设计与实现 基于Spring Boot框架的二手房交易与租赁管理系统开发与应用 Spring Boot驱动的二手房买卖及租赁信息管理平台设计与实现

计算机毕业设计springboot二手房租售管理系统设计与实现z86u2 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着房地产市场的不断发展&#xff0c;二手房交易和租赁的需求日益…

计算机毕业设计springboot校园服务平台 基于SpringBoot的校园综合服务平台设计与实现 SpringBoot框架下的校园服务管理系统开发

计算机毕业设计springboot校园服务平台alsns9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息技术的飞速发展&#xff0c;校园管理和服务的数字化转型已成为必然趋势。传…

强烈安利9个AI论文网站,本科生毕业论文轻松搞定!

强烈安利9个AI论文网站&#xff0c;本科生毕业论文轻松搞定&#xff01; 2.「云笔AI」—— 解决 “杂事”&#xff0c;节省时间&#xff08;推荐指数&#xff1a;★★★★☆&#xff09; “云笔AI”是一款专为学术写作设计的智能工具&#xff0c;它的核心优势在于能够帮助用户高…

只需根据接口文档,就能轻松开发 get 和 post 请求的脚本

前言 一般的接口文档描述的内容&#xff1a; ​开发get请求的脚本&#xff0c;接口文档的描述如下&#xff1a; 在loadrunner里面创建一个空脚本&#xff1a; ​在action空白处&#xff0c;点击insert—>step 输入web_custom_request&#xff0c;双击选择该函数&#xff0c…

学Java后端必须学spring,spring框架为什么这么多人用?

Spring是我们Java程序员面试和工作都绕不开的重难点。很多粉丝就经常跟我反馈说由Spring衍生出来的一系列框架太多了&#xff0c;根本不知道从何下手&#xff1b;大家学习过程中大都不成体系&#xff0c;但面试的时候都上升到源码级别了&#xff0c;你不光要清楚了解Spring源码…

小程序搭建平台三大类型解析与选择建议

微信小程序已然成了连接线上与线下商业的关键桥梁&#xff0c;给企业以及商家给予了数字化的经营全新渠道。伴随微信小程序生态持续完善&#xff0c;市场当中涌现出多种类型的小程序搭建平台&#xff0c;从技术实现途径到功能定位各有侧重点。知晓不同平台的特性以及适用场景&a…

腾讯校招 C++ 一面:30道题

原文地址&#xff1a;腾讯校招 C 一面&#xff1a;30道题 最近有位粉丝朋友参加了腾讯C岗位的面试&#xff0c;面试官提出了30道技术问题&#xff0c;涵盖了C基础、网络编程、多线程、Web服务等多个方面。 我们来看一下腾讯校招的一面面经&#xff08;30道题&#xff09;&…