For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Délégation et outils dans GPT-Live

Connectez un agent backend et transmettez des résultats vérifiés à la conversation en temps réel.

GPT-Live délègue le raisonnement et l’utilisation des outils à un backend tout en gérant la conversation orale. Le travail du backend peut être exécuté par le modèle Responses configuré ou, avec la délégation au client, par tout modèle, agent ou service exploité par votre application. Dans les deux modes, votre application reste responsable des autorisations, des confirmations, des données métier et de l’état des tâches.

Pour en savoir plus sur la façon de guider le modèle en temps réel pour la délégation et l’utilisation des outils, consultez le guide de conception de prompts.

Choisissez un mode de délégation

Avec la délégation via Responses, GPT-Live appelle le modèle Responses de votre choix, lui fournit le contexte de la conversation et transmet les résultats du backend à la conversation en temps réel. Avec la délégation au client, votre application prépare le contexte, exécute un agent ou un workflow et renvoie les résultats à GPT-Live.

Commencez par la délégation via Responses si son workflow géré répond à vos besoins. Choisissez la délégation au client si vous avez besoin de mieux contrôler le contexte du backend, l’exécution ou les résultats renvoyés à GPT-Live.

CritèrePrivilégiez la délégation via Responses lorsque…Privilégiez la délégation au client lorsque…
Effort de mise en œuvreVous souhaitez que GPT-Live prépare les requêtes destinées au backend, gère les connexions et transmette les résultats à la conversation.Vous souhaitez développer et exploiter vous-même ces composants.
Révision des résultats du backendLes résultats du backend peuvent être renvoyés directement à GPT-Live.Votre application doit valider, expurger, combiner ou écarter les résultats avant qu’ils ne parviennent à GPT-Live.
Capacités du backendLes paramètres et outils Responses pris en charge par GPT-Live conviennent à votre workflow.Vous avez besoin d’un autre backend, de plusieurs modèles ou de capacités d’API qui dépassent la configuration gérée.
Maîtrise du contexteLe contexte de conversation fourni par GPT-Live convient à votre application.Vous devez choisir précisément les éléments de l’historique, de la mémoire et de l’état de l’application à inclure dans chaque requête au backend.
Politique d’exécutionUn modèle configuré et une boucle d’utilisation des outils conviennent à la tâche.Vous avez besoin d’un routage personnalisé entre code et modèles, de solutions de repli, de points de contrôle ou de budgets pour les différentes étapes du backend.

Par exemple, un assistant de voyage peut envoyer les questions sur le statut des vols à un service de compagnie aérienne et les modifications d’itinéraire à un agent de planification distinct. L’application choisit le backend à appeler et le résultat vérifié à renvoyer à GPT-Live.

Dans les deux modes, votre application gère l’état des tâches, fait respecter les autorisations et exige les confirmations requises avant d’exécuter ses outils personnalisés. La révision des résultats du backend relève d’une décision distincte : elle n’approuve pas chaque mot prononcé par GPT-Live et ne garantit pas son silence pendant la validation. Consultez Contrôlez la lecture si nécessaire.

La délégation au client exige également que votre application maintienne le contexte de la conversation. L’événement de délégation contient des métadonnées, et non le texte de la tâche ; utilisez les événements de transcription et l’état de l’application pour préparer la requête au backend.

Comparez la latence, la réussite des tâches et le coût sur votre propre charge de travail lorsque vous évaluez votre agent vocal. Pour des conseils adaptés à votre architecture existante, consultez Migrez vers GPT-Live.

Choisissez le mode lors de la création de la session ; pour en changer, démarrez une nouvelle session.

Mode de délégation

Configurez la délégation à Responses

Ajoutez cette configuration de délégation lors de la création de votre session Live. Choisissez le modèle Responses indépendamment du modèle vocal :

export const session = {
  model: "gpt-live-1",
  delegation: {
    type: "responses",
    responses: {
      model: "gpt-5.6-terra",
      instructions: "[Your backend prompt]",
    },
  },
};

Commencez avec GPT-5.6 Terra, ou essayez GPT-5.6 Luna pour les charges de travail où le coût est déterminant. Comparez la qualité des réponses et la latence sur vos tâches avant de choisir un modèle pour le backend.

