> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# SDK Python

> **Info**
>
> Consultez également la [présentation d’ElevenAgents](/docs/fr/eleven-agents/overview)

## Installation

Installez le package Python `elevenlabs` dans votre projet :

```shell
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` :

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

> **Info**
>
> L’installation du package `pyaudio` peut nécessiter des dépendances système supplémentaires.
>
> Consultez le [README du package PyAudio](https://pypi.org/project/PyAudio/) pour plus d’informations.
>
> #### Linux
>
> Sur les systèmes basés sur Debian, vous pouvez installer les dépendances avec :
>
> ```shell
> sudo apt-get update
> sudo apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev libasound-dev libsndfile1-dev -y
> ```
>
> #### macOS
>
> Sur macOS avec Homebrew, vous pouvez installer les dépendances avec :
>
> ```shell
> brew install portaudio
> ```

## 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 :

```python
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 :

```python
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` :

```python
elevenlabs = ElevenLabs(api_key=api_key)
```

Initialisons maintenant l’instance `Conversation` :

```python
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.

```python
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()` :

```python
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 :

```python
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 :

```shell
# For public agents:
AGENT_ID=youragentid python demo.py

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