← 返回文章列表
教程

免费联网搜索 API 接入实战:给本地 Agent 装一双会查资料的眼睛

免费联网搜索 API 接入实战:给本地 Agent 装一双会查资料的眼睛

你的 Agent 卡壳,往往不是模型不够聪明,而是它不知道当下发生了什么。一个本地跑的大模型,知识停在训练截止日,你问它「今天有什么新 Models 上线」或「某个 GitHub 仓库最新的 star 数是多少」,它要么一本正经地编,要么直接承认「我的知识只到某年某月」。

联网搜索就是补上这块短板的唯一正解:让 Agent 在生成回答之前,先实时查一次外部世界。本文不讲空洞的概念(所有接入口都已收录在本站免费 API 频道),直接给你三套零成本、可落地的联网检索方案,从「零 Key 秒用」到「自建可控」,再附一段能直接抄走的 Python 接入代码。


一、先想清楚:你要的是哪种「联网」

联网检索不是一种能力,而是三种能力,落地成本和使用体验完全不同:

需求 关键词 代表方案 是否零 Key
只想快速拿到网页正文 URL → Markdown Jina Reader 是
想搜网页并返回摘要 搜索引擎 API DuckDuckGo / SearXNG 是
想给 LLM 做 RAG 检索底料 检索 + 切片 + 向量 搜索 API + Embedding 是

先确认你要哪一档。绝大多数入门场景——「让 Agent 回答时顺手上网查一下」——只需要前两档,一个 Python 函数就能搞定,不需要搭任何付费服务。


二、方案一:DuckDuckGo Instant Answer,零 Key 五分钟跑通

DuckDuckGo 提供了一套不需要注册、不需要 API Key 的即时查询接口。它背后是一个叫 DuckDuckGo Instant Answer API 的 JSON 端点,返回格式稳定,适合做轻量级的事实查询和关键词联想。

它的优点非常直白:

  1. 零 Key、零注册、零付费,curl 一下就能拿到结果;
  2. 返回的是结构化 JSON,方便程序解析;
  3. 支持关键词联想(related topics)和摘要(abstract)。

但它也有明确边界:它更适合「查一个词条 / 一个概念」的即时答案,并不适合「深度搜索全网并返回前 N 条结果」这种搜索引擎式诉求。后者需要自建聚合,也就是方案二。

一个典型的调用流程:把用户问题里的核心实体提取出来,转成查询词,打到 Instant Answer 端点,拿到 abstract 摘要和 related topics,作为 Agent 的补充上下文拼进 prompt。这样 Agent 回答事实性问题时就有据可依,而不是凭空发挥。


三、方案二:SearXNG 自建聚合搜索,可控且无广告

如果你希望 Agent 一次搜遍多个搜索引擎(Google、Bing、DuckDuckGo、Brave 等),又不想被某一家官方 API 的高价和配额绑死,SearXNG 是目前最成熟的免费自建方案。

SearXNG 是一个开源元搜索引擎:你在自己服务器上用 Docker 起一个实例,它把请求转发到多个上游引擎,聚合去重后返回 JSON 结果。它的价值有三点:

  1. 一个 JSON 接口对接所有搜索引擎,不绑定任何单一供应商;
  2. 自带隐私保护,不追踪用户,不注入广告;
  3. 支持 format=json 参数,直接返回可编程的结构化结果,天然适合 Agent 工具调用。

部署方式只需三步:拉取 SearXNG 镜像、挂一个 settings 配置、把 http://你的地址/search?q=关键词&format=json 暴露给 Agent 函数即可。唯一要注意的是实例要放在能让你的 Agent 访问到的环境里,并且按自己服务器的承受能力限制并发。


四、方案三:Jina Reader,把任意网页变干净 Markdown

很多时候 Agent 需要的不是「搜索」,而是「读懂某篇具体的文章或某个具体的页面」。这时 Jina Reader 是效率最高的选择:你在任意 URL 前面拼一个固定的前缀,它就把那个页面处理成干净的 Markdown 文本返回。

典型用法:Agent 拿到一条搜索结果的链接后,把它拼成 https://r.jina.ai/对方URL,即可获得该页面的正文 Markdown,再喂给模型做阅读理解或摘要。这对「先搜到、再精读」的两段式 Agent 工作流几乎是标配。

它同样零 Key(有基于 IP 的轻度限流,正式高频使用建议申请免费 token),返回值干净、去除了导航和广告、保留了代码块和标题层级,非常适合做 RAG 的原始语料。


五、完整接入代码(可直接抄走)

下面这段代码把「搜索 + 精读」串成一个完整的 Agent 工具函数。它接受一个查询词,先走 SearXNG 聚合搜索拿结果列表,再对前几条结果调用 Jina Reader 取正文,返回一段可直接拼进 prompt 的上下文:

import requests

SEARX = "http://localhost:8080/search"   # 你的 SearXNG 实例
JINA = "https://r.jina.ai/"               # Jina Reader 前缀

def agent_web_lookup(query: str, max_results: int = 3) -> str:
    # 第一步:聚合搜索
    resp = requests.get(SEARX, params={"q": query, "format": "json"}, timeout=15)
    resp.raise_for_status()
    results = resp.json().get("results", [])[:max_results]

    # 第二步:逐条精读正文
    chunks = []
    for r in results:
        url = r.get("url")
        if not url:
            continue
        try:
            md = requests.get(JINA + url, timeout=20).text
            chunks.append(f"## {r.get('title', '无标题')}\n来源: {url}\n{md[:4000]}")
        except Exception:
            continue

    return "\n\n".join(chunks) if chunks else "未检索到有效内容"

