Herramientas del sistema

Actualiza el estado interno de las conversaciones sin solicitudes externas.

Las herramientas del sistema permiten a tu asistente actualizar el estado interno de una conversación. A diferencia de las herramientas de webhook o las herramientas de cliente, las herramientas del sistema no realizan llamadas a API externas ni activan funciones del lado del cliente, sino que modifican el estado interno de la conversación sin realizar llamadas externas.

Descripción general

Algunas aplicaciones requieren que los agentes controlen el flujo o el estado de una conversación. Las herramientas del sistema ofrecen esta capacidad al permitir que el asistente realice acciones relacionadas con el estado de la llamada que no requieren comunicarse con servidores externos ni con el cliente.

Herramientas del sistema disponibles

Implementación

Al crear un agente mediante la API, puedes añadir herramientas del sistema a la configuración de tu agente. Así puedes implementar las herramientas para finalizar llamadas y detectar idiomas:

Integración de LLM personalizado

Al usar un LLM personalizado con agentes de ElevenLabs, las herramientas del sistema se exponen como definiciones de funciones a las que puede llamar tu LLM. Cada herramienta del sistema tiene parámetros y condiciones de activación específicos:

Herramientas del sistema disponibles

Propósito: Finalizar automáticamente las conversaciones cuando se cumplan las condiciones adecuadas.

Condiciones de activación: El LLM debe llamar a esta herramienta cuando:

  • Se haya completado la tarea principal y el usuario esté satisfecho.
  • La conversación haya llegado a una conclusión natural con acuerdo mutuo.
  • El usuario indique explícitamente que quiere finalizar la conversación.

Parámetros:

  • reason (cadena, obligatorio): El motivo para finalizar la llamada.
  • message (cadena, opcional): Un mensaje de despedida que se enviará al usuario antes de finalizar la llamada.

Formato de llamada a función:

{
"type": "function",
"function": {
"name": "end_call",
"arguments": "{\"reason\": \"Task completed successfully\", \"message\": \"Thank you for using our service. Have a great day!\"}"
}
}

Implementación: Configúrala como una herramienta del sistema en los ajustes de tu agente. El LLM recibirá instrucciones detalladas sobre cuándo llamar a esta función.

Más información: herramienta para finalizar llamadas

Objetivo: Cambiar automáticamente al idioma detectado del usuario durante las conversaciones.

Condiciones de activación: El LLM debe llamar a esta herramienta cuando:

  • El usuario habla en un idioma distinto al idioma actual de la conversación
  • El usuario solicita explícitamente cambiar de idioma
  • Se necesita compatibilidad multilingüe para la conversación

Parámetros:

  • reason (cadena, obligatorio): El motivo del cambio de idioma
  • language (cadena, obligatorio): El código de idioma al que cambiar (debe estar en la lista de idiomas compatibles)

Formato de llamada de función:

{
"type": "function",
"function": {
"name": "language_detection",
"arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
}
}

Implementación: Configura los idiomas compatibles en los ajustes del agente y añade la herramienta de sistema de detección de idioma. El agente cambiará automáticamente la voz y las respuestas para coincidir con los idiomas detectados.

Más información: herramienta de detección de idioma

Objetivo: Transferir conversaciones entre agentes de IA especializados según las necesidades del usuario.

Condiciones de activación: El LLM debe llamar a esta herramienta cuando:

  • La solicitud del usuario requiere conocimientos especializados o capacidades de otro agente
  • El agente actual no puede gestionar adecuadamente la consulta
  • El flujo de la conversación indica que se necesita otro tipo de agente

Parámetros:

  • reason (string, opcional): El motivo de la transferencia de agente
  • agent_number (integer, obligatorio): Número con índice cero del agente al que transferir (según las reglas de transferencia configuradas)

Formato de llamada de función:

{
"type": "function",
"function": {
"name": "transfer_to_agent",
"arguments": "{\"reason\": \"User needs billing support\", \"agent_number\": 0}"
}
}

Implementación: Define reglas de transferencia que asignen condiciones a ID de agentes específicos. Configura a qué agentes puede transferir el agente actual. Los agentes se identifican mediante números con índice cero en la configuración de transferencia.

Más información: herramienta de transferencia de agente

Propósito: Transferir sin interrupciones las conversaciones a operadores humanos cuando la asistencia de IA no sea suficiente.

Condiciones de activación: El LLM debe llamar a esta herramienta cuando:

  • Haya problemas complejos que requieran criterio humano.
  • El usuario solicite explícitamente asistencia humana.
  • La IA alcance los límites de sus capacidades para la solicitud específica.
  • Se activen los protocolos de escalado.

