OpenDeepSearch
OpenDeepSearch 是一款旨在让顶级搜索能力普惠大众的开源项目。它通过结合先进的开源推理大模型与智能搜索代理,重新定义了信息检索的方式。传统搜索引擎往往只能返回简单的链接列表,用户需要自行筛选和整合信息,而 OpenDeepSearch 解决了这一痛点:它能像人类专家一样进行深度思考,自主规划搜索路径、多次检索并综合多方信息,最终直接给出经过逻辑推导的深度答案。
这款工具特别适合开发者、AI 研究人员以及需要处理复杂信息查询的专业人士使用。对于希望构建下一代智能搜索应用的技术团队,或是需要从海量数据中快速提取精准洞察的研究者,OpenDeepSearch 提供了强大的底层支持。其核心亮点在于“推理驱动”,不仅依赖关键词匹配,更利用推理模型的思维链(Chain-of-Thought)能力,主动拆解复杂问题,动态调整搜索策略,从而实现远超传统工具的准确率与深度。作为一个完全开源的项目,它打破了技术壁垒,让每个人都能自由部署、定制属于自己的高性能深度搜索系统,推动搜索技术向更智能、更透明的方向发展。
使用场景
某金融科技公司的量化分析师需要在极短时间内,从全球数千份最新的英文财报、监管文件及行业研报中,挖掘出影响半导体供应链的关键风险信号。
没有 OpenDeepSearch 时
- 信息检索浅层化:传统搜索引擎仅能匹配关键词,无法理解“产能受限”与“设备交付延迟”之间的深层逻辑关联,导致大量高价值隐性信息被遗漏。
- 人工验证成本高:分析师需手动打开数十个链接逐一阅读长文档,耗时数小时才能确认一个假设,且容易因疲劳产生误判。
- 推理链条断裂:面对跨文档的复杂线索(如 A 厂停产导致 B 材料短缺),缺乏自动推理能力,难以将碎片化信息拼凑成完整的因果图谱。
- 时效性滞后:等待人工整理报告往往需要隔天输出,错失市场波动的最佳决策窗口。
使用 OpenDeepSearch 后
- 深度语义洞察:OpenDeepSearch 利用推理模型主动分析文档上下文,精准识别出未直接提及但逻辑相关的供应链中断风险,召回率显著提升。
- 自动化证据链生成:工具自动遍历多个数据源,提取关键段落并生成带有引用来源的推理报告,将数小时的工作压缩至分钟级。
- 多步逻辑推演:内置的智能体能够自主规划搜索路径,串联起分散在不同文件中的事件,完整呈现“原材料涨价 - 厂商减产 - 终端缺货”的传导路径。
- 实时决策支持:基于最新发布的文档即时完成深度分析,帮助团队在盘前会议中迅速调整投资策略。
OpenDeepSearch 通过将搜索从简单的“关键词匹配”升级为具备逻辑推理能力的“深度探究”,彻底释放了专业人员在复杂信息处理上的潜能。
运行环境要求
- 未说明
- 非必需
- 若使用自托管重排序模型(如 Qwen2-7B-instruct),建议配备支持运行 7B 参数模型的 GPU
- 若使用 Jina AI 等云端 API 则无需本地 GPU
未说明(运行本地 7B 模型建议 16GB+)

