
search2ai
给大模型插上联网搜索,实时问答不求人
search2ai 是一个让大语言模型具备联网搜索能力的开源工具,核心解决 LLM 知识截止和无法获取实时信息的问题。它通过 Function Calling / Tool Call 机制,把搜索引擎结果注入到模型对话中,支持 OpenAI、Gemini、Groq、Llama、Mistral 等多家模型 API。项目用 TypeScript 编写,可作为中间层代理或 SDK 集成到现有应用,开发者只需配置搜索源和模型密钥,即可让聊天机器人回答最新新闻、股价、天气等时效性问题。它不依赖特定模型厂商的联网插件,而是自己编排搜索调用与结果拼接,因此兼容性更广,适合需要快速给 AI 应用加上实时检索能力的团队。
项目数据
使用教程
环境要求
- Node.js 运行环境(需能执行 npm / npx 命令)
- 至少一个搜索服务的 API Key,如 SEARCH1API_KEY、TAVILY_KEY
- 若走 MCP 方式,需要 Claude Desktop / Cursor / Claude Code 等支持 MCP 的客户端
安装与启动步骤
-
1安装 search2ai 库
以库方式接入,零部署成本。在项目目录执行安装,之后可从 search2ai/core 导入。
npm i search2ai -
2配置搜索服务密钥
自带 key(BYO key)。只配置你要用的 provider,用环境变量传入密钥。
export SEARCH1API_KEY=your_key export TAVILY_KEY=your_key -
3编写搜索调用代码
用 createGateway 初始化网关,调用 search 获取结果,返回体含 provider 与 warnings。
import { createGateway } from 'search2ai/core'; const gateway = createGateway({ providers: { search1api: { apiKey: process.env.SEARCH1API_KEY! }, tavily: { apiKey: process.env.TAVILY_KEY! }, }, }); const { provider, results, warnings } = await gateway.search({ query: 'hono cloudflare workers', max_results: 5 }); -
4本地启动 MCP 服务
MCP 方式同样零部署,通过 npx 直接拉起,对外提供 search、news、crawl 三个工具。
npx -y search2ai mcp -
5接入 MCP 客户端
把配置写入 Claude Desktop / Cursor / Claude Code 的 MCP 配置,密钥放在 env 里。
{ "mcpServers": { "search2ai": { "command": "npx", "args": ["-y", "search2ai", "mcp"], "env": { "SEARCH1API_KEY": "your_key" } } } } -
6查看完整配置模板
项目根目录的 .env.template 列出了所有可用环境变量,按需补充 provider 与缓存等配置。
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
SEARCH1API_KEY | 否 | Search1API 密钥,默认排在 fallback 链第一位;可换成其他 provider 的 key | your_key |
SEARCH_SERVICE | 否 | 逗号分隔的 provider 顺序,决定 fallback 链;NEWS_SERVICE / CRAWL_SERVICE 可单独覆盖 | search1api,tavily,serper |
MAX_RESULTS | 否 | 搜索结果默认返回条数;同类还有 CRAWL_RESULTS 控制抓取正文条数 | 5 |
FALLBACK_ON_EMPTY | 否 | 设为 true 时空结果也切下一家,默认只在报错、限流、超时时切换 | true |
PROVIDER_TIMEOUT_MS | 否 | 单个 provider 的超时时间,默认 15000 毫秒 | 15000 |
AUTH_KEYS | 否 | 逗号分隔的 Bearer key,配置后 /v1/* 与 /mcp 都需鉴权 | sk-xxxxxxxx |
如何确认成功
调用 gateway.search 能返回 provider 与 results 即接入成功;MCP 方式则在客户端工具列表看到 search、news、crawl。
常见问题
Q:某家搜索服务限流或报错了怎么办?
A:无需改代码,网关会按 fallback 链自动切到下一家,响应里通过 provider 告诉你这次是谁答的,warnings 记录跳过了谁及原因。
Q:必须自己申请 API Key 吗?
A:是的,项目为自带 key(BYO key)模式,不做免 key 爬虫,至少要配置一个 provider 的密钥才能真正搜到结果。
Q:不想自己部署托管服务怎么办?
A:可直接用配套的 Search1API 托管搜索服务,一个 key 聚合 Google / Bing / DuckDuckGo 等引擎,注册免费送 100 积分。
Q:Google provider 有什么额外限制?
A:使用 Google 需要同时配置 GOOGLE_KEY 与 GOOGLE_CX,并且单次查询最多返回 10 条结果。
Q:旧版客户端怎么继续用?
A:0.2.x 的「换 base URL 让客户端联网」代理仍然保留,配置 APIBASE 后即会挂载。
注意事项
- 只配置你实际要用的 provider;未指定 SEARCH_SERVICE 时,已配置的 provider 按默认优先级组成 fallback 链。
- 以上 *_KEY 变量也接受 *_API_KEY 写法,例如 TAVILY_KEY 可写成 TAVILY_API_KEY。
- SearXNG 需要自行开启 JSON 输出格式,并配置 SEARXNG_BASE_URL。
- 完整环境变量与模板参见仓库根目录的 .env.template。
核心亮点
- 支持 OpenAI、Gemini、Groq、Llama、Mistral 多家模型,切换成本低
- 基于 Function Calling 实现,不绑定特定厂商的联网插件,兼容性好
- TypeScript 编写,类型友好,方便集成到 Node.js 后端或 Serverless 环境
不足之处
- 搜索质量依赖外部搜索源,项目本身未内置搜索索引
- 文档和示例相对精简,新手接入需要一定调试成本
适用场景
- 给客服机器人加上实时产品价格和库存查询
- 让 AI 助手回答最新新闻、赛事比分等时效性问题
- 在低代码平台中快速为聊天应用接入联网检索能力
替代项目
langchain、llamaindex
项目介绍
上一篇:rank_llm
同类项目推荐
firecrawl
开源
网页抓取像喝水一样简单,开发者省下整周加班
The context API to search, scrape, and interact with the web at scale.
contoso-chat
开源
一键跑通 Azure RAG 应用,从代码到评估部署全流程
This sample has the full End2End process of creating RAG application with Prompty an···
graphify
开源
整个代码库画成一张图,找问题一眼定位
Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable k···
qiaomu-youtube-ai-podcast
开源
一站式索引AI播客,快速找到有文字稿和总结的节目
AI 播客索引:整理 AI 播客、中文简介、Transcript 状态和总结入口 | Curated AI podcast ···