agents

Par elevenlabs · skills

Créez des agents IA vocaux avec ElevenLabs. À utiliser pour concevoir des assistants vocaux, des bots de service client, des personnages vocaux interactifs, ou toute expérience de conversation vocale en temps réel.

npx skills add https://github.com/elevenlabs/skills --skill agents

Plateforme d'Agents ElevenLabs

Construisez des agents vocaux IA avec des conversations naturelles, plusieurs fournisseurs LLM, des outils personnalisés et un intégration web facile.

Configuration : Voir le Guide d'installation pour la configuration du CLI et du SDK.

Démarrage rapide avec le CLI

Le CLI ElevenLabs est le moyen recommandé de créer et gérer des agents :

# Installer le CLI et s'authentifier
npm install -g @elevenlabs/cli
elevenlabs auth login

# Initialiser le projet et créer un agent
elevenlabs agents init
elevenlabs agents add "My Assistant" --template complete

# Envoyer vers la plateforme ElevenLabs
elevenlabs agents push

Templates disponibles : complete, minimal, voice-only, text-only, customer-service, assistant

Python

from elevenlabs import ElevenLabs

client = ElevenLabs()

agent = client.conversational_ai.agents.create(
    name="My Assistant",
    enable_versioning=True,
    conversation_config={
        "agent": {
            "first_message": "Hello! How can I help?",
            "language": "en",
            "prompt": {
                "prompt": "You are a helpful assistant. Be concise and friendly.",
                "llm": "gemini-2.0-flash",
                "temperature": 0.7
            }
        },
        "tts": {"voice_id": "JBFqnCBsd6RMkjVDRZzb"}
    }
)

JavaScript

import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
const client = new ElevenLabsClient();

const agent = await client.conversationalAi.agents.create({
  name: "My Assistant",
  enableVersioning: true,
  conversationConfig: {
    agent: {
      firstMessage: "Hello! How can I help?",
      language: "en",
      prompt: {
        prompt: "You are a helpful assistant.",
        llm: "gemini-2.0-flash",
        temperature: 0.7
      }
    },
    tts: { voiceId: "JBFqnCBsd6RMkjVDRZzb" }
  }
});

cURL

curl -X POST "https://api.elevenlabs.io/v1/convai/agents/create?enable_versioning=true" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "My Assistant", "conversation_config": {"agent": {"first_message": "Hello!", "language": "en", "prompt": {"prompt": "You are helpful.", "llm": "gemini-2.0-flash"}}, "tts": {"voice_id": "JBFqnCBsd6RMkjVDRZzb"}}}'

Démarrage des conversations

Côté serveur (Python) : Obtenir une URL signée pour la connexion client :

signed_url = client.conversational_ai.conversations.get_signed_url(
    agent_id="your-agent-id",
    environment="staging",
)

Côté client (JavaScript) :

import { Conversation } from "@elevenlabs/client";

const conversation = await Conversation.startSession({
  agentId: "your-agent-id",
  environment: "staging",
  onMessage: (msg) => console.log("Agent:", msg.message),
  onUserTranscript: (t) => console.log("User:", t.message),
  onError: (e) => console.error(e)
});

Hook React : Enveloppez les consommateurs de hook dans ConversationProvider. Préférez les hooks granulaires tels que useConversationControls et useConversationStatus pour les contrôles de session et l'état de l'interface ; useConversation reste disponible en tant que hook de commodité tout-en-un. Passez les callbacks au niveau du fournisseur tels que onError si vous souhaitez que React gère les erreurs de conversation en un seul endroit.

import {
  ConversationProvider,
  useConversationControls,
  useConversationStatus,
} from "@elevenlabs/react";

function Agent({ signedUrl }: { signedUrl: string }) {
  const { startSession, endSession } = useConversationControls();
  const { status } = useConversationStatus();

  if (status === "connected") {
    return <button onClick={endSession}>End conversation</button>;
  }

  return (
    <button onClick={() => startSession({ signedUrl })}>
      Start conversation
    </button>
  );
}

function App({ signedUrl }: { signedUrl: string }) {
  return (
    <ConversationProvider
      onError={(error) => console.error("Conversation error:", error)}
    >
      <Agent signedUrl={signedUrl} />
    </ConversationProvider>
  );
}

Configuration

Fournisseur Modèles
OpenAI gpt-5.4, gpt-5, gpt-5-mini, gpt-5-nano, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, gpt-4o, gpt-4o-mini, gpt-4-turbo
Anthropic claude-sonnet-4-6, claude-sonnet-4-5, claude-sonnet-4, claude-haiku-4-5, claude-3-7-sonnet, claude-3-5-sonnet, claude-3-haiku
Google gemini-3.1-flash-lite-preview, gemini-3.1-pro-preview, gemini-3-pro-preview, gemini-3-flash-preview, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.0-flash, gemini-2.0-flash-lite
ElevenLabs glm-45-air-fp8, qwen3-30b-a3b, qwen35-35b-a3b, qwen35-397b-a17b, gpt-oss-120b
Custom custom-llm (apportez votre propre endpoint)

Utilisez GET /v1/convai/llm/list pour inspecter le catalogue de modèles actuel, y compris l'état de dépréciation, les limites de tokens/contexte, les drapeaux de capacités tels que le support d'entrée d'images et le support d'effort de raisonnement spécifique au modèle.