Déclarez les outils pris en charge dans delegation.responses.tools. Utilisez delegation.responses.tool_choice pour contrôler les outils que le backend peut utiliser : "auto" le laisse choisir, "required" impose un appel d’outil et "none" l’interdit. Vous pouvez aussi sélectionner une fonction par son nom. Définissez delegation.responses.parallel_tool_calls sur true pour autoriser les recherches indépendantes en parallèle, ou sur false lorsque les appels doivent s’exécuter séquentiellement. Votre application reste responsable de l’exécution de ses fonctions personnalisées et du respect des dépendances et des approbations. Ces paramètres ne forcent pas le modèle vocal à déléguer.

La configuration Responses exige de définir le paramètre model du backend à la création. Elle prend en charge les définitions function et les entrées web_search dans tools. Elle expose également max_output_tokens (au moins 16 si ce paramètre est défini), service_tier, ainsi que les paramètres reasoning et text pris en charge par le modèle de backend sélectionné. Consultez Réduisez la latence du backend pour connaître les paramètres que vous pouvez ajuster.

Si le mode Rapide est disponible pour votre modèle et votre projet, envisagez de l’utiliser pour les appels sensibles à la latence. Pour GPT-Live, sélectionnez-le avec delegation.responses.service_tier: "priority".

À mesure que la conversation évolue, envoyez session.update avec les modifications dans session.delegation.responses pour mettre à jour le modèle du backend, les instructions, les outils disponibles, tool_choice ou d’autres paramètres pris en charge sans démarrer une nouvelle session Live. Les paramètres omis conservent leur valeur. Définir delegation sur null sélectionne le mode client et ne permet pas de réinitialiser une session Responses en cours ; le changement de mode échoue avec immutable_field_update.

Ces paramètres reprennent des concepts familiers de Responses, mais Live ne prend en charge qu’un sous-ensemble de l’API Responses autonome. Live fournit le contexte de la conversation et lance les tâches déléguées. Configurez le backend via la session ; la commande Live response.create utilise cette configuration et n’accepte pas de corps de requête Responses autonome.

Orientez la conversation en direct depuis votre application

La délégation à Responses gère le workflow du backend, mais votre application peut toujours envoyer du contexte directement au modèle GPT-Live. Si vous suivez l’appel via une connexion WebSocket auxiliaire ou la connexion principale aux événements, vous pouvez utiliser session.instructions.append, session.thinking.append ou session.commentary.append avec delegation_id: null. Par exemple, un garde-fou fondé sur la transcription peut ajouter une instruction pour réorienter la conversation. Cela oriente le modèle vocal, sans modifier le prompt du backend Responses ni annuler les tâches déjà en cours.

Gérez la délégation à Responses

Pour les tâches exécutées via Responses, session.delegation.created contient target: "responses" et un response_id. Les événements Responses suivants arrivent dans une enveloppe response.event :

{
  "type": "response.event",
  "event_id": "event_response_1",
  "delegation_id": "item_9tA2cB6n2V8c4X1z7Q5r9",
  "event": {
    "type": "response.output_text.delta",
    "sequence_number": 4,
    "item_id": "msg_123",
    "output_index": 0,
    "content_index": 0,
    "delta": "The forecast is",
    "logprobs": []
  }
}

Aiguillez les événements selon envelope.event.type et conservez le champ delegation_id de l’enveloppe externe. Ne traitez pas chaque valeur response.* de premier niveau comme un événement Responses sans enveloppe. Prévoyez la réception d’événements imbriqués supplémentaires du cycle de vie Responses.

La parole en direct et les tâches déléguées se poursuivent indépendamment. Une réponse du backend terminée ne signifie pas à elle seule que l’utilisateur a entendu la réponse. Utilisez la transcription de sortie et l’audio de Live pour la partie orale de l’interaction.

Menez à terme un appel de fonction à exécuter par le client

Récupérez les appels de fonction complets dans les événements response.output_item.done imbriqués. L’élément de fonction finalisé contient call_id, name et arguments ; un événement signalant la fin des arguments ne suffit pas à lui seul à identifier l’appel.

Suivez l’identifiant de réponse issu de l’événement response.created imbriqué, ainsi que le champ delegation_id de l’enveloppe externe, et collectez les appels de fonction de cette réponse à partir de response.output_item.done. Les instantanés du cycle de vie transmis contiennent délibérément response.output: [], y compris lors de response.completed ; leur tableau tools est vide, instructions vaut null et input est omis. Une liste de sortie vide à l’état final ne signifie pas qu’aucun appel de fonction n’est en attente. Utilisez les appels collectés pour déterminer quels résultats doivent être envoyés avant de poursuivre.

