菜单

核心组件

相关源文件

本文档概述了构成 Local Deep Researcher 的关键子系统。它涵盖了主要组件、其功能以及它们如何交互以创建迭代式网络研究系统。有关整体系统设计的信息,请参阅系统架构

组件概览

Local Deep Researcher 由多个相互连接的组件组成,它们协同工作以提供全面的研究能力

来源:README.md:3-4, README.md:157-167

LLM 集成

LLM 集成组件将系统连接到本地部署的大型语言模型,为查询生成、总结和反思提供所需的智能。

系统支持两种主要的 LLM 提供商

  1. Ollama

    • 默认 URL:http://:11434
    • 可通过 OLLAMA_BASE_URL 环境变量配置
    • 支持通过 Ollama 提供的模型(llama3.2、deepseek-r1 等)
  2. LMStudio

    • 默认 URL:http://:1234/v1
    • 可通过 LMSTUDIO_BASE_URL 环境变量配置
    • 使用兼容 OpenAI 的 API 接口

有关 LLM 集成的更多详细信息,请参阅LLM 集成

来源:README.md:29-64, pyproject.toml:16

搜索 API 集成

搜索 API 组件使系统能够使用各种搜索提供商从网络收集信息。

系统支持多种搜索提供商

  1. DuckDuckGo(默认)- 无需 API 密钥

    • 可通过 FETCH_FULL_PAGE 设置选择获取完整页面内容
  2. Tavily - 需要 API 密钥

    • 可通过 TAVILY_API_KEY 环境变量配置
  3. Perplexity - 需要 API 密钥

    • 可通过 PERPLEXITY_API_KEY 环境变量配置
  4. SearXNG - 自托管搜索引擎

    • 需要配置实例

有关搜索 API 集成的更多详细信息,请参阅搜索 API 集成

来源:README.md:66-75, pyproject.toml:14-17

研究状态管理

研究状态管理组件维护研究过程在迭代中的演进状态。

状态管理跟踪

  1. research_topic - 用户提供的研究主题
  2. search_query - LLM 生成的当前搜索查询
  3. web_research_results - 最新搜索结果
  4. sources_gathered - 研究期间收集的所有来源
  5. research_loop_count - 当前迭代次数
  6. running_summary - 演进中的研究摘要

该状态在 LangGraph Studio 中可见并可检查,允许用户监控研究进度。

有关状态管理的更多详细信息,请参阅状态管理

来源:README.md:168-176

LangGraph 工作流

LangGraph 工作流组件通过一系列定义的步骤来编排研究过程。

工作流包括以下步骤

  1. generate_query() - 根据研究主题和知识空白创建有效的搜索查询
  2. web_research() - 使用配置的搜索提供商从网络收集信息
  3. summarize_sources() - 将网络搜索结果综合成连贯的摘要
  4. reflect_on_summary() - 识别当前摘要中的知识空白
  5. route_research() - 确定是继续下一次迭代还是完成
  6. finalize_summary() - 创建带有引用的最终研究摘要

有关研究工作流的更多详细信息,请参阅研究工作流

来源:README.md:157-167

提示工程

系统使用专门的提示模板引导 LLM 完成研究过程的不同阶段。

每个提示模板都有特定的目的

  1. 查询生成模板 - 指导 LLM 创建有效的搜索查询
  2. 源总结模板 - 指导 LLM 总结网络信息
  3. 空白反思模板 - 指导 LLM 识别知识空白
  4. 最终摘要模板 - 指定综合最终摘要的格式

系统包含针对难以处理结构化 JSON 输出的模型的回退机制。

有关提示工程的更多详细信息,请参阅提示工程

来源:README.md:144-146

配置系统

配置系统允许用户自定义 Local Deep Researcher 的行为。

配置可以通过多种方法提供,优先级顺序如下

  1. 环境变量(最高优先级)
  2. LangGraph UI 配置
  3. Configuration 类中的默认值(最低优先级)

关键配置选项包括

配置选项环境变量默认值目的
最大研究循环次数MAX_WEB_RESEARCH_LOOPS3研究迭代次数
LLM 模型LOCAL_LLMllama3.2用于推理的模型
LLM 提供商LLM_PROVIDERollamaLLM 访问提供商
搜索提供商SEARCH_APIduckduckgo网络搜索服务
获取完整页面FETCH_FULL_PAGEfalse是否检索完整页面内容

来源:README.md:24-75, README.md:129-135

组件交互

下图说明了组件在研究会话期间如何交互

此序列图展示了研究会话从用户输入到最终输出的完整流程,说明了所有组件如何协作以创建全面的研究体验。

来源:README.md:157-176

依赖项

Local Deep Researcher 依赖于几个关键库

依赖项目的
langgraph研究工作流的编排
langchain-community通用 LangChain 组件
langchain-ollamaOllama 集成
duckduckgo-searchDuckDuckGo 搜索功能
tavily-pythonTavily 搜索集成
langchain-openai兼容 OpenAI 的 API 处理
markdownifyHTML 到 Markdown 转换
python-dotenv环境变量管理

来源:pyproject.toml:11-23