Voix populaires : JBFqnCBsd6RMkjVDRZzb (George), EXAVITQu4vr4xnSDxMaL (Sarah), onwK4e9ZLuTAKqWW03F9 (Daniel), XB0fDUnXU5powFXDhCwa (Charlotte)

Impatience de réponse : patient (attend plus longtemps que l'utilisateur finisse), normal, ou eager (répond rapidement)

Voir Configuration d'agent pour toutes les options.

Outils

Étendez les agents avec des outils webhook, client ou système intégrés. Les outils sont définis dans conversation_config.agent.prompt :

Les variables d'environnement de l'espace de travail peuvent résoudre par environnement les URLs d'outils serveur, les en-têtes et les connexions d'authentification, et les variables système au moment de l'exécution telles que {{system__conversation_history}} peuvent passer le contexte de conversation complet dans les appels d'outils si nécessaire.

"prompt": {
    "prompt": "You are a helpful assistant that can check the weather.",
    "llm": "gemini-2.0-flash",
    "tools": [
        # Webhook: server-side API call
        {"type": "webhook", "name": "get_weather", "description": "Get weather",
         "api_schema": {"url": "https://api.example.com/weather", "method": "POST",
             "request_body_schema": {"type": "object", "properties": {"location": {"type": "string"}}, "required": ["location"]}}},
        # Client: runs in the browser
        {"type": "client", "name": "show_product", "description": "Display a product",
         "parameters": {"type": "object", "properties": {"productId": {"type": "string"}}, "required": ["productId"]}}
    ],
    "built_in_tools": {
        "end_call": {},
        "transfer_to_number": {"transfers": [{"transfer_destination": {"type": "phone", "phone_number": "+1234567890"}, "condition": "User asks for human support"}]}
    }
}

Outils client exécutés dans le navigateur :

clientTools: {
  show_product: async ({ productId }) => {
    document.getElementById("product").src = `/products/${productId}`;
    return { success: true };
  }
}

Voir Référence des outils client pour la documentation complète.

Intégration de widget

<elevenlabs-convai agent-id="your-agent-id"></elevenlabs-convai>
<script src="https://unpkg.com/@elevenlabs/convai-widget-embed" async type="text/javascript"></script>

Personnalisez avec les attributs : avatar-image-url, action-text, start-call-text, end-call-text.

Voir Référence d'intégration de widget pour toutes les options.

Appels sortants

Effectuez des appels téléphoniques sortants en utilisant votre agent via l'intégration Twilio :

Python

response = client.conversational_ai.twilio.outbound_call(
    agent_id="your-agent-id",
    agent_phone_number_id="your-phone-number-id",
    to_number="+1234567890",
    call_recording_enabled=True
)
print(f"Call initiated: {response.conversation_id}")

JavaScript

const response = await client.conversationalAi.twilio.outboundCall({
  agentId: "your-agent-id",
  agentPhoneNumberId: "your-phone-number-id",
  toNumber: "+1234567890",
  callRecordingEnabled: true,
});

cURL

curl -X POST "https://api.elevenlabs.io/v1/convai/twilio/outbound-call" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
  -d '{"agent_id": "your-agent-id", "agent_phone_number_id": "your-phone-number-id", "to_number": "+1234567890", "call_recording_enabled": true}'

Voir Référence des appels sortants pour les remplacements de configuration et les variables dynamiques.

Gestion des agents

Utilisation du CLI (recommandé)

# Lister les agents et vérifier le statut
elevenlabs agents list
elevenlabs agents status

# Importer les agents de la plateforme vers la configuration locale
elevenlabs agents pull                      # Importer tous les agents
elevenlabs agents pull --agent <agent-id>   # Importer un agent spécifique

# Envoyer les modifications locales vers la plateforme
elevenlabs agents push              # Télécharger les configurations
elevenlabs agents push --dry-run    # Prévisualiser les modifications d'abord

# Ajouter des outils
elevenlabs tools add-webhook "Weather API"
elevenlabs tools add-client "UI Tool"

Structure du projet

Le CLI crée une structure de projet pour gérer les agents :

your_project/
├── agents.json       # Agent definitions
├── tools.json        # Tool configurations
├── tests.json        # Test configurations
├── agent_configs/    # Individual agent configs
├── tool_configs/     # Individual tool configs
└── test_configs/     # Individual test configs

Exemples SDK

# List
agents = client.conversational_ai.agents.list()

# Get
agent = client.conversational_ai.agents.get(agent_id="your-agent-id")

# Update (partial - only include fields to change)
client.conversational_ai.agents.update(agent_id="your-agent-id", name="New Name")
client.conversational_ai.agents.update(agent_id="your-agent-id",
    conversation_config={
        "agent": {"prompt": {"prompt": "New instructions", "llm": "claude-sonnet-4"}}
    })

# Delete
client.conversational_ai.agents.delete(agent_id="your-agent-id")

Voir Configuration d'agent pour toutes les options de configuration et les exemples SDK.

Gestion des erreurs

try:
    agent = client.conversational_ai.agents.create(...)
except Exception as e:
    print(f"API error: {e}")

Erreurs courantes : 401 (clé invalide), 404 (non trouvé), 422 (configuration invalide), 429 (limite de débit dépassée)

Références

Skills similaires