SDK Python

SDK ElevenAgents : déployez en quelques minutes des agents vocaux interactifs et personnalisés.

Consultez également la présentation d’ElevenAgents

Installation

Installez le package Python elevenlabs dans votre projet :

pip install elevenlabs
# or
poetry add elevenlabs

Si vous souhaitez utiliser l’implémentation par défaut de l’entrée ou de la sortie audio, vous aurez également besoin de l’extra pyaudio :

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

L’installation du package pyaudio peut nécessiter des dépendances système supplémentaires.

Consultez le README du package PyAudio pour plus d’informations.

Sur les systèmes basés sur Debian, vous pouvez installer les dépendances avec :

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

Utilisation

Dans cet exemple, nous allons créer un script simple qui exécute une conversation avec l’agent ElevenLabs Agents.

Commencez par importer les dépendances nécessaires :

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

Chargez ensuite l’ID de l’agent et la clé API depuis les variables d’environnement :

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

La clé API est requise uniquement pour les agents non publics dont l’authentification est activée. Vous n’avez pas besoin de la définir pour les agents publics, et le code fonctionnera parfaitement sans elle.

Créez ensuite l’instance client ElevenLabs :

elevenlabs = ElevenLabs(api_key=api_key)

Initialisons maintenant l’instance 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}"),
)

Nous utilisons DefaultAudioInterface, qui utilise les périphériques d’entrée et de sortie audio par défaut du système pour la conversation. Vous pouvez également implémenter votre propre interface audio en créant une sous-classe de elevenlabs.conversational_ai.conversation.AudioInterface.

Nous pouvons maintenant démarrer la conversation. Facultativement, nous vous recommandons de transmettre vos propres ID d’utilisateurs finaux afin d’associer les conversations à vos utilisateurs.

conversation.start_session(
user_id=user_id # optional field
)

Pour obtenir un arrêt propre lorsque l’utilisateur appuie sur Ctrl+C, nous pouvons ajouter un gestionnaire de signal qui appellera end_session() :

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

Enfin, nous attendons la fin de la conversation et affichons l’ID de la conversation, qui peut servir à examiner l’historique de la conversation et à déboguer :

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

Il ne reste plus qu’à exécuter le script et à commencer à parler avec l’agent :

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