这个仓库名为 open-deep-research
,是一个由AI驱动的研究助手项目,旨在通过结合搜索引擎、网页抓取和大语言模型,对任何主题进行迭代式的深度研究。以下是对该仓库的详细介绍:
项目概述
- 目标:提供一个简单的深度研究代理实现,使代理能够随着时间推移优化研究方向,并深入研究某个主题。仓库代码量控制在500行以内,便于理解和扩展。
- 赞助:该项目由 Aomni 赞助。
工作原理
项目通过一系列步骤进行深度研究,其工作流程可以用以下Mermaid流程图表示:
flowchart TB
subgraph Input
Q[User Query]
B[Breadth Parameter]
D[Depth Parameter]
end
DR[Deep Research] -->
SQ[SERP Queries] -->
PR[Process Results]
subgraph Results[Results]
direction TB
NL((Learnings))
ND((Directions))
end
PR --> NL
PR --> ND
DP{depth > 0?}
RD["Next Direction:
- Prior Goals
- New Questions
- Learnings"]
MR[Markdown Report]
%% Main Flow
Q & B & D --> DR
%% Results to Decision
NL & ND --> DP
%% Circular Flow
DP -->|Yes| RD
RD -->|New Context| DR
%% Final Output
DP -->|No| MR
%% Styling
classDef input fill:#7bed9f,stroke:#2ed573,color:black
classDef process fill:#70a1ff,stroke:#1e90ff,color:black
classDef recursive fill:#ffa502,stroke:#ff7f50,color:black
classDef output fill:#ff4757,stroke:#ff6b81,color:black
classDef results fill:#a8e6cf,stroke:#3b7a57,color:black
class Q,B,D input
class DR,SQ,PR process
class DP,RD recursive
class MR output
class NL,ND results
主要步骤包括: 1. 用户提供查询、广度参数和深度参数。 2. 进行深度研究,生成搜索查询(SERP Queries)。 3. 处理搜索结果,得到学习成果(Learnings)和研究方向(Directions)。 4. 根据深度参数判断是否继续研究: - 如果深度大于0,根据学习成果和研究方向生成新的研究方向,继续进行深度研究。 - 如果深度为0,生成Markdown报告。
功能特性
- 迭代式研究:通过迭代生成搜索查询、处理结果,并根据发现深入研究。
- 智能查询生成:使用大语言模型根据研究目标和先前发现生成有针对性的搜索查询。
- 深度和广度控制:可配置参数控制研究的广度和深度。
- 智能跟进:生成跟进问题以更好地理解研究需求。
- 综合报告:生成详细的Markdown报告,包含研究结果和来源。
- 并发处理:并行处理多个搜索和结果,提高效率。
技术栈
- 编程语言:主要使用TypeScript。
- 依赖管理:使用npm进行依赖管理,
package-lock.json
文件记录了项目的依赖信息。 - 容器化:支持使用Docker进行容器化部署,包含
Dockerfile
和docker-compose.yml
文件。 - 代码格式化:使用Prettier进行代码格式化,配置文件为
prettier.config.mjs
。
依赖库
项目依赖了多个第三方库,部分重要依赖如下:
- AI相关:@ai-sdk/fireworks
、@ai-sdk/openai
、ai
等,用于与AI模型交互。
- 网络请求:@mendable/firecrawl-js
用于网页搜索和内容提取。
- Web框架:express
和 cors
用于构建Web服务。
- 工具库:js-tiktoken
、lodash-es
、p-limit
、uuid
、zod
等提供各种工具功能。
安装和配置
Node.js环境
- 克隆仓库:
git clone <repository-url>
- 安装依赖:
npm install
- 在
.env.local
文件中设置环境变量:
FIRECRAWL_KEY="your_firecrawl_key"
# If you want to use your self-hosted Firecrawl, add the following below:
# FIRECRAWL_BASE_URL="http://localhost:3002"
OPENAI_KEY="your_openai_key"
若要使用本地大语言模型,可注释掉 OPENAI_KEY
,并取消注释 OPENAI_ENDPOINT
和 OPENAI_MODEL
,并设置相应的值。
Docker环境
- 克隆仓库。
- 将
.env.example
重命名为.env.local
,并设置API密钥。 - 构建Docker镜像:
docker build -f Dockerfile
- 运行Docker容器:
docker compose up -d
- 在Docker服务中执行命令:
docker exec -it deep-research npm run docker
许可证
该项目采用MIT许可证,允许用户自由使用、复制、修改和分发软件,但需要保留版权声明和许可声明。
文件结构
.env.example
.gitignore
.nvmrc
.prettierignore
Dockerfile
LICENSE
README.md
docker-compose.yml
package-lock.json
package.json
prettier.config.mjs
report.md
tsconfig.json
src/
ai/
api.ts
deep-research.ts
feedback.ts
prompt.ts
run.ts
总结
这个仓库提供了一个简单而强大的深度研究助手实现,通过结合多种技术和工具,能够对各种主题进行深入研究,并生成详细的报告。用户可以根据自己的需求进行扩展和定制。