一聚教程网:一个值得你收藏的教程网站

热门教程

从 0 搭一个 SERP API + LLM Agent 端到端实战(2026年7月)

时间:2026-08-03 12:06:57 编辑:袖梨 来源:一聚教程网

我之前做的 AI Agent 跑生产 6 个月,现在把完整搭建过程复盘一遍。

从 0 搭一个 SERP API + LLM Agent 端到端实战(2026年7月)

从环境到部署,5 步搭起来一个能问实时问题的 AI Agent。

1. 技术选型

组件选择理由
LLMgpt-4o / claude-sonnet-4-5综合能力
SERP APIserpbase价格低 + 数据完整 + AI 集成好
后端Python FastAPI异步支持好
前端Gradio快速 demo
部署Docker + Vercel简单

成本结构:gpt-4o 输入 2.5/1M+serpbase2.5/1M + serpbase 0.30/1k = 一次问答 $0.012。

2. Step 1:申请 SERP API key

去 serpbase.dev 注册,送 100 次免费调用,不用绑卡。

拿 API key 后存环境变量:

 复制代码export SERPBASE_API_KEY=your-keyexport OPENAI_API_KEY=sk-...

3. Step 2:核心代码

完整代码 80 行:

 复制代码import osimport requestsfrom openai import OpenAIclass SearchAgent:def __init__(self):        self.serp_key = os.environ['SERPBASE_API_KEY']        self.openai = OpenAI()    def search(self, query: str) -> dict:        r = requests.post(            'https://api.serpbase.dev/google/search',            headers={'X-API-Key': self.serp_key},            json={'q': query, 'hl': 'zh-CN', 'gl': 'cn', 'num': 10},            timeout=(2, 5)        )        r.raise_for_status()        return r.json()def format_context(self, serp: dict) -> str:        lines = ['## 搜索结果']for i, item inenumerate(serp.get('organic', [])[:5], 1):            lines.append(f"[{i}] {item['title']}n{item['snippet'][:80]}n来源: {item['link']}")return 'n'.join(lines)def ask(self, question: str) -> str:        serp = self.search(question)        if not serp.get('organic'):return "暂未找到相关信息"        context = self.format_context(serp)        prompt = f"""基于以下搜索结果回答问题,只引用事实。{context}问题: {question}"""        r = self.openai.chat.completions.create(            model='gpt-4o',            messages=[{'role': 'user', 'content': prompt}],            temperature=0,            timeout=15        )        return r.choices[0].message.contentif __name__ == '__main__':    agent = SearchAgent()    print(agent.ask('2026 年 Q2 上海 GDP'))

4. Step 3:Web UI(Gradio)

10 行加 UI:

 复制代码import gradio as grdef chat(question):return SearchAgent().ask(question)demo = gr.Interface(    fn=chat,    inputs=gr.Textbox(label="问题"),    outputs=gr.Textbox(label="答案"),    title="实时搜索 AI Agent")demo.launch()

跑起来:python app.py,浏览器开 。

5. Step 4:错误处理

直接跑会发现 3 个常见错误,加上去:

 复制代码def search(self, query):try:        r = requests.post(..., timeout=(2, 5))        r.raise_for_status()        return r.json()except requests.Timeout:# 降级 1: stale cache        cached = get_stale_cache(query)        return cached or {'organic': []}except requests.HTTPError as e:if e.response.status_code == 429:# 降级 2: 等待 Retry-After            time.sleep(int(e.response.headers.get('Retry-After', 1)))return self.search(query)  # 重试 1 次raisedef ask(self, question):    serp = self.search(question)    if not serp.get('organic'):return "暂未找到相关信息,你可以:n1. 加时间词(如 '2026')n2. 加地域词n3. 换个说法"# ... LLM 调用

6. Step 5:部署

Docker 化:

 复制代码FROM python:3.11-slimWORKDIR /appCOPY requirements.txt .RUN pip install -r requirements.txtCOPY . .CMD ["python", "app.py"]

部署到 Vercel / Railway / 自己的 VPS。

7. 性能优化

跑起来后,几个常见优化:

缓存。同 query 5 分钟内复用:

 复制代码import redisr = redis.Redis()def cached_search(query):    key = hashlib.md5(query.encode()).hexdigest()    cached = r.get(key)    if cached:return json.loads(cached)    data = search(query)    r.setex(key, 300, json.dumps(data))return data

并发。多用户同时问,用 asyncio:

 复制代码async defask_async(question):    serp = await search_async(question)return await llm_async(question, serp)

token 压缩。SERP JSON 太大,只取前 5 条 + 截 snippet 80 字符。

8. 测试

写几个测试 query 验证:

 复制代码test_queries = [    ('2026 年 Q2 上海 GDP', '2026'),    ('BTC 实时价格', 'BTC'),    ('今日新闻头条', None),  # 模糊 query]for q, expected in test_queries:    answer = agent.ask(q)    print(f"Q: {q}nA: {answer}n")

9. 监控

跑生产后,盯 3 个指标:

 复制代码from prometheus_client import Counter, Histogramrequests_total = Counter('agent_requests_total', 'Total requests')latency = Histogram('agent_latency_seconds', 'Latency')@latency.time()def ask(question):    requests_total.inc()    return agent.ask(question)

Grafana 看板,3 个面板:请求量 / 延迟 / 错误率。

10. 30 天数据

跑下来:

  1. 平均问答延迟 3.2s
  2. 月成本 serpbase 1.5+OpenAI1.5 + OpenAI 75 = $76.5
  3. 答案准确率 91%(人工评估 200 条)
  4. 0 故障

整套从 0 到生产,1 个工程师 1 天搭完。

11. 进阶方向

跑起来后,可以扩展:

  1. 多轮对话:加 memory 模块
  2. 工具调用:Agent 决定要不要搜(ReAct)
  3. 多模态:支持图片搜索(Lens 端点)
  4. 本地 SEO:加 Maps 端点
  5. 企业版:加用户系统 + 配额管理

我下一步上 ReAct 多轮搜索,预计准确率能到 94%。

12. 完整代码

完整代码 + 部署文档放 GitHub,clone 就能跑。serpbase 注册后 5 分钟接好,1 小时搭完整个 Agent。

热门栏目