Integraciones
Herramientas de agente personalizadas
Dé a la IA acceso en tiempo real a sus sistemas: defina herramientas que el LLM puede llamar durante la generación de respuestas para obtener el estado de pedidos, consultar cuentas, verificar inventario y más.
Datos rápidos#
| Tipos de herramienta | SERVER_SIDE (llamada HTTP desde HelpStack) o CLIENT_SIDE (se ejecuta en el navegador del visitante) |
| Gestionadas mediante | Panel de control + /api/agent-tools (nivel de organización), /api/channels/[id]/agent-tools (nivel de canal) |
| Autenticación | Sesión del panel (las configura su equipo) |
| Tiempo de espera de herramienta de servidor | ~10s, respuesta limitada a ~10 KB |
| Tiempo de espera de herramienta de cliente | ~5s (round-trip por socket) |
| Registro | Cada llamada se registra en ToolCallLog |
Para la visión conceptual, consulte la guía de herramientas de agente. Esta página es la referencia técnica.
Anatomía de una herramienta#
Una definición de herramienta tiene estos campos:
| Campo | Requerido | Notas |
|---|---|---|
| Name | sí | El nombre de función que llama el LLM, p. ej. get_order_status. Debe ser un identificador de función válido |
| Description | sí | El LLM lo lee para decidir cuándo llamar a la herramienta. Máx ~2000 caracteres (validado). Sea específico |
| URL | sí (lado servidor) | Debe ser HTTPS. Protegida contra SSRF: una lista de bloqueo rechaza objetivos de red interna/privada |
| Method | no | GET | POST | PUT | PATCH. Por defecto POST |
| Headers | no | Objeto JSON opcional. Puede cifrarse/enmascararse (úselo para claves de API/tokens) |
| Parameters Schema | sí | Un objeto JSON Schema que describe los argumentos que el LLM rellena (parametersSchema) |
| Type | sí | SERVER_SIDE o CLIENT_SIDE |
| Active | — | Interruptor para activar/desactivar la herramienta sin eliminarla |
Ejemplo práctico — get_order_status (SERVER_SIDE)#
Definición de la herramienta
| Campo | Valor |
|---|---|
| Name | get_order_status |
| Type | SERVER_SIDE |
| Method | POST |
| URL | https://api.YOURCOMPANY.com/orders/status |
| Headers | { "Authorization": "Bearer YOUR_API_TOKEN" } (almacenar como cabecera cifrada) |
| Description | Look up the current status and tracking info for a customer order by its order number. Call this whenever the customer asks where their order is, when it will arrive, or to confirm an order was placed. |
Esquema de parámetros (JSON Schema)
{
"type": "object",
"properties": {
"order_number": {
"type": "string",
"description": "The customer's order number, e.g. ORD-10432"
}
},
"required": ["order_number"]
}
Solicitud que recibe su endpoint
En una llamada a la herramienta, HelpStack envía los argumentos proporcionados por el LLM como cuerpo de la solicitud (para POST/PUT/PATCH), con sus cabeceras configuradas más Content-Type: application/json:
POST /orders/status HTTP/1.1
Host: api.YOURCOMPANY.com
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{ "order_number": "ORD-10432" }
Contrato de respuesta que debe respetar su endpoint
Devuelva JSON que el modelo pueda leer. Manténgalo pequeño — las respuestas están limitadas a ~10 KB y la llamada expira en ~10s.
{
"status": "shipped",
"carrier": "DHL",
"tracking_number": "JD0140...",
"estimated_delivery": "2026-06-02"
}
La IA recibe este payload como resultado de la herramienta y lo incorpora en su respuesta. No hay un envoltorio requerido — devuelva los campos que sean útiles, pero hágalos autodescriptivos para que el modelo los use correctamente.
Cómo escribir buenas descripciones#
La descripción es el campo más importante — es lo único que usa el LLM para decidir si y cuándo llamar a la herramienta.
- Indique qué devuelve la herramienta y cuándo llamarla ("Llama a esto cuando el cliente pregunte ...").
- Mencione las frases que los clientes realmente usan.
- Describa cada parámetro claramente en el
descriptionde su esquema. - Mantenga el límite de ~2000 caracteres (el diálogo de guardado valida y muestra errores).
Seguridad y protección contra SSRF#
- Solo HTTPS. Las URLs HTTP sin cifrar son rechazadas.
- Lista de bloqueo SSRF. Los objetivos de red interna/privada (loopback, rangos RFC1918 privados, enlace local, endpoints de metadatos) están bloqueados para que una herramienta no pueda apuntar a infraestructura interna.
- Cabeceras secretas. Ponga claves de API/tokens en Headers, que pueden cifrarse/enmascararse en lugar de almacenarse en texto plano.
- Trate el endpoint de la herramienta como accesible desde Internet — autentique las solicitudes (p. ej. un token bearer en Headers) y valide la entrada en su lado.
Tiempos de espera y límites#
| Lado servidor | Lado cliente | |
|---|---|---|
| Tiempo de espera | ~10s | ~5s |
| Límite de respuesta | ~10 KB | — |
| En caso de fallo/tiempo de espera | Registrado; la IA es informada de que la herramienta no está disponible y continúa con la mejor respuesta que pueda dar |
Los fallos degradan con elegancia — una herramienta rota o lenta nunca bloquea una respuesta; la IA simplemente continúa sin esos datos.
Herramientas de organización vs. de canal + filtrado semántico#
- Las herramientas pueden definirse a nivel de organización y a nivel de canal.
- Para una conversación dada, las herramientas de nivel de organización y de canal se fusionan, y una herramienta de canal reemplaza a una herramienta de organización con el mismo nombre.
- El conjunto fusionado se filtra semánticamente por relevancia para la consulta del cliente, de modo que un catálogo grande de herramientas no sobrecarga cada llamada al LLM — solo se ofrecen las herramientas relevantes.
- Las herramientas seleccionadas se convierten en definiciones de función de OpenAI/Anthropic y se ofrecen durante la generación de respuestas.
Importación desde OpenAPI#
Puede crear herramientas a partir de una API existente: pegue o suba una especificación OpenAPI 3.0 y HelpStack extrae sus operaciones en definiciones de herramienta que usted revisa y guarda. Esta es la forma más rápida de exponer una API REST existente a la IA.
Registro#
Cada llamada a una herramienta se registra en ToolCallLog. Vea el historial de llamadas de una herramienta (argumentos, resultado, tiempo) mediante:
GET /api/agent-tools/[id]/logs
Use los registros para depurar por qué una herramienta fue o no fue llamada, y para detectar tiempos de espera/errores.
Herramientas del lado del cliente (avanzado)#
Las herramientas CLIENT_SIDE se declaran de la misma manera (nombre, descripción, esquema de parámetros) pero se ejecutan en el navegador del visitante del sitio web, mediadas por el socket del widget:
- La IA emite una llamada a herramienta para una herramienta
CLIENT_SIDE. - El servidor emite
tool:executeal widget. - El widget la ejecuta y responde con
tool:result(otool:error). - Hay un tiempo de espera de ~5s; en caso de tiempo de espera la llamada degrada con elegancia (herramienta no disponible).
No existe una API JS pública para registrar manejadores de herramientas del lado del cliente en el loader del widget hoy en día. La ejecución del lado del cliente está mediada por el servidor/iframe — trátela como una capacidad avanzada y no espere un fragmento estilo
registerTool()en su página. Consulte Inserción del widget.