LLM заморожены на момент завершения обучения и галлюцинируют о недавних фактах. Предоставление агенту инструмента поиска Google решает обе проблемы — а дешёвый синхронный SERP API вроде serp.cheap идеально подходит в качестве бэкенда, потому что задержка предсказуема, а стоимость одного вызова достаточно низкая, чтобы работать в масштабе агента.
Инструмент поиска (простая функция)
import requests
def google_search(query: str, country: str = "us") -> str:
"""Search Google and return the top results as text."""
data = requests.post(
"https://api.serp.cheap/v1/search",
headers={"X-API-Key": "YOUR_KEY"},
json={"q": query, "gl": country},
timeout=30,
).json()
return "\n".join(
f'{r["position"]}. {r["title"]} — {r["link"]}\n {r.get("snippet","")}'
for r in data["organic"]
)
С API вызова инструментов OpenAI
tools = [{
"type": "function",
"function": {
"name": "google_search",
"description": "Search Google for up-to-date information.",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string"},
"country": {"type": "string", "default": "us"},
},
"required": ["query"],
},
},
}]
# When the model calls google_search, run the function above and return its
# output as the tool result, then let the model answer with citations.
С LangChain
from langchain.tools import Tool
search_tool = Tool(
name="google_search",
description="Search Google for current information.",
func=lambda q: google_search(q),
)
# Add search_tool to your agent's tool list.
Почему serp.cheap подходит агентам
- Синхронность — ответы ~2 с, не нужно оркестрировать асинхронную очередь внутри вызова инструмента.
- Дёшево в масштабе — агенты порождают множество поисковых запросов; $0.0006/вызов (половина из кэша) сохраняет стоимость прогонов доступной.
- Реальный google.com + цитаты — возвращайте ссылки, которые модель может цитировать, а не результаты из закрытого индекса.