Après avoir exécuté l’opération autorisée, ajoutez le résultat sous forme d’élément Responses :

export function sendUpdate(connection) {
  connection.send({
    type: "response.item.create",
    event_id: "tool_result_1",
    item: {
      type: "function_call_output",
      call_id: "call_123",
      output: '{"status":"confirmed","order_id":"order_123"}',
    },
  });
}

Déclenchez ensuite explicitement la poursuite de la réponse :

export function sendUpdate(connection) {
  connection.send({
    type: "response.create",
    event_id: "continue_1",
  });
}

Envoyez tous les résultats requis pour les appels d’outils en attente avant de poursuivre. L’ajout d’un résultat de fonction ne relance pas automatiquement la réponse. response.item.create n’émet pas d’accusé de réussite distinct ; continuez à traiter les erreurs et les événements imbriqués du cycle de vie de la réponse qui suivent.

response.create est une commande Live qui permet de créer ou de poursuivre des tâches déléguées à Responses en utilisant le backend configuré pour la session. Ne joignez à cet événement ni corps de requête de création de l’API Responses, ni remplacement du modèle de backend, ni delegation_id. Les deux commandes nécessitent la délégation à Responses.

Partez de votre prompt backend existant

Utilisez le prompt de votre agent textuel existant comme point de départ. Conservez ses instructions de tâche et ses règles métier côté backend, et adaptez les instructions qui supposent une discussion textuelle ou un contrôle direct de la parole. Expliquez comment traiter les transcriptions vocales et renvoyer des résultats utiles. Faites respecter les autorisations et les confirmations requises dans votre application.

## Voice conversation context
You are helping an assistant in a live voice conversation. Transcripts
can contain mistakes, unfinished phrases, and later corrections. Use
the latest context and verified records. If a needed detail is still
unclear, ask for that detail instead of guessing.

## Task instructions
[Your task instructions, business rules, available tools,
and confirmation requirements.]

## Return the result
Return the relevant facts, whether the task is complete, and what comes next.
Use confirmed values. Do not invent a successful action.

Conservez les grands volumes de données structurées, les longues sorties d’outils et le Markdown destiné à l’affichage côté backend. Fournissez à GPT-Live les faits pertinents et laissez-le choisir comment les exprimer. Un résultat d’outil concis ne nécessite pas d’appel supplémentaire à un modèle pour l’adapter à l’oral.

Avec la délégation côté client, renvoyez le résultat directement à GPT-Live. Avec la délégation via Responses, suivez la procédure de retour des résultats de fonction pour poursuivre le travail côté backend.

Les exemples d’événements du SDK ci-dessous utilisent connection, une connexion WebSocket Live principale ou une connexion auxiliaire établie selon les guides de connexion. Appelez la fonction utilitaire après session.started sur une connexion principale ; une connexion auxiliaire rattachée appartient déjà à une session en cours.

Envoyez le type de mise à jour approprié

Choisissez un événement selon la manière dont GPT-Live doit utiliser le contenu :

Ce que vous souhaitez envoyerÉvénement
Instructions système destinées au modèle Live, comme une salutation, une mention d’information ou une consigne d’arrêter de parlersession.instructions.append
Informations destinées au raisonnement interne, non énoncées lors de l’ajout, mais utilisables pour répondre aux questions pertinentes de l’utilisateursession.thinking.append
Informations que le modèle doit énoncer à voix haute en reformulant le texte ajoutésession.commentary.append

Les trois utilisent un champ content contenant une simple chaîne de caractères, limitée à 500 tokens par ajout. Incluez delegation_id : utilisez l’identifiant de la délégation côté client d’origine pour une mise à jour concernant cette tâche, ou null pour le contexte général de la session. Un identifiant non nul doit désigner une délégation côté client connue. Les instructions s’appliquent toujours à la session Live ; un identifiant ne les transforme pas en un prompt backend distinct.

Une instruction ajoutée peut interrompre la prise de parole ou le comportement en cours du modèle. Utilisez-la lorsque l’application doit réorienter la conversation ; faites respecter tout blocage associé d’un outil ou d’une action dans l’état de l’application.

