返回市场
深度研究

深度研究

作者:u14app4240 星标更新:2025-11-05

项目介绍

<div align="center"> <h1>深度研究</h1>

GitHub 部署 GitHub 发布 Docker 镜像大小 Docker 拉取次数 MIT 许可证

Gemini Next Tailwind CSS shadcn/ui

Vercel Cloudflare PWA

询问 DeepWiki

</div>

闪电般快速的深度研究报告

深度研究使用多种强大的人工智能模型,在几分钟内生成深入的研究报告。它利用先进的“思考”和“任务”模型,结合互联网连接,提供对各种主题的快速而深刻的分析。您的隐私至关重要——所有数据都在本地处理和存储。

✨ 特性

  • 快速深度研究: 在大约2分钟内生成全面的研究报告,显著加快您的研究过程。
  • 多平台支持: 支持快速部署到 Vercel、Cloudflare 和其他平台。
  • 由人工智能驱动: 利用先进的 AI 模型进行准确且有洞察力的分析。
  • 注重隐私: 您的数据保持私密和安全,因为所有数据都存储在您的浏览器上。
  • 支持多语言模型: 支持多种主流大型语言模型,包括 Gemini、OpenAI、Anthropic、Deepseek、Grok、Mistral、Azure OpenAI、任何兼容 OpenAI 的 LLM、OpenRouter、Ollama 等。
  • 支持网络搜索: 支持 Searxng、Tavily、Firecrawl、Exa、Bocha 等搜索引擎,使不支持搜索的 LLM 更方便地使用网络搜索功能。
  • 思考与任务模型: 使用复杂的“思考”和“任务”模型来平衡深度和速度,确保快速高质量的结果。支持切换研究模型。
  • 进一步研究支持: 您可以在项目的任何阶段调整或修改研究内容,并从该阶段重新开始研究。
  • 本地知识库: 支持上传和处理文本、Office、PDF 等资源文件以生成本地知识库。
  • 成果物: 支持编辑研究内容,有两种编辑模式:WYSIWYM 和 Markdown。可以调整阅读水平、文章长度和全文翻译。
  • 知识图谱: 支持一键生成知识图谱,让您系统地理解报告内容。
  • 研究历史: 支持保存研究历史,您可以随时查看以前的研究结果并再次进行深入研究。
  • 本地及服务器 API 支持: 提供灵活性,既支持本地调用也支持服务器端 API 调用,以满足您的需求。
  • 支持 SaaS 和 MCP: 您可以通过 SSE API 将此项目作为深度研究服务(SaaS)使用,或者通过 MCP 服务将其用于其他 AI 服务。
  • 支持 PWA: 使用渐进式 Web 应用(PWA)技术,您可以像使用软件一样使用该项目。
  • 支持多密钥载荷: 支持多密钥载荷以提高 API 响应效率。
  • 多语言支持: 英语,简体中文,西班牙语。
  • 采用现代技术构建: 使用 Next.js 15 和 Shadcn UI 开发,确保现代、高性能且视觉吸引人的用户体验。
  • MIT 许可证: 开源且免费提供个人和商业用途,基于 MIT 许可证。

🎯 路线图

  • 支持保存研究历史
  • 支持编辑最终报告和搜索结果
  • 支持其他 LLM 模型
  • 支持文件上传和本地知识库
  • 支持 SSE API 和 MCP 服务器

🚀 快速开始

使用免费的 Gemini(推荐)

  1. 获取 Gemini API 密钥

  2. 一键部署项目,可以选择部署到 Vercel 或 Cloudflare

    使用 Vercel 部署

    目前该项目支持部署到 Cloudflare,但您需要按照 如何部署到 Cloudflare 页面 来操作。

  3. 开始使用

使用其他 LLM

  1. 将项目部署到 Vercel 或 Cloudflare
  2. 设置 LLM API 密钥
  3. 设置 LLM API 基础 URL(可选)
  4. 开始使用

⌨️ 开发

遵循以下步骤在本地浏览器中运行 Deep Research。

先决条件

