Skip to content

Agentes

De qué se compone un agente de Raíz, cuándo está listo para hablar con pacientes, su configuración y cómo cambiarlo con seguridad.

Actualizado

Un agente es la IA que habla con tus pacientes por ti. Le dices en palabras sencillas cuál es su trabajo y qué no debe hacer nunca, le das documentos para consultar y herramientas para buscar información en tus sistemas, y lo pones en un número de teléfono, un número de WhatsApp o el chat de tu sitio web. Responde ahí, y un agente de voz también puede llamar a personas para una campaña. En la app de Raíz, los agentes se llaman Trabajadores.

Para crear uno paso a paso, sigue Crear un agente. Esta página explica sus partes.

Voz o texto

Cada agente tiene una modality, que se elige al crearlo:

modality Habla en Cómo abre la conversación
voice Llamadas telefónicas, entrantes y salientes. firstMessage: lo que dice cuando se conecta una llamada.
text WhatsApp y chat web. En WhatsApp, settings.greeting decide cómo responde a un contacto que abre una conversación. Una conversación que tu organización inicia en WhatsApp se abre con una plantilla aprobada.

La modalidad debe corresponder al canal: los agentes de voz atienden números de teléfono, y los agentes de texto, números de WhatsApp y chat web. Solo puede cambiar mientras el agente no tenga canales ni una línea de voz publicada; si no, la actualización responde 409 AGENT_MODALITY_LOCKED.

De qué se compone un agente

Campo Qué es
name Hasta 120 caracteres. Obligatorio, junto con modality.
instructions Su trabajo en palabras sencillas: su rol, lo que puede y no puede hacer, la información en la que se apoya. Hasta 100.000 caracteres.
firstMessage Agentes de voz: lo primero que dice cuando se conecta una llamada, entrante o saliente.
language, timeZone Una etiqueta de idioma BCP 47, como es-CO, y una zona horaria IANA, como America/Bogota.
status active o paused. Un agente en pausa no responde nada ni hace llamadas.
settings Cómo se comporta. Consulta Configuración.
knowledgeDocumentIds Hasta 100 documentos de Conocimiento que consulta.
integrationTools Hasta 200 herramientas de tus integraciones que puede llamar. Consulta Herramientas y skills.
integrationSkills Agentes de texto: hasta 32 skills que publican tus conexiones.
skills Agentes de texto: hasta 32 procedimientos propios, de 256 KiB en total.
description Texto libre, hasta 2000 caracteres.

Un agente también informa sus channels (hasta 50, cada uno con su tipo y su estado), channelCount, toolCount y version.

Listo y sincronizado

Dos campos dicen si un agente puede trabajar:

  • ready es true cuando puede sostener conversaciones: está active, tiene instrucciones y, si es un agente de voz, está publicado para llamadas.
  • synced dice si las llamadas ya usan su versión actual. Un agente de voz se publica en sus líneas telefónicas en segundo plano después de cada cambio; hasta que synced sea true, las llamadas usan la versión anterior, y syncErrorCode da el error del último intento. Corregir la causa, como un voiceId inválido o la falta de instrucciones, lo vuelve a publicar. Los agentes de texto siempre están synced.
curl -s "https://api.getarbol.com/v1/raiz/agents/agt_01jd8x5k2m7q9r3t6v8w0y4z1b" \
  --header "Authorization: Bearer $ARBOL_API_KEY" \
  | jq '.data | {status, ready, synced, syncErrorCode, version}'

Configuración

settings contiene cómo se comporta el agente. Los ajustes de texto aplican solo a los agentes de texto, y los de voz, solo a los agentes de voz; un ajuste que no corresponde a la modalidad, o que contradice a otro, responde 422 AGENT_SETTINGS_INVALID. En una actualización, settings es el valor nuevo completo: las claves que omitas vuelven a su valor por defecto. Algunos de ellos:

Ajuste Agentes Qué hace
model Texto El nivel que escribe las respuestas: arbolito/agile (el predeterminado; el más rápido y económico), arbolito/balanced, arbolito/advanced o arbolito/top (el más capaz).
reasoningEffort Texto Cuánto deliberan arbolito/advanced y arbolito/top, de none a xhigh. Un nivel que no razona lo rechaza.
greeting Texto, WhatsApp Cómo responde a un contacto que abre una conversación que nadie ha respondido todavía. Su type es message (un texto fijo), businessApp (el saludo que envía la app WhatsApp Business) o instructions (instrucciones adicionales para su primera respuesta).
followUpAfterMinutes, followUpMessage Texto Cuando fue el último en hablar y preguntó algo, escribir una vez más después de esta cantidad de minutos de silencio (solo WhatsApp, dentro de su ventana de 24 horas).
sessionCloseAfterMinutes Texto Cerrar una conversación después de esta cantidad de minutos sin mensajes. Por defecto: 1440 en WhatsApp, 30 en chat web.
humanEscalation.instructions Ambos Cuándo pedirle a tu equipo que intervenga. Una solicitud explícita de hablar con una persona siempre se respeta.
handoffMessage Texto, WhatsApp El aviso que se agrega después de pasarle la conversación a tu equipo. Un texto vacío desactiva el aviso; el traspaso igual ocurre.
automaticKnowledge Texto Buscar Conocimiento relevante antes de responder un mensaje con contenido sustancial, no solo cuando el agente busca.
monthlyTokenBudget Texto Un límite mensual de tokens. En WhatsApp, cuando se agota, el contacto lee budgetExhaustedMessage y la conversación pasa a tu equipo.
evalGate Texto, WhatsApp Exigir una ejecución de evaluación aprobada antes de que entre en vigor un cambio en lo que lee el modelo.
voice.voiceId Voz Una voz de raiz.voices.list, que filtra las voces por language y enlaza muestras para escuchar.
voice.llm Voz El nivel con el que piensa en las llamadas, de los mismos cuatro.
voice.recordCalls Voz Guardar la grabación de cada llamada.
voice.redactKeypadInput Voz Reemplazar por <REDACTED> los números marcados en el teclado del teléfono en las transcripciones y los análisis guardados, para las llamadas futuras. El agente igual recibe los dígitos. Desactivado por defecto.
voice.maxDurationSeconds Voz Lo máximo que puede durar una llamada. Por defecto: 600 segundos.

La referencia lista todos los ajustes, como humanReplyTimeoutMinutes: cuándo se reanudan las respuestas automáticas después de que una persona toma un chat de WhatsApp.

Herramientas y skills

  • Herramientas de integración. Cada entrada empareja un connectionId con una tool que ofrece esa conexión, tal como las lista account.connections.list. Raíz guarda cada herramienta con su definición en ese momento, su digest y su effect: read solo consulta, write puede cambiar datos. Si la herramienta de la conexión cambia después, el agente conserva la definición guardada hasta que lo vuelvas a guardar. Una herramienta que no está en la conexión, o que Raíz no puede ejecutar, responde 422 INTEGRATION_TOOL_UNAVAILABLE.
  • Las skills de integración son skills que publica una conexión, guardadas con su texto en ese momento. Sus nombres deben ser distintos de los de las skills propias del agente.
  • Las skills son tus propios procedimientos, cada una con un name, una description de una línea, sus instructions y hasta 16 resources de referencia. El agente carga una cuando la necesita. Las skills nunca le dan más herramientas a un agente ni ejecutan scripts.

Para algo temporal, como un día sin citas, publica una novedad en lugar de cambiar las instrucciones.

Versiones y actualizaciones seguras

Cada agente lleva una version. Envía la que leíste como expectedVersion a raiz.agents.update: el cambio se aplica solo si nadie cambió el agente desde entonces, y si no, responde 409 VERSION_CONFLICT, así que vuelve a leerlo y aplica de nuevo tu cambio. Los campos que omites se quedan como están; settings, integrationTools, integrationSkills, skills y knowledgeDocumentIds reemplazan el valor completo.

Con settings.evalGate activado, una actualización que cambia lo que lee el modelo (instrucciones, skills, skills de integración, model o reasoningEffort) también debe enviar evalRunId: una ejecución de evaluación completada de exactamente ese contenido en la que pasaron todos los casos. Si no, responde 409 EVAL_GATE_UNMET.

Operaciones

Operación Qué hace
raiz.agents.create Crea un agente. No es idempotente: después de un resultado desconocido, lista los agentes antes de intentarlo de nuevo.
raiz.agents.get Lee la configuración completa de un agente por agentId.
raiz.agents.list Busca agentes por status, modality o q (el nombre), del más reciente al más antiguo.
raiz.agents.update Cambia un agente. "status": "paused" hace que deje de responder y de llamar.
raiz.voices.list Busca una voz para un agente de voz.
raiz.channels.update Pone el agente en un canal. Consulta Canales.

Todas están en la referencia de Agents, y la guía Crear un agente muestra cada solicitud y sus errores.

Escribe para buscar…

↑↓ navegar↵ seleccionarEsc cerrar