Pour signaler l’avancement sans prise de parole pendant une tâche gérée côté client :

export function sendUpdate(connection) {
  connection.send({
    type: "session.thinking.append",
    event_id: "availability_progress",
    delegation_id: "item_123",
    content: "Checking Thursday availability. No appointment has been booked.",
  });
}

Pour une réservation confirmée, envoyez le résultat que l’utilisateur doit entendre :

export function sendUpdate(connection) {
  connection.send({
    type: "session.commentary.append",
    event_id: "appointment_result",
    delegation_id: "item_123",
    content: "Your appointment is confirmed for Thursday at 2:00 PM",
  });
}

N’envoyez ce résultat qu’une fois la réservation effectivement réussie. Pour une instruction qui s’applique à toute la session, utilisez session.instructions.append avec delegation_id: null.

Par exemple, une fois que votre application a bloqué une demande en application de ses garde-fous, vous pouvez réorienter la conversation :

export function sendUpdate(connection) {
  connection.send({
    type: "session.instructions.append",
    event_id: "guardrail_block_17",
    delegation_id: null,
    content:
      "Stop speaking about that request. Briefly explain that you cannot help with it, then wait for the user.",
  });
}

L’instruction n’annule pas le travail côté backend. Bloquez l’action concernée et gérez les opérations déjà en cours dans votre application.

Les accusés de réception correspondants sont session.thinking.appended, session.commentary.appended et session.instructions.appended. Faites correspondre leur client_event_id à votre event_id sortant. L’accusé de réception attend le moment estimé de l’injection du contexte, pas la fin de la prise de parole ou de la lecture audio. Consultez la section sur le moment où le contexte parvient au modèle pour en savoir plus sur les délais et la gestion des erreurs.

Le contexte non énoncé peut tout de même influencer ce que le modèle dira par la suite. Ce n’est pas un espace privé où placer des secrets ou des raisonnements cachés. Envoyez des faits utiles et de brefs résumés de l’avancement.

Fournissez des mises à jour exactes et utiles

Pendant les tâches plus longues, envoyez une mise à jour lorsqu’un changement utile survient : une étape se termine, un délai devient significatif ou l’utilisateur doit répondre à une question.

Utilisez session.thinking.append pour signaler l’avancement en arrière-plan en mode client. Utilisez session.commentary.append lorsqu’il est utile d’énoncer la mise à jour à voix haute.

Pour les mises à jour vocales, envoyez session.commentary.append avec un contenu qui correspond à l’état vérifié de la tâche :

ÉtatExemple de contenu
En cours« I'm checking the available appointments. »
Terminé« You're booked for Thursday at 2:00 PM. »
Échec« That time is no longer available. »
Annulation confirmée« Your appointment has been canceled. »

Une interruption vocale n’annule pas automatiquement le travail côté backend. Si l’utilisateur remplace vendredi par jeudi, mettez à jour la tâche active et ignorez les résultats concernant vendredi qui arrivent tardivement. Votre application doit décider s’il faut annuler le travail, le modifier ou le laisser se terminer. Vérifiez que l’annulation a réussi avant de l’annoncer.

Avant de réessayer un appel d’outil qui a échoué, vérifiez si l’action d’origine a déjà eu lieu. Par exemple, une réponse perdue ne doit pas entraîner une deuxième réservation. Si le résultat est incertain, dites-le et proposez la prochaine étape utile.

Partagez le contexte de l’interface

Fournissez à GPT-Live un résumé concis de la page ou de la tâche en cours, des sélections pertinentes et des faits qui aident à interpréter des références comme « cette option ». Construisez le résumé directement à partir de l’état de l’application ; aucun appel supplémentaire à un modèle n’est nécessaire pour le mettre en forme.

Envoyez le contexte de l’interface au début de la session et lorsque des éléments pertinents de son état changent. N’envoyez pas de mise à jour si rien n’a changé, et regroupez les changements rapides dans un bref résumé du dernier état. Indiquez explicitement les modifications apportées aux sélections précédentes :

  • Contexte initial : « The user is reviewing a restaurant reservation: August 6 at 7 PM, two guests. No reservation has been made. »
  • Correction : « The selected time is now 8 PM; the previous selection was 7 PM. »