安装

  1. 克隆仓库:

    git clone https://github.com/u14app/deep-research.git
    cd deep-research
    
  2. 安装依赖项:

    pnpm install  # 或 npm install 或 yarn install
    
  3. 设置环境变量:

    您需要将文件 env.tpl 修改为 .env,或创建一个 .env 文件并将变量写入此文件。

    # 用于开发
    cp env.tpl .env.local
    # 用于生产
    cp env.tpl .env
    
  4. 运行开发服务器:

    pnpm dev  # 或 npm run dev 或 yarn dev
    

    打开浏览器访问 http://localhost:3000 即可访问 Deep Research。

自定义模型列表

该项目允许自定义模型列表,但仅在代理模式下工作。请在 .env 文件或环境变量页面中添加名为 NEXT_PUBLIC_MODEL_LIST 的环境变量。

自定义模型列表使用 , 分隔多个模型。如果您想禁用某个模型,请使用 - 符号后跟模型名称,例如 -existing-model-name。要仅允许指定的模型可用,请使用 -all,+new-model-name

🚢 部署

Vercel

使用 Vercel 部署

Cloudflare

目前该项目支持部署到 Cloudflare,但您需要按照 如何部署到 Cloudflare 页面 来操作。

Docker

Docker 版本需要 20 或以上,否则会提示找不到镜像。

⚠️ 注意:大多数情况下,Docker 版本会落后于最新版本 1 至 2 天,因此部署后“更新存在”的提示会继续出现,这是正常的。

docker pull xiangfa/deep-research:latest
docker run -d --name deep-research -p 3333:3000 xiangfa/deep-research

您还可以指定额外的环境变量:

docker run -d --name deep-research \
   -p 3333:3000 \
   -e ACCESS_PASSWORD=your-password \
   -e GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy... \
   xiangfa/deep-research

或者构建自己的 Docker 镜像:

docker build -t deep-research .
docker run -d --name deep-research -p 3333:3000 deep-research

如果需要指定其他环境变量,请在上述命令中添加 -e key=value 来指定。

使用 docker-compose.yml 部署:

version: '3.9'
services:
   deep-research:
      image: xiangfa/deep-research
      container_name: deep-research
      environment:
         - ACCESS_PASSWORD=your-password
         - GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy...
      ports:
         - 3333:3000

或者构建自己的 Docker Compose:

docker compose -f docker-compose.yml build

静态部署

您也可以直接构建静态页面版本,然后将 out 目录中的所有文件上传到支持静态页面的任何网站服务,如 Github Page、Cloudflare、Vercel 等。

pnpm build:export

⚙️ 配置

正如“快速开始”部分所述,Deep Research 使用以下环境变量进行服务器端 API 配置:

请参阅文件 env.tpl 中的所有可用环境变量。

关于环境变量的重要说明:

  • 隐私提醒: 这些环境变量主要用于服务器端 API 调用。当使用本地 API 模式时,不需要任何 API 密钥或服务器端配置,进一步增强了您的隐私。
  • 多密钥支持: 支持多个密钥,每个密钥之间用 , 分隔,例如 key1,key2,key3
  • 安全性设置: 通过设置 ACCESS_PASSWORD,您可以更好地保护服务器 API 的安全性。
  • 使变量生效: 添加或修改此环境变量后,请重新部署项目以使更改生效。

📄 API 文档

目前该项目支持两种形式的 API:服务器发送事件(SSE)和模型上下文协议(MCP)。

服务器发送事件 API

Deep Research API 提供了一个实时接口,用于启动和监控复杂的科研任务。

建议通过 @microsoft/fetch-event-source 使用 API,要获取最终报告,您需要监听 message 事件,数据将以文本流的形式返回。

POST 方法

端点:/api/sse

方法:POST

请求体:

interface SSEConfig {
  // 研究主题
  query: string;
  // AI 提供商,可能值包括:google, openai, anthropic, deepseek, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
  provider: string;
  // 思考模型 ID
  thinkingModel: string;
  // 任务模型 ID
  taskModel: string;
  // 搜索提供商,可能值包括:model, tavily, firecrawl, exa, bocha, searxng
  searchProvider: string;
  // 响应语言,也会影响搜索语言。(可选)
  language?: string;
  // 最大搜索结果数,默认值为 `5`(可选)
  maxResult?: number;
  // 是否在最终报告中包含相关内容的图片,默认值为 `true`(可选)
  enableCitationImage?: boolean;
  // 是否在搜索结果和最终报告中包含引用链接,默认值为 `true`(可选)
  enableReferences?: boolean;
}