Parámetros:

  • reason (cadena, opcional): El motivo de la transferencia.
  • transfer_number (cadena, obligatorio): El número de teléfono al que transferir (debe coincidir con los números configurados).
  • client_message (cadena, obligatorio): Mensaje que se leerá al cliente mientras espera la transferencia.
  • agent_message (cadena, obligatorio): Mensaje para el operador humano que recibe la llamada.

Formato de llamada a función:

{
"type": "function",
"function": {
"name": "transfer_to_number",
"arguments": "{\"reason\": \"Complex billing issue\", \"transfer_number\": \"+15551234567\", \"client_message\": \"I'm transferring you to a billing specialist who can help with your account.\", \"agent_message\": \"Customer has a complex billing dispute about order #12345 from last month.\"}"
}
}

Implementación: Configura los números de teléfono y las condiciones de transferencia. Define mensajes tanto para el cliente como para el operador humano que recibe la llamada. Funciona con Twilio y con SIP trunking.

Más información: herramienta para transferir a un número

Objetivo: Permitir que el agente haga una pausa y espere la entrada del usuario sin hablar.

Condiciones de activación: El LLM debe llamar a esta herramienta cuando:

  • El usuario indique que necesita un momento («Dame un segundo», «Déjame pensar»)
  • El usuario solicite una pausa en el flujo de la conversación
  • El agente detecte que el usuario necesita tiempo para procesar la información

Parámetros:

  • reason (cadena, opcional): Motivo en formato libre que explica por qué es necesaria la pausa

Formato de llamada de función:

{
"type": "function",
"function": {
"name": "skip_turn",
"arguments": "{\"reason\": \"User requested time to think\"}"
}
}

Implementación: No se necesita configuración adicional. La herramienta simplemente indica al agente que permanezca en silencio hasta que el usuario vuelva a hablar.

Más información: herramienta para omitir turnos

Parámetros:

  • reason (cadena, opcional): El motivo para reproducir los tonos DTMF (p. ej., “navegar a una extensión”, “introducir PIN”)
  • dtmf_tones (cadena, obligatorio): La secuencia DTMF que se va a reproducir. Caracteres válidos: 0-9, *, #, w (pausa de 0,5 s), W (pausa de 1 s)

Formato de llamada de función:

{
"type": "function",
"function": {
"name": "play_keypad_touch_tone",
"arguments": "{"reason": "Navigating to customer service", "dtmf_tones": "2"}"
}
}

Más información: herramienta para reproducir tonos de teclado

Parámetros:

  • reason (cadena, obligatorio): El motivo para detectar el buzón de voz (por ejemplo, «se ha detectado un saludo automatizado», «no hay respuesta humana»)

Formato de llamada de función:

{
"type": "function",
"function": {
"name": "voicemail_detection",
"arguments": "{\"reason\": \"Automated greeting detected with request to leave message\"}"
}
}

Más información: herramienta de detección de buzón de voz

Objetivo: Permitir que el agente actualice una o varias variables dinámicas según la conversación, sin llamar a una API externa.

Condiciones de activación: El LLM debe llamar a esta herramienta cuando:

  • La conversación proporcione información que deba registrarse (por ejemplo, una marca de escalado, una opción elegida o un valor proporcionado por el usuario)
  • Una actualización de estado configurada dependa de un valor que el LLM deba evaluar o extraer de la conversación

Parámetros:

Los parámetros de la función dependen de cómo esté configurada la herramienta. Cada actualización de estado configurada que use un valor extraído por un LLM añade una propiedad al esquema, con el nombre de la variable dinámica de esa actualización y el tipo string, number o boolean. Las actualizaciones de estado creadas solo con constantes u otras variables dinámicas no añaden ningún parámetro.

Formato de llamada de función:

{
"type": "function",
"function": {
"name": "update_state",
"arguments": "{\"should_escalate\": true}"
}
}

Implementación: El agente evalúa cada expresión configurada usando los parámetros extraídos y las variables dinámicas actuales de la conversación, y después asigna los resultados a las variables dinámicas correspondientes. No se realiza ninguna solicitud externa.

Más información: herramienta para actualizar el estado

from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs
elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")
# Each system tool is keyed by name under built_in_tools.
# Leave "description" blank to use the default, tool-specific prompt.
response = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
prompt={
"built_in_tools": {
"end_call": {
"type": "system",
"name": "end_call",
"description": "",
"params": {"system_tool_type": "end_call"},
},
"language_detection": {
"type": "system",
"name": "language_detection",
"description": "",
"params": {"system_tool_type": "language_detection"},
},
}
},
),
),
)

Preguntas frecuentes

Sí, las herramientas del sistema se pueden usar junto con herramientas de webhook y herramientas de cliente en el mismo asistente. Esto permite una funcionalidad completa que combina la gestión del estado interno con interacciones externas.