本文档概述了构成 Local Deep Researcher 的关键子系统。它涵盖了主要组件、其功能以及它们如何交互以创建迭代式网络研究系统。有关整体系统设计的信息,请参阅系统架构。
Local Deep Researcher 由多个相互连接的组件组成,它们协同工作以提供全面的研究能力
来源:README.md:3-4, README.md:157-167
LLM 集成组件将系统连接到本地部署的大型语言模型,为查询生成、总结和反思提供所需的智能。
系统支持两种主要的 LLM 提供商
Ollama
OLLAMA_BASE_URL 环境变量配置LMStudio
LMSTUDIO_BASE_URL 环境变量配置有关 LLM 集成的更多详细信息,请参阅LLM 集成。
来源:README.md:29-64, pyproject.toml:16
搜索 API 组件使系统能够使用各种搜索提供商从网络收集信息。
系统支持多种搜索提供商
DuckDuckGo(默认)- 无需 API 密钥
FETCH_FULL_PAGE 设置选择获取完整页面内容Tavily - 需要 API 密钥
TAVILY_API_KEY 环境变量配置Perplexity - 需要 API 密钥
PERPLEXITY_API_KEY 环境变量配置SearXNG - 自托管搜索引擎
有关搜索 API 集成的更多详细信息,请参阅搜索 API 集成。
来源:README.md:66-75, pyproject.toml:14-17
研究状态管理组件维护研究过程在迭代中的演进状态。
状态管理跟踪
该状态在 LangGraph Studio 中可见并可检查,允许用户监控研究进度。
有关状态管理的更多详细信息,请参阅状态管理。
来源:README.md:168-176
LangGraph 工作流组件通过一系列定义的步骤来编排研究过程。
工作流包括以下步骤
有关研究工作流的更多详细信息,请参阅研究工作流。
来源:README.md:157-167
系统使用专门的提示模板引导 LLM 完成研究过程的不同阶段。
每个提示模板都有特定的目的
系统包含针对难以处理结构化 JSON 输出的模型的回退机制。
有关提示工程的更多详细信息,请参阅提示工程。
来源:README.md:144-146
配置系统允许用户自定义 Local Deep Researcher 的行为。
配置可以通过多种方法提供,优先级顺序如下
关键配置选项包括
| 配置选项 | 环境变量 | 默认值 | 目的 |
|---|---|---|---|
| 最大研究循环次数 | MAX_WEB_RESEARCH_LOOPS | 3 | 研究迭代次数 |
| LLM 模型 | LOCAL_LLM | llama3.2 | 用于推理的模型 |
| LLM 提供商 | LLM_PROVIDER | ollama | LLM 访问提供商 |
| 搜索提供商 | SEARCH_API | duckduckgo | 网络搜索服务 |
| 获取完整页面 | FETCH_FULL_PAGE | false | 是否检索完整页面内容 |
来源:README.md:24-75, README.md:129-135
下图说明了组件在研究会话期间如何交互
此序列图展示了研究会话从用户输入到最终输出的完整流程,说明了所有组件如何协作以创建全面的研究体验。
来源:README.md:157-176
Local Deep Researcher 依赖于几个关键库
| 依赖项 | 目的 |
|---|---|
| langgraph | 研究工作流的编排 |
| langchain-community | 通用 LangChain 组件 |
| langchain-ollama | Ollama 集成 |
| duckduckgo-search | DuckDuckGo 搜索功能 |
| tavily-python | Tavily 搜索集成 |
| langchain-openai | 兼容 OpenAI 的 API 处理 |
| markdownify | HTML 到 Markdown 转换 |
| python-dotenv | 环境变量管理 |
来源:pyproject.toml:11-23