科学工具
科学工具让世界更美好
让世界更美好

OpenDeepSearch 开源搜索工具OpenDeepSearch 开源搜索工具

OpenDeepSearch 是一个轻量级的搜索工具,与AI代理无缝集成,通过开源推理模型和推理代理实现深度网络搜索与检索功能,特别适配Hugging Face的SmolAgents生态系统。

性能

• 单跳查询(如SimpleQA)性能与闭源搜索方案相当

• 多跳查询(如FRAMES基准测试)表现优于闭源搜索方案

工作模式

1、默认模式:快速响应,延迟最低

2、专业模式(深度搜索):结果更深入准确,但需要额外处理时间

特性

• 适配各类AI代理(如CodeAgent)

• 运行速度快,资源占用低

• 模块化设计,可灵活配置不同模型和API

安装指南

执行以下命令安装:

pip install -e .
# 或使用uv替代pip
uv pip install -e .

pip install -r requirements.txt
# 或使用uv替代pip
uv pip install -r requirements.txt

需预先安装torch。

配置

1、注册Serper.dev服务:获取2500次免费额度,添加API密钥

2、设置环境变量

export SERPER_API_KEY='your-api-key-here'

3、排序方案

Jina快速接入:注册Jina AI获取API密钥

LiteLLM提供商:支持OpenAI、Anthropic、Google(Gemini)、OpenRouter、HuggingFace、Fireworks等平台

4、设置API密钥

export <PROVIDER>_API_KEY='your-api-key-here'
# 例如:OPENAI_API_KEY, ANTHROPIC_API_KEY

5、初始化指定模型

search_agent = OpenDeepSearchTool(
    model_name="provider/model-name"
)
# 示例:"anthropic/claude-3-opus-20240229", 
# 'huggingface/microsoft/codebert-base',
# 'openrouter/google/gemini-2.0-flash-001'

使用方法

独立使用

from opendeepsearch import OpenDeepSearchTool
import os

# 设置API密钥环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here"
os.environ["OPENROUTER_API_KEY"] = "your-openrouter-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"

search_agent = OpenDeepSearchTool(
    model_name="openrouter/google/gemini-2.0-flash-001",
    reranker="jina"
)

query = "陆地上速度最快的动物?"
result = search_agent.search(query)
print(result)

运行Gradio演示界面

执行命令启动本地Web界面:

python gradio_demo.py

可在gradio_demo.py中修改模型、重排序器和搜索模式参数。

与SmolAgents集成

from opendeepsearch import OpenDeepSearchTool
from smolagents import CodeAgent, LiteLLMModel
import os

# 设置API密钥环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here"
os.environ["OPENROUTER_API_KEY"] = "your-openrouter-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"

search_agent = OpenDeepSearchTool(
    model_name="openrouter/google/gemini-2.0-flash-001",
    reranker="jina"
)

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)