|
| 1 | +# DeepResearchAgent |
| 2 | + |
| 3 | +[English](README.md) | 简体中文 |
| 4 | +## 简介 |
| 5 | + |
| 6 | +**DeepResearchAgent** 是一个分层多智能体系统,设计目标是处理深度研究任务,同时也适用于通用任务求解。该框架通过顶层规划智能体协调多个专门的子智能体,实现了任务的自动分解与高效执行,适用于多样且复杂的任务场景。 |
| 7 | + |
| 8 | +## 系统架构 |
| 9 | + |
| 10 | +<p align="center"> |
| 11 | + <img src="./docs/architecture.png" alt="Architecture" width="700"/> |
| 12 | +</p> |
| 13 | + |
| 14 | +本系统采用两层结构: |
| 15 | + |
| 16 | +### 1. 顶层规划智能体 |
| 17 | + |
| 18 | +* 负责理解任务、规划整体流程。 |
| 19 | +* 将任务分解为子任务并分配给合适的子智能体。 |
| 20 | +* 动态协调各智能体之间的协作,确保任务顺利完成。 |
| 21 | + |
| 22 | +### 2. 专业子智能体 |
| 23 | + |
| 24 | +* **深度分析器(Deep Analyzer)** |
| 25 | + |
| 26 | + * 对输入信息进行深入分析,提取关键信息与潜在需求。 |
| 27 | + * 支持文本和结构化数据的分析。 |
| 28 | +* **深度研究者(Deep Researcher)** |
| 29 | + |
| 30 | + * 对指定主题或问题进行深度研究,自动获取并整合高质量信息。 |
| 31 | + * 可生成研究报告或知识总结。 |
| 32 | +* **浏览器操作(Browser Use)** |
| 33 | + |
| 34 | + * 自动化浏览器行为,支持网页搜索、信息提取与数据收集。 |
| 35 | + * 为研究者提供实时网页信息支持。 |
| 36 | + |
| 37 | +## 主要特性 |
| 38 | + |
| 39 | +* 分层协作,适用于复杂和动态任务 |
| 40 | +* 易于扩展,可集成更多专业智能体 |
| 41 | +* 支持信息分析、研究与网页交互 |
| 42 | + |
| 43 | +## 更新日志 |
| 44 | + |
| 45 | +* **2025.06.01**:升级 browser-use 至 v0.1.48 |
| 46 | +* **2025.05.30**:将子智能体调用方式改为函数调用,支持 GPT-4.1 和 Gemini-2.5-Pro 作为规划智能体 |
| 47 | +* **2025.05.27**:支持 OpenAI、Anthropic、Google LLM,以及本地 Qwen 模型(使用 vLLM) |
| 48 | + |
| 49 | +## TODO 清单 |
| 50 | + |
| 51 | +* [x] 异步功能完成 |
| 52 | +* [ ] 图像生成智能体开发中 |
| 53 | +* [ ] MCP 架构开发中 |
| 54 | +* [ ] AI4Research 智能体开发中 |
| 55 | +* [ ] 小说创作智能体开发中 |
| 56 | + |
| 57 | +## 安装说明 |
| 58 | + |
| 59 | +### 环境准备 |
| 60 | + |
| 61 | +```bash |
| 62 | +conda create -n dra python=3.11 |
| 63 | +conda activate dra |
| 64 | +make install |
| 65 | + |
| 66 | +# 或者使用 requirements.txt 安装 |
| 67 | +conda create -n dra python=3.11 |
| 68 | +conda activate dra |
| 69 | +make install-requirements |
| 70 | + |
| 71 | +# 安装 playwright 以启用浏览器支持 |
| 72 | +pip install playwright |
| 73 | +playwright install chromium --with-deps --no-shell |
| 74 | +``` |
| 75 | + |
| 76 | +### 设置 `.env` 文件 |
| 77 | + |
| 78 | +`.env` 示例: |
| 79 | + |
| 80 | +```bash |
| 81 | +PYTHONWARNINGS=ignore |
| 82 | +ANONYMIZED_TELEMETRY=false |
| 83 | +HUGGINEFACE_API_KEY=abcabcabc |
| 84 | +OPENAI_API_BASE=https://api.openai.com/v1 |
| 85 | +OPENAI_API_KEY=abcabcabc |
| 86 | +ANTHROPIC_API_BASE=https://api.anthropic.com |
| 87 | +ANTHROPIC_API_KEY=abcabcabc |
| 88 | +GOOGLE_APPLICATION_CREDENTIALS=/your/user/path/.config/gcloud/application_default_credentials.json |
| 89 | +GOOGLE_API_BASE=https://generativelanguage.googleapis.com |
| 90 | +GOOGLE_API_KEY=abcabcabc |
| 91 | +``` |
| 92 | + |
| 93 | +如需使用 Google 模型: |
| 94 | + |
| 95 | +* 获取 API Key:[https://aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey) |
| 96 | +* 获取 application\_default\_credentials.json: |
| 97 | + |
| 98 | +```bash |
| 99 | +brew install --cask google-cloud-sdk |
| 100 | +gcloud init |
| 101 | +gcloud auth application-default login |
| 102 | +``` |
| 103 | + |
| 104 | +## 使用说明 |
| 105 | + |
| 106 | +### 示例 1:研究 "AI Agent" 主题 |
| 107 | + |
| 108 | +```bash |
| 109 | +python examples/run_example.py |
| 110 | +``` |
| 111 | + |
| 112 | +### 示例 2:评估 GAIA 数据集 |
| 113 | + |
| 114 | +```bash |
| 115 | +mkdir data && cd data |
| 116 | +git clone https://huggingface.co/datasets/gaia-benchmark/GAIA |
| 117 | +python examples/run_gaia.py |
| 118 | +``` |
| 119 | + |
| 120 | +### 示例 3:部署本地 Qwen 模型(使用 vLLM) |
| 121 | + |
| 122 | +#### 第一步:启动 vLLM 服务 |
| 123 | + |
| 124 | +```bash |
| 125 | +nohup bash -c 'CUDA_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.openai.api_server \ |
| 126 | + --model /input0/Qwen3-32B \ |
| 127 | + --served-model-name Qwen \ |
| 128 | + --host 0.0.0.0 \ |
| 129 | + --port 8000 \ |
| 130 | + --max-num-seqs 16 \ |
| 131 | + --enable-auto-tool-choice \ |
| 132 | + --tool-call-parser hermes \ |
| 133 | + --tensor_parallel_size 2' > vllm_qwen.log 2>&1 & |
| 134 | +``` |
| 135 | + |
| 136 | +`.env` 文件配置: |
| 137 | + |
| 138 | +```bash |
| 139 | +QWEN_API_BASE=http://localhost:8000/v1 |
| 140 | +QWEN_API_KEY="abc" |
| 141 | +``` |
| 142 | + |
| 143 | +#### 第二步:启动智能体服务 |
| 144 | + |
| 145 | +```bash |
| 146 | +python main.py |
| 147 | +``` |
| 148 | + |
| 149 | +输入任务命令示例: |
| 150 | + |
| 151 | +```bash |
| 152 | +Use deep_researcher_agent to search the latest papers on the topic of 'AI Agent' and then summarize it. |
| 153 | +``` |
| 154 | + |
| 155 | +## 实验结果 |
| 156 | + |
| 157 | +我们在 GAIA 验证集上进行了评估,并于 5 月 10 日达到最先进性能: |
| 158 | + |
| 159 | +<p align="center"> |
| 160 | + <img src="./docs/gaia_benchmark.png" alt="GAIA Example Result" width="700"/> |
| 161 | +</p> |
| 162 | + |
| 163 | +## 常见问题 |
| 164 | + |
| 165 | +### 1. 如何使用本地 Qwen 模型? |
| 166 | + |
| 167 | +支持以下模型: |
| 168 | + |
| 169 | +* qwen2.5-7b-instruct |
| 170 | +* qwen2.5-14b-instruct |
| 171 | +* qwen2.5-32b-instruct |
| 172 | + |
| 173 | +配置: |
| 174 | + |
| 175 | +```toml |
| 176 | +model_id = "qwen2.5-7b-instruct" |
| 177 | +``` |
| 178 | + |
| 179 | +### 2. 浏览器模块安装问题? |
| 180 | + |
| 181 | +```bash |
| 182 | +pip install "browser-use[memory]"==0.1.48 |
| 183 | +pip install playwright |
| 184 | +playwright install chromium --with-deps --no-shell |
| 185 | +``` |
| 186 | + |
| 187 | +### 3. 子智能体函数调用不生效? |
| 188 | + |
| 189 | +推荐使用 Claude-3.7-Sonnet 作为规划智能体,现已兼容 GPT-4.1 和 Gemini-2.5-Pro。 |
| 190 | + |
| 191 | +## 致谢 |
| 192 | + |
| 193 | +本项目受以下开源项目启发,并在此基础上做出改进: |
| 194 | + |
| 195 | +* [smolagents](https://github.com/huggingface/smolagents) |
| 196 | +* [OpenManus](https://github.com/mannaandpoem/OpenManus) |
| 197 | +* [browser-use](https://github.com/browser-use/browser-use) |
| 198 | +* [crawl4ai](https://github.com/unclecode/crawl4ai) |
| 199 | +* [markitdown](https://github.com/microsoft/markitdown) |
| 200 | + |
| 201 | +## 贡献 |
| 202 | + |
| 203 | +欢迎任何形式的贡献!欢迎提 issue 或提交 PR。 |
| 204 | + |
| 205 | +## 引用 |
| 206 | + |
| 207 | +```bibtex |
| 208 | +@misc{DeepResearchAgent, |
| 209 | + title = {`DeepResearchAgent`: A Hierarchical Multi-Agent Framework for General-purpose Task Solving.}, |
| 210 | + author = {Wentao Zhang, Ce Cui, Yang Liu, Bo An}, |
| 211 | + howpublished = {\url{https://github.com/SkyworkAI/DeepResearchAgent}}, |
| 212 | + year = {2025} |
| 213 | +} |
| 214 | +``` |
0 commit comments