# 用法:把返回拼进 system 或 user prompt
ctx = agent_web_lookup("今天有哪些新发布的大模型")

这段代码的教学价值在于两点:一是展示了「聚合搜索 → 精读正文」的两段式结构,这是所有联网 Agent 的通用骨架;二是它完全免费、不依赖任何商业 Key,你可以立刻在你本地环境里跑起来,替换成你自己的 SearXNG 地址即可。


六、把搜索能力接进 Agent 的两种姿势

有了 agent_web_lookup 这个函数,怎么让它成为 Agent 能力的一部分?主流有两条路:

  1. Function Calling(工具调用):把上面的函数声明成一个工具,模型在需要实时信息时自主决定调用它,拿到结果后再组织回答。这是最自然的方式,OpenAI 兼容接口、Anthropic、以及大多数国产模型都支持。

  2. 检索增强(RAG):在用户提问前,先用搜索 API 批量拉取相关网页、切片、向量化、入库,再让模型基于检索结果回答。适合知识库 + 联网双重需求的场景。

对个人开发者来说,先用方案一的 Function Calling 把流程跑通,再决定要不要上向量库,是最省事的路径。


七、四个高频踩坑与排查

  1. 反爬封 IP:DuckDuckGo 和 SearXNG 上游对高频请求会限流。规避方式是加一个简单的重试和随机延时,或轮换请求头里的 User-Agent。

  2. 结果为空:SearXNG 某些上游引擎在国内环境不可达。排查方法是先在浏览器里直接访问你的 SearXNG 实例,看 format=json 是否正常返回,再排查网络层。

  3. 正文乱码:Jina Reader 对部分动态渲染页面抓取不全。遇到时改用「搜索结果摘要 + 标题」兜底,不要强求全文。

  4. 上下文爆表:把整篇正文塞给模型会很快耗尽上下文窗口。一定要做截断(如上面代码的 md[:4000]),只保留最相关的片段。


八、三方案横向对比(雷达图)

结论很清晰:要零成本快速验证,选 DuckDuckGo;要长期稳定可控,上 SearXNG;要精读网页内容,用 Jina Reader。 三者不是互斥关系,成熟的联网 Agent 通常「SearXNG 搜索 + Jina Reader 精读」配套使用。


九、总结与行动清单

给本地 Agent 装上网,本质是给它接通一个「实时信息入口」。你用三样免费工具就能拼出一条完整链路,总成本为零:

  1. 用 SearXNG 或 DuckDuckGo 做搜索入口;
  2. 用 Jina Reader 做正文精读;
  3. 用 Function Calling 或 RAG 把能力接进 Agent。

按本文的代码跑通第一个「搜索 → 精读 → 回答」闭环后,你的 Agent 就从「会背书的机器」升级为「会查资料的研究助理」。下一步建议你结合本地 Embedding 把检索结果持久化成知识库,实现「一次搜索、多次复用」。

需要完整的免费搜索 API 选型清单,见本站的《2026 免费 Web 搜索 API 盘点》;需要给检索结果配向量化地基,见《免费 Embedding API 完全教程》;需要一站式接入更多免费模型,见本站免费 API 首页。


十、补充:为什么推荐「先 Function Calling,后 RAG」

两者最终都能让 Agent 用上实时信息,但起步门槛差很多。Function Calling 只需一个函数声明 + 一次调用,半小时就能看到效果;RAG 则涉及切片、向量化、向量库选型、检索调优一整条链路,动辄一两天。

建议的进阶路线是:先用 Function Calling 让 Agent「能搜」,观察它实际调用搜索的频率和场景;当发现「同一批资料被反复搜索」时,再把高频结果沉淀到本地知识库,这一步才轮到 Embedding 和向量检索上场。这样每一步都有真实收益,不会一上来就陷入 RAG 工程细节。

如果不知道免费 Embedding 该选哪家,本站已有《免费 Embedding API 完全教程》做了完整实测;想一次看全免费搜索类 API 的横向盘点,见《2026 免费 Web 搜索 API 盘点》。这两篇与本篇构成「搜索 → 向量化 → 接入」的完整闭环,建议配套阅读。


相关阅读与行动入口

开始接入前,先到 免费 API 频道 查一下最新可用模型与渠道,找不到合适的再回 免费 API 频道 按分类筛选与渠道;还没有账号的话,一键 注册免费账号 即可拿到密钥。所有方案都基于 免费 API 首页 的可用入口,建议收藏 免费 API 频道 随时查看更新,遇到接口失效也先到 免费 API 频道 反馈。

相关文章

免费意图识别 API 完全教程:零成本给文本装上"听懂人话"的能力(2026-10-07 验证)免费命名实体识别(NER)API 完全教程:零成本从文本里挖出人名/地名/金额(2026-10-04 验证)免费时间序列预测 API 完全教程:零成本给销售/库存/电价装上“水晶球”(2026-10-03 验证)免费语义相似度(STS)API 完全教程:零成本给文本装上"像不像"的尺子(2026-10-02 验证)免费语音克隆(Voice Cloning)API 完全教程:用一段参考音频复刻你的专属音色

想立即用上免费 LLM API?

APIShare 聚合全球免费 AI 接口,注册即送额度。