Una publicación de r/ZaiGLM preguntaba: ¿alguien puede utilizar web_search con GLM? GLM acepta la forma de llamada de herramientas OpenAI, por lo que cualquier API de búsqueda HTTP se conecta. Este tutorial conecta a Scavio como una herramienta.
Requisitos previos
- Clave API GLM (Zhipu)
- Clave API de Scavio
- Python 3.10+
Guia paso a paso
Paso 1: Instalar zhipuai
SDK oficial de Python.
pip install zhipuaiPaso 2: Definir una función de herramienta Scavio
Función simple, devuelve JSON.
import os, requests
def scavio_search(query: str) -> dict:
return requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'query': query}).json()Paso 3: Registrar herramienta con GLM
Esquema de herramientas estilo OpenAI.
tools = [{
'type': 'function',
'function': {
'name': 'scavio_search',
'description': 'Live web search — SERP results plus AI Overview citations',
'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
}
}]Paso 4: Llame a GLM con lista de herramientas
Finalización de chat estándar con herramientas.
from zhipuai import ZhipuAI
client = ZhipuAI(api_key=os.environ['GLM_API_KEY'])
resp = client.chat.completions.create(
model='glm-4-plus',
messages=[{'role': 'user', 'content': 'best mcp practices 2026'}],
tools=tools,
)Paso 5: Manejar llamadas de herramientas
Si GLM devuelve tool_calls, ejecute scavio_search y envíe comentarios.
for tc in resp.choices[0].message.tool_calls or []:
if tc.function.name == 'scavio_search':
args = json.loads(tc.function.arguments)
result = scavio_search(args['query'])
# Feed result back as tool message and re-call GLM.Ejemplo en Python
# GLM agent now has live web search. Per-call cost: $0.0043 Scavio + GLM tokens.Ejemplo en JavaScript
// Same shape in TS using the OpenAI SDK with GLM's base_url.Salida esperada
GLM agent responds to time-sensitive questions with grounded answers. Without the tool, GLM falls back to training-data knowledge.