在进行行业趋势分析、技术可行性研究等复杂问题探索时,手动整合多源信息并撰写结构化报告的过程耗时且繁琐。深度研究是一个由大型语言模型(LLM)驱动自主 AI 系统,旨在自动化此过程。提出一个研究课题后,系统会自动进行任务拆解、多步推理、跨源信息检索与整合,最终生成一份逻辑清晰、引用完备的专业级研究报告。
工作原理
深度研究采用多智能体协作架构,模拟专家团队的研究流程。当接收到用户指令后,系统会启动一个“感知-思考-行动-反思”的闭环,协同完成任务。
协作流程
-
规划 (Planning):PlannerAgent首先对用户提出的复杂问题进行背景调研和理解,然后将其任务拆解成一个有逻辑依赖关系(DAG)的研究计划。
-
研究 (Researching):多个ResearcherAgent并行或串行地执行计划中的子任务。每个智能体会自主选择并工具调用(如搜索引擎、爬虫、代码解释器)来收集和分析信息,并形成初步的子报告。
-
整合与生成 (Reporting):ReporterAgent汇总所有子报告和研究数据,进行最终的整理、归纳和润色,生成一份结构完整、包含引用的最终研究报告。
核心组件
|
组件类型 |
名称 |
核心职责 |
|
智能体 |
|
负责任务拆解,生成研究计划。 |
|
|
执行具体研究步骤,调用工具,生成子报告。 |
|
|
|
处理和理解多模态数据(如图像、表格),丰富报告内容。 |
|
|
|
汇总所有信息,生成最终的 Markdown 或 Html 格式报告。 |
|
|
工具 |
搜索工具 |
调用外部搜索引擎或内部知识库进行信息检索。 |
|
爬虫工具 |
访问网页链接,获取全文内容。 |
|
|
代码解释器 |
用于数据分析和图表生成。 |
开始使用
通过控制台快速体验
-
前往开放搜索控制台,选择LLM智能问答版,点击左侧导航栏实例管理,选择对应的实例点击管理。
-
进入实例详情页面,单击问答测试,开启深度研究,在对话框输入需要询问的内容,单击发送。
模型选择器选择 deepseek-r1,同时开启 联网搜索 开关。
-
预计需要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}"(base) hxxx ~ % curl -X GET "http://xxx-hangzhou.aliyuncs.com/v3/openapi/apps/xxx/chat-history?page_number=1&page_size=10" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer xxx" {"request_id":"fxxx3f","status":"OK","total_count":7,"latency":0.0,"result":[{"chat_id":"d6883afb-7xxx","title":"最近杭州流行病趋势如何?","time":"2025-10-16 15:19:11","status":"SUCCESS","type":"DEEP_RESEARCH"},{"chat_id":"79xxxc9971c3343cfb","title":"杭州未来几天的天气如何?","time":"2025-10-16 12:03:38","status":"SUCCESS","type":"DEEP_RESEARCH"},{"chat_id":"xxx-af43-f82794aed581","title":"杭州未来几天的天气如何?","time":"2025-10-16 11:10:53","status":"SUCCESS","type":"DEEP_RESEARCH"},{"chat_id":"364xxx-bdff4f3c3276","title":"杭州未来几天的天气如何?","time":"2025-10-16 10:40:54","status":"SUCCESS","type":"DEEP_RESEARCH"},{"chat_id":"7xxx","title":"杭州未来几天的天气如何?","time":"2025-10-16 10:30:55","status":"SUCCESS","type":"DEEP_RESEARCH"},{"chat_id":"0xxxf889181485e","title":"杭州未来几天的天气如何?","time":"2025-10-16 09:56:26","status":"SUCCESS","type":"DEEP_RESEARCH"},{"chat_id":"12xxx067e0dd","title":"杭州未来几天的天气如何?","time":"2025-10-15 19:38:42","status":"SUCCESS","type":"DEEP_SEARCH"}],"errors":[]}% -
获取会话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}