快速开始
🔍OpenDeepSearch:以开源推理模型和推理代理 democratize 搜索 🚀
特性 ✨
- 语义搜索 🧠:利用 Crawl4AI 和语义搜索重排序器(如 Qwen2-7B-instruct 和 Jina AI),提供深入的结果
- 两种运行模式 ⚡:
- 默认模式:快速高效的搜索,延迟极低。
- 专业模式(深度搜索):以额外的处理时间为代价,获得更深入、更准确的结果。
- 专为 AI 代理优化 🤖:可与
CodeAgent等 SmolAgents 无缝协作。 - 快速轻量 ⚡:设计注重速度与效率,设置简单。
- 可扩展 🔌:易于配置,可与不同模型和 API 配合使用。
安装 📚
要安装 OpenDeepSearch,请运行:
pip install -e . #你也可以使用:uv pip install -e .
pip install -r requirements.txt #你也可以使用:uv pip install -r requirements.txt
注意:必须安装 torch。
注意:使用 uv 而不是普通的 pip 会让操作更加轻松!
使用 PDM(替代包管理器)📦
你也可以使用 PDM 作为 OpenDeepSearch 的替代包管理器。PDM 是一个现代化的 Python 包和依赖项管理器,支持最新的 PEP 标准。
# 如果尚未安装 PDM,请先安装
curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3 -
# 初始化一个新的 PDM 项目
pdm init
# 安装 OpenDeepSearch 及其依赖项
pdm install
# 激活虚拟环境
eval "$(pdm venv activate)"
PDM 具有以下优势:
- 锁文件支持,实现可重复的安装
- 支持 PEP 582(无需虚拟环境)
- 快速的依赖解析
- 内置虚拟环境管理
设置
选择搜索提供商:
选项 1:Serper.dev:获取 免费 2500 积分,并添加你的 API 密钥。
- 访问 serper.dev 创建账户。
- 获取你的 API 密钥,并将其存储为环境变量:
export SERPER_API_KEY='your-api-key-here'选项 2:SearXNG:使用自托管或公共 SearXNG 实例。
- 在初始化 OpenDeepSearch 时指定 SearXNG 实例的 URL。
- 如果你的实例需要认证,可选择提供 API 密钥:
export SEARXNG_INSTANCE_URL='https://your-searxng-instance.com' export SEARXNG_API_KEY='your-api-key-here' # 可选
选择重排序解决方案:
- 快速开始使用 Jina:在 Jina AI 注册以获取立即可用的 API 密钥
- 自托管选项:在本地设置 Infinity Embeddings 服务器,使用开源模型,例如 Qwen2-7B-instruct
- 更多关于重排序选项的详细信息,请参阅我们的 重排序指南
设置 LiteLLM 提供商:
- 从 支持列表 中选择一个提供商,包括:
- OpenAI
- Anthropic
- Google (Gemini)
- OpenRouter
- HuggingFace
- Fireworks
- 以及更多!
- 将你选择的提供商的 API 密钥设置为环境变量:
export <PROVIDER>_API_KEY='your-api-key-here' # 例如,OPENAI_API_KEY、ANTHROPIC_API_KEY- 对于 OpenAI,你还可以设置自定义的基础 URL(适用于自托管端点或代理):
export OPENAI_BASE_URL='https://your-custom-openai-endpoint.com'- 你可以为不同任务设置默认的 LiteLLM 模型 ID:
# 通用默认模型(所有任务的回退) export LITELLM_MODEL_ID='openrouter/google/gemini-2.0-flash-001' # 任务特定模型 export LITELLM_SEARCH_MODEL_ID='openrouter/google/gemini-2.0-flash-001' # 用于搜索任务 export LITELLM_ORCHESTRATOR_MODEL_ID='openrouter/google/gemini-2.0-flash-001' # 用于代理编排 export LITELLM_EVAL_MODEL_ID='gpt-4o-mini' # 用于评估任务- 在初始化 OpenDeepSearch 时,你可以使用提供商的格式指定你选择的模型(这将覆盖环境变量):
search_agent = OpenDeepSearchTool(model_name="provider/model-name") # 例如,“anthropic/claude-3-opus-20240229”、“huggingface/microsoft/codebert-base”、“openrouter/google/gemini-2.0-flash-001”- 从 支持列表 中选择一个提供商,包括:
使用 ️
你可以独立使用 OpenDeepSearch,也可以将其与 SmolAgents 集成,以增强推理和代码生成能力。
独立使用 OpenDeepSearch 🔍
from opendeepsearch import OpenDeepSearchTool
import os
# 设置 API 密钥的环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here" # 如果使用 Serper
# 或者对于 SearXNG
# os.environ["SEARXNG_INSTANCE_URL"] = "https://your-searxng-instance.com"
# os.environ["SEARXNG_API_KEY"] = "your-api-key-here" # 可选
os.environ["OPENROUTER_API_KEY"] = "your-openrouter-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"
# 使用 Serper(默认)
search_agent = OpenDeepSearchTool(
model_name="openrouter/google/gemini-2.0-flash-001",
reranker="jina"
)
# 或者使用 SearXNG
# search_agent = OpenDeepSearchTool(
# model_name="openrouter/google/gemini-2.0-flash-001",
# reranker="jina",
# search_provider="searxng",
# searxng_instance_url="https://your-searxng-instance.com",
# searxng_api_key="your-api-key-here" # 可选
# )
if not search_agent.is_initialized:
search_agent.setup()
query = "最快的陆地动物是什么?"
result = search_agent.forward(query)
print(result)
运行 Gradio 演示 🖥️
要通过友好的用户界面体验 OpenDeepSearch,只需运行以下命令:
python gradio_demo.py
这将启动一个本地 Web 界面,您可以在其中交互式地测试不同的搜索查询和模式。
您可以通过命令行参数自定义演示:
# 使用 Serper(默认)
python gradio_demo.py --model-name "openrouter/google/gemini-2.0-flash-001" --reranker "jina"
# 使用 SearXNG
python gradio_demo.py --model-name "openrouter/google/gemini-2.0-flash-001" --reranker "jina" \
--search-provider "searxng" --searxng-instance "https://your-searxng-instance.com" \
--searxng-api-key "your-api-key-here" # 可选
可用选项:
--model-name: 用于搜索的 LLM 模型--orchestrator-model: 用于代理编排器的 LLM 模型--reranker: 要使用的重排序器(jina或infinity)--search-provider: 要使用的搜索引擎(serper或searxng)--searxng-instance: SearXNG 实例 URL(使用searxng时必填)--searxng-api-key: SearXNG API 密钥(可选)--serper-api-key: Serper API 密钥(可选,未提供时将使用环境变量)--openai-base-url: OpenAI API 基础 URL(可选,未提供时将使用OPENAI_BASE_URL环境变量)
与 SmolAgents 和 LiteLLM 集成 🤖⚙️
from opendeepsearch import OpenDeepSearchTool
from smolagents import CodeAgent, LiteLLMModel
import os
# 设置 API 密钥环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here" # 如果使用 Serper
# 或对于 SearXNG
# os.environ["SEARXNG_INSTANCE_URL"] = "https://your-searxng-instance.com"
# os.environ["SEARXNG_API_KEY"] = "your-api-key-here" # 可选
os.environ["OPENROUTER_API_KEY"] = "your-openrouter-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"
# 使用 Serper(默认)
search_agent = OpenDeepSearchTool(
model_name="openrouter/google/gemini-2.0-flash-001",
reranker="jina"
)
# 或者使用 SearXNG
# search_agent = OpenDeepSearchTool(
# model_name="openrouter/google/gemini-2.0-flash-001",
# reranker="jina",
# search_provider="searxng",
# searxng_instance_url="https://your-searxng-instance.com",
# searxng_api_key="your-api-key-here" # 可选
# )
model = LiteLLMModel(
"openrouter/google/gemini-2.0-flash-001",
temperature=0.2
)
code_agent = CodeAgent(tools=[search_agent], model=model)
query = "猎豹以全速奔跑,需要多长时间才能跑完亚历山大三世桥的长度?"
result = code_agent.run(query)
print(result)
带有数学和搜索工具的 ReAct 代理 🤖⚙️
from opendeepsearch import OpenDeepSearchTool
from opendeepsearch.wolfram_tool import WolframAlphaTool
from opendeepsearch.prompts import REACT_PROMPT
from smolagents import LiteLLMModel, ToolCallingAgent, Tool
import os
# 设置 API 密钥环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"
os.environ["WOLFRAM_ALPHA_APP_ID"] = "your-wolfram-alpha-app-id-here"
os.environ["FIREWORKS_API_KEY"] = "your-fireworks-api-key-here"
model = LiteLLMModel(
"fireworks_ai/llama-v3p1-70b-instruct", # 您的 Fireworks Deepseek 模型
temperature=0.7
)
search_agent = OpenDeepSearchTool(model_name="fireworks_ai/llama-v3p1-70b-instruct", reranker="jina") # 将重排序器设置为“jina”或“infinity”
# 初始化 Wolfram Alpha 工具
wolfram_tool = WolframAlphaTool(app_id=os.environ["WOLFRAM_ALPHA_APP_ID"])
# 使用搜索和 Wolfram 工具初始化 React 代理
react_agent = ToolCallingAgent(
tools=[search_agent, wolfram_tool],
model=model,
prompt_templates=REACT_PROMPT # 使用 REACT_PROMPT 作为系统提示
)
# React 代理的示例查询
query = "罗马斗兽场与威尼斯里亚托桥之间的距离是多少米?"
result = react_agent.run(query)
print(result)
搜索模式 🔄
OpenDeepSearch 提供两种不同的搜索模式,以在速度和深度之间取得平衡:
默认模式 ⚡
- 使用基于 SERP 的交互快速获取结果
- 处理开销最小
- 适用于单跳、简单的查询
- 响应时间快
- 非常适合基础信息检索
专业模式 🔍
- 包含全面的网页抓取
- 实现结果的语义重排序
- 包括数据的高级后处理
- 处理时间稍长
- 在以下方面表现出色:
- 多跳查询
- 复杂的搜索需求
- 详细的信息收集
- 需要交叉验证的问题
致谢 💡
OpenDeepSearch 建立在众多优秀的开源项目之上:
- SmolAgents 🤗 – 提供代理框架和推理能力。
- Crawl4AI 🕷️ – 提供数据爬取支持。
- Infinity Embedding API 🌍 – 提供语义搜索功能。
- LiteLLM 🔥 – 用于高效的 AI 模型集成。
- 各种开源库 📚 – 增强搜索和检索功能。
引用
如果您在工作中使用了 OpenDeepSearch,请使用以下 BibTex 条目进行引用:
@misc{alzubi2025opendeepsearchdemocratizing,
title={Open Deep Search: 以开源推理代理民主化搜索},
author={Salaheddin Alzubi 和 Creston Brooks 和 Purva Chiniya 和 Edoardo Contente 和 Chiara von Gerlach 和 Lucas Irwin 和 Yihan Jiang 和 Arda Kaz 和 Windsor Nguyen 和 Sewoong Oh 和 Himanshu Tyagi 和 Pramod Viswanath},
year={2025},
eprint={2503.20201},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2503.20201},
}
联系方式 📩
如有任何问题或合作意向,请提交 issue 或直接联系维护人员。
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备