背景
LangChain 的 agent 需要工具,Google 搜索是最常见的一个。SERP API 的 /google/search 包装成 LangChain Tool 只需要几行。
安装
pip install langchain langchain-anthropic requests
Tool 定义
import requests
from langchain.tools import ToolAPI_KEY = "your-serpbase-key"
ENDPOINT = "https://api.serpbase.dev/google/search"def serp_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 = []for i, item in enumerate(data.get("organic", []), 1):parts.append(f"[{i}] {item['title']}\n{item['link']}\n{item.get('snippet', '')}")paa = data.get("people_also_ask", [])if paa:parts.append("\nRelated Questions:")for q in paa[: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
from langchain_anthropic import ChatAnthropic
from langchain.agents import initialize_agent, AgentTypellm = 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 内部会:
- 识别需要搜索
- 调
serp_search("SERP API pricing 2026") - 拿到 5 条 organic 结果
- LLM 总结 + citation
一个完整 demo:研究助手
def research(query):return agent.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 creditgoogle_images:2 creditgoogle_news:1 creditgoogle_videos:1 creditgoogle_maps_search:2 creditgoogle_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 内部会:
- 调 SERP 查"SerpApi pricing 2026"
- 调 SERP 查"DataForSEO pricing 2026"
- 调 SERP 查"Serper pricing 2026"
- 调 SERP 查"SERP API latency benchmark 2026"
- 综合 4 次结果 + 自己推理 + citation
4 次 SERP 调用 = 4 credit,几乎免费。
100 次免费试用:serpbase.dev 注册,不用绑卡。
