在进行行业趋势分析、技术可行性研究等复杂问题探索时,手动整合多源信息并撰写结构化报告的过程耗时且繁琐。深度研究是一个由大型语言模型(LLM)驱动自主 AI 系统,旨在自动化此过程。提出一个研究课题后,系统会自动进行任务拆解、多步推理、跨源信息检索与整合,最终生成一份逻辑清晰、引用完备的专业级研究报告。
工作原理
深度研究采用多智能体协作架构,模拟专家团队的研究流程。当接收到用户指令后,系统会启动一个“感知-思考-行动-反思”的闭环,协同完成任务。
协作流程
规划 (Planning):PlannerAgent首先对用户提出的复杂问题进行背景调研和理解,然后将其任务拆解成一个有逻辑依赖关系(DAG)的研究计划。
研究 (Researching):多个ResearcherAgent并行或串行地执行计划中的子任务。每个智能体会自主选择并工具调用(如搜索引擎、爬虫、代码解释器)来收集和分析信息,并形成初步的子报告。
整合与生成 (Reporting):ReporterAgent汇总所有子报告和研究数据,进行最终的整理、归纳和润色,生成一份结构完整、包含引用的最终研究报告。
核心组件
组件类型 | 名称 | 核心职责 |
智能体 |
| 负责任务拆解,生成研究计划。 |
| 执行具体研究步骤,调用工具,生成子报告。 | |
| 处理和理解多模态数据(如图像、表格),丰富报告内容。 | |
| 汇总所有信息,生成最终的 Markdown 或 Html 格式报告。 | |
工具 | 搜索工具 | 调用外部搜索引擎或内部知识库进行信息检索。 |
爬虫工具 | 访问网页链接,获取全文内容。 | |
代码解释器 | 用于数据分析和图表生成。 |
开始使用
通过控制台快速体验
前往开放搜索控制台,选择LLM智能问答版,点击左侧导航栏实例管理,选择对应的实例点击管理。
进入实例详情页面,单击问答测试,开启深度研究,在对话框输入需要询问的内容,单击发送。

