open-deep-research-AI驱动的研究助手项目


这个仓库名为 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进行容器化部署,包含 Dockerfiledocker-compose.yml 文件。
  • 代码格式化:使用Prettier进行代码格式化,配置文件为 prettier.config.mjs

依赖库

项目依赖了多个第三方库,部分重要依赖如下: - AI相关@ai-sdk/fireworks@ai-sdk/openaiai 等,用于与AI模型交互。 - 网络请求@mendable/firecrawl-js 用于网页搜索和内容提取。 - Web框架expresscors 用于构建Web服务。 - 工具库js-tiktokenlodash-esp-limituuidzod 等提供各种工具功能。

安装和配置

Node.js环境

  1. 克隆仓库:
git clone <repository-url>
  1. 安装依赖:
npm install
  1. .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_ENDPOINTOPENAI_MODEL,并设置相应的值。

Docker环境

  1. 克隆仓库。
  2. .env.example 重命名为 .env.local,并设置API密钥。
  3. 构建Docker镜像:
docker build -f Dockerfile
  1. 运行Docker容器:
docker compose up -d
  1. 在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

总结

这个仓库提供了一个简单而强大的深度研究助手实现,通过结合多种技术和工具,能够对各种主题进行深入研究,并生成详细的报告。用户可以根据自己的需求进行扩展和定制。

Github