Dans les deux modes de délégation, utilisez session.thinking.append avec delegation_id: null pour les mises à jour du contexte en arrière-plan. Conservez le HTML complet, les arbres DOM, les grands volumes de données JSON et les journaux d’interaction dans votre application ou votre backend. Traitez le contenu des pages comme des données de référence, pas comme des instructions.

Acceptez la saisie au clavier

Si un interlocuteur saisit une valeur exacte, comme un numéro de commande, transmettez-la au backend qui gère la tâche. Une application exclusivement vocale n’a pas besoin de ce mécanisme. Traitez la valeur saisie comme une donnée utilisateur, et non comme une instruction destinée au modèle Live.

Avec la délégation via Responses, mettez en file d’attente un message utilisateur destiné au backend :

export function sendUpdate(connection) {
  connection.send({
    type: "response.item.create",
    event_id: "typed_order_number",
    item: {
      type: "message",
      role: "user",
      content: [
        {
          type: "input_text",
          text: "My order number is A0042.",
        },
      ],
    },
  });
}

Envoyez response.create lorsque vous êtes prêt à lancer ou à poursuivre le traitement du backend. Si celui-ci attend des résultats de fonctions, renvoyez d’abord tous les résultats requis. La mise en file d’attente de texte n’annule pas à elle seule le travail déjà en cours.

Ajoutez des images et du contexte visuel

Pour aider votre interlocuteur à discuter d’une photo ou d’un écran, envoyez l’image et le contexte pertinent depuis votre application à un backend doté de capacités de vision. Le backend interprète l’image et renvoie du texte pertinent que GPT-Live peut utiliser dans la conversation. Le frontend audio de Live n’accepte pas directement les images.

Avec la délégation à Responses, configurez un modèle backend doté de capacités de vision. Mettez en file d’attente un élément d’entrée image pris en charge par Responses avec response.item.create, puis envoyez response.create pour lancer ou reprendre le traitement du backend. Renvoyez tous les résultats de fonctions requis encore en attente avant de continuer. Consultez Gérez la délégation à Responses.

Séparez les images envoyées au backend de session.input, qui fournit au frontend de Live un historique textuel au démarrage. Consultez Images et vision pour connaître les formats d’image pris en charge et les limites des modèles.

Réduisez la latence du backend

Réduisez le délai entre une demande de traitement au backend et l’obtention d’un résultat utile à la conversation. Mesurez la latence à chaque étape pour repérer les retards. Comparez le délai d’obtention d’une réponse vocale utile et la réussite des tâches sur les mêmes scénarios. Consultez le Cookbook sur l’évaluation des agents vocaux pour des conseils d’évaluation.

Délégation à Responses

Live gère les connexions WebSocket persistantes à Responses, prépare à l’avance la connexion et les paramètres connus de la requête, et réutilise l’état des réponses précédentes lorsqu’il est disponible. Vous n’avez pas besoin d’implémenter ces étapes pour le backend hébergé. La réutilisation dépend de la connexion active et de la compatibilité de l’état ; elle ne garantit ni un accès au cache réussi ni une latence précise.

Ajustez les paramètres du backend via delegation.responses :

  • model : choisissez le modèle chargé du raisonnement et de la sélection des outils indépendamment du modèle vocal.
  • reasoning.effort : trouvez le bon équilibre entre le temps de raisonnement et la qualité d’exécution de la tâche, en utilisant les valeurs prises en charge par ce modèle.
  • service_tier : utilisez auto, default, flex ou priority, selon la prise en charge par le modèle et les accès du projet. auto suit la configuration du projet. Évaluez les performances et le coût de l’offre choisie.

Mettez à jour les paramètres pris en charge pendant la session avec session.update. Vos outils personnalisés s’exécutent toujours dans votre application : les appels lents aux services, les files d’attente et la mise en mémoire tampon des résultats d’outils peuvent donc retarder la réponse, même lorsque Live gère la connexion à Responses. Renvoyez rapidement chaque résultat d’outil requis et poursuivez la réponse du backend.

Réagissez aux fragments de transcription

Le traitement des fragments de transcription dans votre application est facultatif et fonctionne avec les deux modes de délégation. Les fragments de transcription de l’utilisateur et de l’assistant arrivent par WebSocket ou par le canal de données WebRTC. Vous pouvez les traiter avec la logique de l’application ou un modèle léger pour commencer le travail avant l’arrivée d’un événement de délégation, ou utiliser la transcription elle-même pour déclencher un traitement géré par l’application.

