SDK de Python

SDK de ElevenAgents: implementa agentes de voz personalizados e interactivos en minutos.

Instalación

Instala el paquete de Python elevenlabs en tu proyecto:

pip install elevenlabs
# or
poetry add elevenlabs

Si quieres usar la implementación predeterminada de entrada/salida de audio, también necesitarás el extra pyaudio:

pip install "elevenlabs[pyaudio]"
# or
poetry add "elevenlabs[pyaudio]"

La instalación del paquete pyaudio puede requerir dependencias adicionales del sistema.

Consulta el README del paquete PyAudio para más información.

En sistemas basados en Debian puedes instalar las dependencias con:

sudo apt-get update
sudo apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev libasound-dev libsndfile1-dev -y

Uso

En este ejemplo crearemos un script sencillo que ejecuta una conversación con el agente de ElevenLabs Agents.

Primero, importa las dependencias necesarias:

import os
import signal
from elevenlabs.client import ElevenLabs
from elevenlabs.conversational_ai.conversation import Conversation
from elevenlabs.conversational_ai.default_audio_interface import DefaultAudioInterface

A continuación, carga el ID del agente y la clave de API desde las variables de entorno:

agent_id = os.getenv("AGENT_ID")
api_key = os.getenv("ELEVENLABS_API_KEY")

La clave de API solo es necesaria para agentes no públicos que tienen la autenticación activada. No es necesario configurarla para agentes públicos y el código funcionará correctamente sin ella.

Después, crea la instancia de cliente ElevenLabs:

elevenlabs = ElevenLabs(api_key=api_key)

Ahora inicializamos la instancia Conversation:

conversation = Conversation(
# API client and agent ID.
elevenlabs,
agent_id,
# Assume auth is required when API_KEY is set.
requires_auth=bool(api_key),
# Use the default audio interface.
audio_interface=DefaultAudioInterface(),
# Simple callbacks that print the conversation to the console.
callback_agent_response=lambda response: print(f"Agent: {response}"),
callback_agent_response_correction=lambda original, corrected: print(f"Agent: {original} -> {corrected}"),
callback_user_transcript=lambda transcript: print(f"User: {transcript}"),
# Uncomment if you want to see latency measurements.
# callback_latency_measurement=lambda latency: print(f"Latency: {latency}ms"),
# Uncomment if you want to receive audio alignment data with character-level timing.
# callback_audio_alignment=lambda alignment: print(f"Alignment: {alignment.chars}"),
)

Usamos DefaultAudioInterface, que utiliza los dispositivos predeterminados de entrada/salida de audio del sistema para la conversación. También puedes implementar tu propia interfaz de audio creando una subclase de elevenlabs.conversational_ai.conversation.AudioInterface.

Ahora podemos iniciar la conversación. Opcionalmente, recomendamos pasar tus propios ID de usuario final para asociar las conversaciones a tus usuarios.

conversation.start_session(
user_id=user_id # optional field
)

Para realizar un cierre limpio cuando el usuario pulsa Ctrl+C, podemos añadir un controlador de señales que llamará a end_session():

signal.signal(signal.SIGINT, lambda sig, frame: conversation.end_session())

Por último, esperamos a que termine la conversación e imprimimos el ID de la conversación (que puede usarse para revisar el historial de la conversación y depurar):

conversation_id = conversation.wait_for_session_end()
print(f"Conversation ID: {conversation_id}")

Solo queda ejecutar el script y empezar a hablar con el agente:

# For public agents:
AGENT_ID=youragentid python demo.py
# For private agents:
AGENT_ID=youragentid ELEVENLABS_API_KEY=yourapikey python demo.py