Herramientas
Una herramienta (tool) amplía las capacidades del modelo usando herramientas integradas y servidores MCP remotos (Model Context Protocol), además de conectores como búsqueda web, lectura de archivos, APIs de terceros o tus propias funciones.
En esta página aprenderás qué son las tools, cómo declararlas, cómo se invocan, y mejores prácticas para diseñarlas de forma segura y confiable.
🚀 ¿Qué es una tool?
Una tool es una capacidad externa que el modelo puede invocar para:
Buscar en la web o en tus datos.
Llamar funciones propias (APIs internas).
Acceder a servicios de terceros (pagos, clima, CRM, etc.).
Coordinarse con MCP servers que exponen comandos remotos.
El modelo decide cuándo y con qué argumentos llamar una tool, según tu prompt y el esquema que declares.
🧩 Tipos de herramientas
function
Llamada a función con JSON Schema.
Clima, CFDI, CURP, consultas a DB, integraciones internas.
Web / Búsqueda
Conectores para resultados recientes.
Noticias, documentación pública, verificación.
Archivos
Recuperación y lectura de documentos.
PDFs, CSV, bases de conocimiento.
MCP Server
Comandos remotos vía Model Context Protocol.
Herramientas distribuidas/aisladas, plugins de equipo.
🏗️ Declarar una tool (function)
function)Para realizar un llamado a tools en nuestra API, sigue estos pasos:
Define un nombre, descripción y un schema de parámetros (
JSON Schema).Marca los campos requeridos.
Evita
additionalPropertiessi quieres máxima validación.
Ejemplo :
🔁 Ciclo de llamada a tool (overview)
El usuario pregunta → el modelo detecta que necesita datos externos.
El modelo propone una llamada a la función (con
name+argumentsen JSON).Tu runtime ejecuta la función real (API/DB) usando esos argumentos.
Devuelves el resultado como mensaje de
tool(string JSON o texto).El modelo continúa la conversación usando ese resultado.
Importante: valida en tu servidor los
argumentsantes de ejecutar la acción.
📦 Formato de la respuesta de la tool
El contenido debe ser serializable (JSON o texto claro).
Incluye campos estables y mensajes de error con códigos reutilizables.
Respuesta sugerida (éxito)
Respuesta sugerida (error)
🛡️ Seguridad y buenas prácticas
Validación estricta de entrada (respeta el
JSON Schema).Idempotencia para operaciones que puedan reintentarse.
Tiempos de espera razonables (timeouts) y reintentos con exponential backoff.
Registro (logging) sin PII sensible. Enmascara datos cuando corresponda.
Rate limits: si tu tool llama APIs externas, implementa control local y respeta encabezados como
retry-after.Versionado: versiona tus funciones (
obtener_clima_v2) para cambios incompatibles.
🧪 Pruebas: patrones recomendados
Unit tests para:
Conversión de argumentos del modelo → función.
Validaciones y manejo de errores.
Formato de la respuesta de tool.
Tests de contrato entre tool y el modelo (entradas/salidas esperadas).
Mocks para servicios externos.
🔧 Manejo de errores y retry-after
retry-afterSi una API externa devuelve HTTP 429 con encabezado retry-after, respeta el tiempo indicado antes de reintentar. Esto evita bloqueos y mantiene saludable tu integración.
📚 Plantilla mínima de una tool (servidor)
🧭 Consejos de diseño
Un propósito claro por tool: evita funciones “multiuso” demasiado generales.
Descripciones ricas: ayuda al modelo a saber cuándo llamar la tool.
Ejemplos en el prompt del sistema: fomentan el uso correcto.
Campos canónicos:
ok,data,error.code,error.message,hint,meta.Observabilidad: registra latencia, tasas de acierto y errores por tool.
✅ Checklist de publicación
Última actualización