SERP API + LangChain:10 行代码做实时搜索 Agent

SERP API + LangChain:10 行代码做实时搜索 Agent

背景

LangChain 的 agent 需要工具,Google 搜索是最常见的一个。SERP API 的/google/search包装成 LangChain Tool 只需要几行。

安装

pipinstalllangchain langchain-anthropic requests

Tool 定义

importrequestsfromlangchain.toolsimportTool API_KEY="your-serpbase-key"ENDPOINT="https://api.serpbase.dev/google/search"defserp_search(query:str)->str:r=requests.post(ENDPOINT,headers={"X-API-Key":API_KEY},json={"q":query,"gl":"us","hl":"en","num":5},timeout=10,)r.raise_for_status()data=r.json()parts=[]fori,iteminenumerate(data.get("organic",[]),1):parts.append(f"[{i}]{item['title']}\n{item['link']}\n{item.get('snippet','')}")paa=data.get("people_also_ask",[])ifpaa:parts.append("\nRelated Questions:")forqinpaa[:3]:parts.append(f"-{q.get('question',q)}")return"\n\n".join(parts)serp_tool=Tool(name="Google Search",func=serp_search,description="搜索 Google 实时结果,输入是查询关键词字符串",)

接入 Agent

fromlangchain_anthropicimportChatAnthropicfromlangchain.agentsimportinitialize_agent,AgentType llm=ChatAnthropic(model="claude-sonnet-4-5")agent=initialize_agent(tools=[serp_tool],llm=llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True,max_iterations=3,)result=agent.run("2026 年 SERP API 的最新定价是多少?")print(result)

Agent 内部会:

  1. 识别需要搜索
  2. serp_search("SERP API pricing 2026")
  3. 拿到 5 条 organic 结果
  4. LLM 总结 + citation

一个完整 demo:研究助手

defresearch(query):returnagent.run(f"用 Google 搜索回答这个问题,引用 source 用 [1] [2] 这种格式:"f"问题是:{query}")print(research("What is SerpBase?"))print(research("Cheapest SERP API 2026?"))print(research("How to monitor AI Overviews?"))

几个细节

1. Tool description 要写清楚。

LangChain agent 根据 description 判断什么时候用这个 tool。description 写"搜索 Google 实时结果,输入是查询关键词字符串"比写"google search"好得多。description 越具体,agent 越不会乱调。

2. 返回格式要 LLM-friendly。

把 JSON 转成纯文本 + 编号,LLM 解析起来更准。[1] title\nlink\nsnippet这种格式是最稳的。直接在 tool func 里拼好,不要让 LLM 解析嵌套 JSON。

3. max_iterations 卡死循环。

Agent 调 tool 后 LLM 再决定下一步,可能无限循环。设max_iterations=3防止失控。

4. timeout 设小一点。

SERP API 默认 P50 ~1.4s,但偶发 5s+。timeout=10给点 buffer,但不要太大否则 agent 等不及。

成本

研究助手 100 次 / 天 = 100 SERP 调用 = 3,000 / 月 = 0.9 美元(Starter Boost)。

LLM 部分(Claude Sonnet)按 token 计费,每次 tool 调用 + final answer 约 3,000-5,000 token,约 0.015 美元 / 次。100 次 / 天 = 1.5 美元 / 天 = 45 美元 / 月。

SERP 部分成本可忽略,大头是 LLM token。

跟直接调 API 比的差异

直接调 API:

  • 你自己写 prompt、自己管 context、自己拼 citation
  • 全控,代码量多

LangChain agent:

  • agent 自己决定什么时候调 SERP
  • 跟其他 tool(chrome、wikipedia、计算器)组合容易
  • 调试简单(verbose=True看每一步)

如果你的应用是"一个固定 RAG 流程",直接 API 更合适。如果你的应用是"开放域问答 + 多 tool 调度",LangChain 强。

6 个 endpoint 全部包装

不只是/google/search,6 个 endpoint 都能包装成 LangChain tool:

  • google_search:1 credit
  • google_images:2 credit
  • google_news:1 credit
  • google_videos:1 credit
  • google_maps_search:2 credit
  • google_maps_detail:2 credit

完整 demo 代码 + 6 endpoint 实现,在github.com/serpbase-dev/serpbase-mcp仓库(参考 MCP 实现,改一下就是 LangChain tool)。

一个高阶用法:ReAct 多步推理

# 复杂问题,agent 多次调 SERP 拼信息result=agent.run("对比 2026 年 6 月 5 家主流 SERP API 的价格和速度,""给一个综合推荐。要求每个数据点都有 source 引用。")

Agent 内部会:

  1. 调 SERP 查"SerpApi pricing 2026"
  2. 调 SERP 查"DataForSEO pricing 2026"
  3. 调 SERP 查"Serper pricing 2026"
  4. 调 SERP 查"SERP API latency benchmark 2026"
  5. 综合 4 次结果 + 自己推理 + citation

4 次 SERP 调用 = 4 credit,几乎免费。

100 次免费试用:serpbase.dev 注册,不用绑卡。