头部:

interface Headers {
  "Content-Type": "application/json";
  // 如果设置了访问密码
  // Authorization: "Bearer YOUR_ACCESS_PASSWORD";
}

详见详细的 API 文档

GET 方法

这是一个有趣的实现。您可以通过 URL 直接观看整个深度研究的过程,就像观看视频一样。

您可以通过以下链接访问深度研究报告:

http://localhost:3000/api/sse/live?query=AI+trends+for+this+year&provider=pollinations&thinkingModel=openai&taskModel=openai-fast&searchProvider=searxng

查询参数:

// 参数与 POST 参数相同
interface QueryParams extends SSEConfig {
  // 如果设置了 `ACCESS_PASSWORD` 环境变量,则此参数是必需的
  password?: string;
}

模型上下文协议(MCP)服务器

目前支持 StreamableHTTPSSE 服务器传输。

StreamableHTTP 服务器端点:/api/mcp,传输类型:streamable-http

SSE 服务器端点:/api/mcp/sse,传输类型:sse

{
  "mcpServers": {
    "deep-research": {
      "url": "http://127.0.0.1:3000/api/mcp",
      "transportType": "streamable-http",
      "timeout": 600
    }
  }
}

注意: 由于深度研究执行时间较长,您需要设置更长的超时时间以避免中断研究。

如果您的服务器设置了 ACCESS_PASSWORD,MCP 服务将受到保护,您需要添加额外的头部参数:

{
  "mcpServers": {
    "deep-research": {
      "url": "http://127.0.0.1:3000/api/mcp",
      "transportType": "streamable-http",
      "timeout": 600,
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_PASSWORD"
      }
    }
  }
}

启用 MCP 服务需要设置全局环境变量:

# MCP 服务器 AI 提供商
# 可能值包括:google, openai, anthropic, deepseek, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
MCP_AI_PROVIDER=google
# MCP 服务器搜索提供商,默认值为 `model`
# 可能值包括:model, tavily, firecrawl, exa, bocha, searxng
MCP_SEARCH_PROVIDER=tavily
# MCP 服务器思考模型 ID,深度研究的核心模型。
MCP_THINKING_MODEL=gemini-2.0-flash-thinking-exp
# MCP 服务器任务模型 ID,用于次要任务,推荐高产出模型。
MCP_TASK_MODEL=gemini-2.0-flash-exp

注意: 为了确保 MCP 服务能够正常运行,您需要设置相应模型和搜索引擎的环境变量。具体环境变量参数,请参考 env.tpl

🪄 工作原理

  1. 研究主题

    • 输入研究主题
    • 使用本地研究资源(可选)
    • 开始思考(或重新思考)
  2. 提出您的想法

    • 系统提问
      • 回答系统问题(可选)
      • 编写研究计划(或重写研究计划)
    • 系统输出研究计划
      • 开始深入研究(或重新研究)
      • 系统生成 SERP 查询
  3. 信息收集

    • 初始研究
      • 根据 SERP 查询检索本地研究资源
      • 根据 SERP 查询从互联网收集信息
    • 深入研究(此过程可以重复)
      • 提出研究建议(可选)
      • 开始新一轮的信息收集(过程与初始研究相同)
  4. 生成最终报告

    • 提出写作请求(可选)
    • 将所有研究材料总结成一份综合的 Markdown 报告
    • 再次生成研究报告(可选)
flowchart TB
    A[研究主题]:::start

    subgraph Propose[提出您的想法]
        B1[系统提问]:::process
        B2[系统输出研究计划]:::process
        B3[系统生成 SERP 查询]:::process
        B1 --> B2
        B2 --> B3
    end

    subgraph Collect[信息收集]
        C1[初始研究]:::collection
        C1a[根据 SERP 查询检索本地研究资源]:::collection
        C1b[根据 SERP 查询从互联网收集信息]:::collection
        C2[深入研究]:::recursive
        Refine{需要更多深入研究吗?}:::decision

        C1 --> C1a
        C1 --> C1b
        C1a