Utilisez cette approche pour :

  • Réduisez l’attente. Lancez une recherche anticipée dès que vous disposez de suffisamment d’informations, par exemple pour vérifier les disponibilités pendant que l’utilisateur continue à décrire ses préférences.
  • Appliquez les garde-fous. Analysez la transcription au fil de son enrichissement pour repérer les demandes ou les réponses qui nécessitent une intervention. Consultez Appliquez des garde-fous à la conversation.
  • Adaptez la conversation. Repérez les formulations qui suggèrent de la confusion ou de la frustration, puis adaptez l’expérience ou envoyez une instruction ciblée.
  • Mettez à jour l’interface. Mettez en évidence les commandes pertinentes, préremplissez les champs suggérés ou affichez les résultats dès qu’ils sont disponibles.

Pour les applications dans le navigateur, utilisez le canal de données WebRTC pour les sous-titres et les mises à jour locales de l’interface. Lorsque le traitement de la transcription s’exécute sur votre serveur, que ce soit pour les garde-fous, les vérifications par un modèle léger ou les appels d’outils anticipés, utilisez une connexion WebSocket auxiliaire pour recevoir les événements et piloter directement la même session GPT-Live.

Traitez le texte accumulé lorsque de nouvelles informations significatives arrivent. Un fragment peut être incomplet, et la suite des propos peut modifier la demande. Écartez les résultats obsolètes, coordonnez ce traitement avec le travail délégué ultérieur pour éviter les actions en double, et appliquez vos vérifications habituelles des permissions et des confirmations avant les actions ayant des conséquences.

Pour réinjecter des informations dans la conversation :

ObjectifÉvénement
Modifiez le comportement du modèle en direct ou réorientez la conversationsession.instructions.append
Fournissez du contexte non énoncé pour les réponses suivantessession.thinking.append
Fournissez les informations que le modèle doit énoncer à voix hautesession.commentary.append

Pour les mises à jour en dehors d’une délégation au client, utilisez delegation_id: null. Ces ajouts orientent le modèle en direct ; votre application contrôle les modifications de l’interface, l’exécution des outils et l’annulation. Consultez Envoyez le bon type de mise à jour pour des exemples d’ajouts.

Optimisations communes

Les deux modes de délégation bénéficient des mêmes améliorations du backend :

  • Choisissez le modèle et l’effort de raisonnement adaptés à la tâche. Comparez les configurations qui répondent à vos exigences de précision. Utilisez un effort de raisonnement plus faible lorsqu’il permet d’accomplir la tâche de manière fiable.
  • Gardez les réponses concises. Renvoyez les faits et l’état dont GPT-Live a besoin pour poursuivre la conversation. Évitez les longues explications et les appels supplémentaires au modèle qui servent uniquement à reformuler les résultats pour l’oral.
  • Réduisez les délais liés aux outils et les appels inutiles. Lancez le travail autorisé dès que ses entrées sont prêtes, réutilisez les résultats tant qu’ils restent valides et évitez de répéter une recherche déjà effectuée.
  • Exécutez les tâches indépendantes en parallèle. Les appels de recherche indépendants peuvent s’exécuter simultanément. Respectez les dépendances et les confirmations requises pour les actions. parallel_tool_calls permet à un modèle de demander plusieurs appels ; votre application reste chargée de planifier et d’exécuter ses fonctions personnalisées.

Consultez Optimisation de la latence pour des conseils généraux sur Responses et Mise en cache des prompts pour réutiliser les entrées stables.

Vérifiez l’interaction de bout en bout

Testez à la fois l’état de l’application qui fait autorité et l’audio lu par le client. Une réponse du backend peut se terminer alors que l’énoncé du résultat est interrompu, et un accusé de réception du contexte confirme son acceptation, pas sa lecture audio. Gardez les identifiants d’opération et les révisions de tâches distincts des identifiants de délégation afin que les reconnexions, les nouvelles tentatives et les résultats tardifs ne répètent ni n’annulent une action.

Consultez Évaluation des agents vocaux pour des tests reproductibles. Pour une boucle d’outils Realtime ou un backend chaîné existants, suivez le guide Migrez vers GPT-Live.