Herramientas (function calling)
Define funciones HTTP que el bot llama cuando hace falta.
Las herramientas son funciones HTTP que el bot puede llamar cuando hace falta — para consultar stock real, agendar en tu calendario, crear órdenes en tu ERP. Replai usa function calling de cada proveedor LLM (Anthropic, OpenAI, DeepSeek, Gemini) bajo la misma interfaz.
Estructura de una herramienta
{
"name": "getStock",
"description": "Consulta el stock disponible de un SKU en la sucursal indicada.",
"method": "POST",
"urlTemplate": "https://tu-erp.com/api/stock",
"headers": { "x-api-key": "{{env.ERP_KEY}}" },
"bodyTemplate": {
"sku": "{sku}",
"warehouse": "{warehouse}"
},
"parameters": {
"sku": { "type": "string", "description": "Código del producto (ej. BSH-GBH-2-26)." },
"warehouse": { "type": "string", "enum": ["CCS", "VAL", "BAQ"] }
},
"timeoutMs": 30000
}Cómo el bot decide llamar
El LLM ve la lista de herramientas como parte del system prompt. Cuando interpreta que el usuario necesita información que NO está en el knowledge base, decide llamar la función correcta y pasa los parámetros que extrajo del mensaje.
Flujo:
- Mensaje cliente: "¿tienen el rotomartillo Bosch en Valencia?"
- LLM decide:
getStock(sku=BSH-GBH-2-26, warehouse=VAL). - Replai resuelve los placeholders, hace POST a tu ERP.
- Tu ERP responde
{"stock": 3}. - El LLM ve esa respuesta y formula la contestación al cliente: "Sí, tenemos 3 en Valencia. ¿Te lo envío?"
Placeholders
Los templates de URL, headers y body soportan dos tipos de placeholder:
{nombre_del_parámetro}— viene del LLM, basado en lo que extrajo del mensaje.{{env.NOMBRE}}— viene de las variables de entorno de tu tool (las defines en el dashboard). Útil para API keys.
Validación de inputs
El campo parameters es JSON Schema. Replai valida que el LLM no invente tipos ni valores inválidos antes de hacer la llamada HTTP.
Límites + recuperación
- Timeout: 30s por llamada (configurable hasta 60s).
- Max iteraciones: 3 por mensaje. Si tras 3 ciclos el LLM sigue queriendo llamar tools, le pasamos el fallback.
- Errores: 4xx/5xx se devuelven al LLM como contexto. Él decide si reintentar (otro parámetro) o escalar.
Ejemplos reales
| Caso | Tool típica |
|---|---|
| Ferretería | getStock(sku), quotePrice(sku, qty) |
| Clínica | getAvailability(doctorId, date), bookAppointment(...) |
| E-commerce | trackOrder(orderId), checkCart(phone) |
| Inmobiliaria | searchProperties(zone, maxPrice), scheduleVisit(...) |
Seguridad
- Las API keys de tus tools se guardan cifradas con AES-256-GCM bajo
AUTH_STATE_KEK. - Los placeholders se escapan antes de inyectarse en el body para evitar inyección si tu API es ingenua.
- Recomendamos que tus endpoints validen un header propio que solo Replai conoce — no confíes en que la request vino de "alguien autorizado" solo por la URL.