预计需要5~15分钟返回结果以及推理过程,待运行结束后您可以单击
从历史记录中查看结果。
代码调用示例
深度研究功能已集成到统一问答接口-MultiSearch、文本问答-knowledge-search API中,将options.chat.enable_deep_research设置为true开启深度研究,实际使用时请以API规范为准。
发起任务调用
每个RAM用户下LLM版实例默认并发任务数上限为2,如需提升并发能力,请联系技术支持申请调整。
Java
添加依赖
<dependency> <groupId>com.aliyun.opensearch</groupId> <artifactId>aliyun-sdk-opensearch</artifactId> <version>6.0.0</version> </dependency>请求示例
package com.aliyun.opensearch; import com.aliyun.opensearch.OpenSearchClient; import com.aliyun.opensearch.sdk.generated.OpenSearch; import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException; import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException; import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult; import java.util.HashMap; import java.util.Map; public class LLMSearch { private static String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); private static String appName = "替换为应用名称"; private static String host = "替换应用的API访问地址"; private static String path = "/apps/%s/actions/multi-search"; public static void main(String[] args) { String appPath = String.format(path, appName); //ApiReadTimeOut OpenSearch openSearch = new OpenSearch(accesskey, secret, host); openSearch.setTimeout(90000); OpenSearchClient openSearchClient = new OpenSearchClient(openSearch); Map<String, String> params = new HashMap<String, String>() {{ put("format", "full_json"); put("_POST_BODY", "{\"question\":{\"text\":\"最近杭州流行病趋势如何\",\"type\":\"TEXT\"},\"options\":{\"retrieve\":{\"entry\":{\"sf\":\"\",\"filter\":\"\"},\"image\":{\"sf\":\"\",\"dense_weight\":\"0.7\"},\"web_search\":{\"enable\":true},\"return_hits\":false,\"graph\":{\"enable\":true},\"doc\":{\"filter\":\"\",\"top_n\":5,\"sf\":\"\",\"dense_weight\":\"0.7\",\"formula\":\"\",\"operator\":\"AND\"},\"qp\":{\"query_extend\":false,\"query_extend_num\":5},\"rerank\":{\"enable\":true,\"model\":\"ops-bge-reranker-larger\"}},\"chat\":{\"stream\":true,\"enable_deep_research\":true,\"enable_deep_research\":false,\"model\":\"deepseek-v3\",\"agent\":{\"tools\":[],\"max_think_round\":10,\"think_process\":true,\"language\":\"CN\"},\"prompt_config\":{\"attitude\":\"normal\",\"rule\":\"detailed\",\"noanswer\":\"sorry\",\"language\":\"Chinese\",\"role\":false,\"role_name\":\"AI小助手\",\"out_format\":\"text\"},\"csi_level\":\"strict\",\"output_format\":\"markdown\",\"history_max\":\"\",\"link\":\"true\",\"rich_text_strategy\":\"inside_response\",\"enable_llm_knowledge\":true,\"model_generation\":\"\"}}}"); }}; try { OpenSearchResult openSearchResult = openSearchClient .callAndDecodeResult(appPath, params, "POST"); System.out.println("RequestID=" + openSearchResult.getTraceInfo().getRequestId()); System.out.println(openSearchResult.getResult()); } catch ( OpenSearchException e) { System.out.println("RequestID=" + e.getRequestId()); System.out.println("ErrorCode=" + e.getCode()); System.out.println("ErrorMessage=" + e.getMessage()); } catch ( OpenSearchClientException e) { System.out.println("ErrorMessage=" + e.getMessage()); } } }
curl
发起任务请求
curl --location '{host}/v3/openapi/apps/{app_group_identity}/actions/multi-search' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {API Key}' \
--data '{
"question": {
"text": "最近杭州流行病趋势如何?",
"type": "TEXT"
},
"options": {
"retrieve": {
"entry": {"sf": "", "filter": ""},
"image": {"sf": "", "dense_weight": "0.7"},
"web_search": {"enable": true},
"return_hits": false,
"graph": {"enable": true},
"doc": {
"filter": "",
"top_n": 5,
"sf": "",
"dense_weight": "0.7",
"formula": "",
"operator": "AND"
},
"qp": {"query_extend": false, "query_extend_num": 5},
"rerank": {"enable": true, "model": "ops-bge-reranker-larger"}
},
"chat": {
"stream": true,
"enable_deep_search": false,
"enable_deep_research": true,
"model": "deepseek-v3",
"agent": {
"tools": [],
"max_think_round": 10,
"think_process": true,
"language": "CN"
},
"prompt_config": {
"attitude": "normal",
"rule": "detailed",
"noanswer": "sorry",
"language": "Chinese",
"role": false,
"role_name": "AI小助手",
"out_format": "text"
},
"csi_level": "strict",
"output_format": "markdown",
"history_max": "",
"link": "true",
"rich_text_strategy": "inside_response",
"enable_llm_knowledge": true,
"model_generation": ""
}
}
}'深度研究是一个复杂的异步任务,通常需要 5~15 分钟返回执行结果,采用流式输出,您可以观察到每一步执行结果。返回示例:
返回参数:
参数 | 类型 | 说明 |
request_id | String | 请求唯一标识符(用于问题追踪) |
status | String | 执行状态,取值:
|
latency | Float | 接口总耗时(单位:毫秒) |
result.process_status | String | 处理状态,取值:
|
result.latency | Integer | 结果生成耗时(单位:毫秒) |
result.data[] | Array[Object] | 核心数据节点数组 |
result.data[].answer | String | 节点返回内容(Markdown格式) |
result.data[].type | String | 内容类型,取值:
|
result.data[].event | String | 节点事件类型,取值:
|
result.data[].event_status | String | 事件状态,取值:
|
result.data[].parent_id | String | 父节点ID(UUID格式) |
result.data[].node_id | String | 当前节点ID(代理节点标识) |
result.data[].latency | Integer | 节点处理耗时(单位:毫秒) |
result.data[].step | Integer | 步骤序号(仅步骤类型节点存在) |
result.data[].reference[] | Array[Object] | 参考来源信息数组 |
result.data[].reference[].score | Float | 来源匹配度评分(0.0-1.0) |
result.data[].reference[].title | String | 来源标题(最大长度:120字符) |
result.data[].reference[].url | String | 来源链接(需符合URL格式) |
result.data[].details[] | Array[Object] | 子节点详情数组(结构与data[]相同) |
result.data[].details[].answer | String | 子节点内容 |
result.data[].details[].type | String | 子节点内容类型 |
result.data[].details[].event | String | 子节点事件类型 |
result.data[].details[].event_status | String | 子节点事件状态 |
result.data[].details[].parent_id | String | 子节点父ID |
result.data[].details[].node_id | String | 子节点ID |
result.data[].details[].latency | Integer | 子节点处理耗时 |
result.data[].details[].step | Integer | 子步骤序号 |
result.data[].details[].reference[] | Array[Object] | 子节点参考来源 |
result.data[].details[].reference[].score | Float | 子来源匹配度 |
result.data[].details[].reference[].title | String | 子来源标题 |
result.data[].details[].reference[].url | String | 子来源链接 |
查询历史任务运行结果
调用成功后,可通过任务ID查看历史任务的运行结果。
调用历史会话列表API获取历史会话列表。
curl -X GET "{host}/v3/openapi/apps/{app_group_identity}/chat-history?page_number=1&page_size=10" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {API Key}"
获取会话chat_id,调用以下API获取会话详情:
curl -X POST "http://{host}/v3/openapi/apps/{app_group_identity}/agent-tasks/{chat_id}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {API Key}" \ -d '{"stream": true}'
取消任务调用
如在任务执行过程中发现输出结果不符合预期,可调用以下API取消任务调用。
请求URL:
DELETE /v3/openapi/apps/{app_group_identity}/agent-tasks/{task_id}