Choisissez le modèle Realtime avec lequel vous développez votre application. Pour GPT-Live, consultez Conception de prompts pour GPT-Live.
gpt-realtime-2 est notre modèle vocal de pointe doté de capacités de raisonnement, conçu pour les applications parole à parole à faible latence. Il peut réfléchir avant de parler, suivre les instructions de manière plus fiable, utiliser une fenêtre de contexte plus large et appeler des outils avec davantage de précision que les modèles Realtime précédents.
Pour profiter de ces améliorations, concevez des prompts aux intentions plus précises. Définissez explicitement les responsabilités de l’assistant, les décisions qu’il doit prendre, son comportement d’appel d’outils et ses garde-fous : ce qu’il doit faire, quand il doit le faire et ce qu’il doit éviter.
Commencez simplement. Ne surchargez pas le prompt dès le départ. Partez d’un prompt minimal, lancez des évaluations, puis ajoutez des instructions uniquement pour les comportements qui échouent lors des tests.
Choisissez un modèle
| Modèle | À utiliser lorsque | Priorités pour la conception des prompts |
|---|---|---|
gpt-realtime-2 | Vous avez besoin des meilleures capacités de raisonnement, d’utilisation des outils et de suivi des instructions en temps réel. | Ajustez l’effort de raisonnement, les préambules, les règles d’utilisation des outils, la capture exacte des entités et la gestion de l’état lors des longues sessions. |
gpt-realtime-1.5 | Vous avez besoin d’un modèle parole à parole rapide et fiable, sans raisonnement. | Suivez la structure de base des prompts Realtime et testez les comportements sensibles à la latence. |
Guide de conception de prompts pour Realtime 2.0
Utilisez gpt-realtime-2 lorsque l’agent vocal a besoin de meilleures capacités de
raisonnement, de sélection d’outils, de traitement exact des entités ou de gestion de l’état lors des longues sessions.
Commencez avec reasoning.effort: "low", testez le comportement par défaut des préambules
et définissez clairement les cas nécessitant une confirmation avant toute action d’écriture.
Ce qui change dans Realtime 2
Concevez les prompts de Realtime 2 pour un agent vocal capable de raisonner, et non pour un simple bot vocal.
| Changement | Conséquences pour les prompts |
|---|---|
| Raisonnement | Laissez le modèle raisonner en interne pour les tâches complexes avant de parler ou d’appeler des outils. Utilisez des préambules pour éviter les silences gênants ou les paroles de remplissage inutiles. |
| La précision des prompts compte davantage | Remplacez les consignes générales comme « soyez utile » par des règles claires précisant les déclencheurs, les actions et les exceptions : quand agir, quoi faire et quand s’en abstenir. |
| Les conflits entre instructions ont un coût plus élevé | Supprimez les règles qui se recoupent et utilisent always, never, only et must, sauf si elles sont réellement nécessaires. Définissez les priorités lorsque des règles entrent en concurrence. |
| L’utilisation des outils se guide plus finement | Précisez quand l’assistant doit agir immédiatement, demander les informations manquantes, faire confirmer les détails exigeant une grande précision, réessayer après un échec ou passer le relais. |
| Les préambules sont un comportement à part entière | Le modèle peut donner de brèves indications orales avant une phase de raisonnement ou une séquence d’utilisation d’outils plus longue. Précisez quand produire des préambules, quelle longueur maximale leur donner et quand les omettre. |
| Fenêtre de contexte élargie | gpt-realtime-2 fait passer la fenêtre de contexte en temps réel de 32 000 à 128 000 tokens, ce qui le rend mieux adapté aux longues sessions et aux prompts système plus volumineux. |
Les préambules ne sont pas le raisonnement détaillé (« chain-of-thought ») caché du modèle. Ce sont de brèves indications orales, comme « Je vais vérifier cette commande maintenant. » Ne demandez pas au modèle de révéler son raisonnement privé.
Structure de prompt recommandée
Utilisez des sections courtes avec des titres. Le modèle doit pouvoir trouver rapidement les instructions pertinentes.
# Role and Objective
# Personality and Tone
# Language
# Reasoning
# Message Channels
# Preambles
# Verbosity
# Tools
# Unclear Audio
# Entity Capture
# Long Context Behavior
# EscalationTous les cas d’usage n’exigent pas toutes les sections. Ajoutez celles qui sont pertinentes pour votre produit.
Réglez l’effort de raisonnement
gpt-realtime-2 peut raisonner plus en profondeur au prix d’une latence accrue. Utilisez le niveau de raisonnement le plus bas qui offre à l’assistant des capacités suffisantes pour le workflow.
Commencez avec low pour la plupart des agents vocaux en production. Ajustez ce niveau à la hausse ou à la baisse selon la complexité des tâches, la tolérance à la latence et le coût d’un échec.
| Effort | À utiliser lorsque | Exemple |
|---|---|---|
minimal | La priorité est de minimiser la latence et la tâche est simple. | Commandes domotiques, minuteurs, vérifications simples du calendrier. |
low | Vous avez besoin de réactivité et d’un raisonnement élémentaire. | Assistance client, recherche de commandes, questions simples sur les politiques applicables. |
medium | L’assistant doit raisonner pour accomplir des tâches en plusieurs étapes. | Assistance technique, diagnostics, routage complexe. |
high | Un raisonnement plus approfondi améliore sensiblement les chances de réussite. | Workflows exigeant une grande précision, décisions de transfert, tâches soumises à des contraintes. |
xhigh | Un raisonnement maximal justifie la latence et le coût supplémentaires. | Planification complexe, triage critique, orchestration d’outils à forts enjeux. |
Au-delà du réglage de l’API, indiquez au modèle quand raisonner et jusqu’à quel niveau de profondeur.
## Reasoning
- For direct answers, simple lookups, and short confirmations, respond quickly and do not reason.
- For multi-step tasks, tool decisions, troubleshooting, or escalation, reason before acting.
- Do not perform extended reasoning when the user's audio is unclear; ask for clarification instead.Utilisez les préambules à bon escient
Les préambules sont de brèves indications orales qui donnent à l’agent vocal une impression de réactivité pendant qu’il raisonne, recherche une information ou appelle un outil. Bien utilisés, ils rassurent l’utilisateur en lui indiquant que l’assistant est à l’œuvre. Mal utilisés, ils deviennent des paroles de remplissage et augmentent la latence perçue.
gpt-realtime-2 génère des préambules par défaut. Commencez par tester ce comportement. S’il ne correspond pas à l’expérience souhaitée pour votre produit, ajustez-le explicitement.

## Preambles
Use short preambles only when they help the user understand that work is happening.
### When to use a preamble
Use a preamble when:
- you are about to call a tool that may take noticeable time;
- you need to reason through a multi-step request;
- you are checking records, availability, account state, or policy details;
- you are preparing an escalation or handoff;
- silence would make the assistant feel unresponsive.
When a preamble is needed, output it immediately before substantive reasoning or tool use.
### When to not use a preamble
Do not use a preamble when:
- the answer is direct and can be given immediately;
- the user is only confirming, correcting, or declining something;
- the audio is unclear and you need clarification;
- the latest audio is silence, background noise, hold music, TV audio, or side conversation;
- the tool call is lightweight and the user would not benefit from an update.
### Preamble style
When using a preamble:
- keep it natural, calm, and concise;
- vary the wording across turns;
- describe the action, not the internal reasoning;
- avoid filler.
Avoid phrases like:
- "Let me think..."
- "Hmm..."
- "One moment while I process that..."
- "I am now going to access the tool..."
### Preamble length
Use one short sentence.
Do not exceed two short sentences unless the user needs an explanation before a high-impact action.
### Prefer
- "I'll check that order now."
- "I'll look up your appointment details."
- "I'll verify that before we make any changes."
- "I'll check the policy and then give you the next step."
- "I'll pull that up so we can make sure it's the right account."
### Avoid
- "Let me think about that for a second."
- "Please wait while I process your request."
- "I'm going to use my tools now."
- "Interesting question. I will reason through this carefully."Contrôlez la longueur des réponses
gpt-realtime-2 respecte mieux les consignes de longueur lorsque le prompt précise le niveau de détail à fournir pour chaque type de tâche. Au lieu de demander au modèle d’« être concis », définissez ce que cela signifie dans le contexte : les réponses directes, les résultats d’outils, le dépannage, les comparaisons et les transferts peuvent chacun nécessiter des longueurs de réponse différentes.
## Verbosity
- Direct answers: Use 1-2 short sentences.
- Clarifying questions: Ask one question at a time.
- Tool results: Summarize the result first, then give only the next useful action.
- Product or option comparisons: Include key differences, tradeoffs, and who each option fits.
- Troubleshooting: Give one step at a time unless the user asks for the full procedure.
- Escalations: Briefly explain why escalation is needed and what will happen next.Exemple :
Utilisateur : Quel forfait devrais-je choisir ?
Assistant : Si vous souhaitez payer le moins possible, choisissez Basic. Si vous avez besoin d’autorisations d’équipe et d’une facturation partagée, choisissez Pro. Si les vérifications de conformité ou les contrôles d’administration sont importants pour vous, choisissez Entreprise.
Définissez le comportement des outils
gpt-realtime-2 est plus performant pour les appels d’outils, mais son comportement dépend toujours de la conception du prompt et des spécifications des outils. Si le prompt ne précise pas quand agir, poser une question, demander confirmation ou reprendre après un échec, l’assistant risque d’appeler les outils trop tôt, de poser des questions inutiles ou de répéter des appels qui ont échoué.
Réglez la propension à appeler les outils
Une forte propension à appeler les outils convient aux actions en lecture seule présentant peu de risques. Une propension plus faible est préférable lorsque les outils modifient des données, produisent des effets externes ou nécessitent des identifiants exacts.
| Type d’outil | Comportement par défaut |
|---|---|
| Recherche en lecture seule, à faible risque | Appelez l’outil lorsque l’intention et les champs requis sont clairs. |
| Lecture seule avec un identifiant exact | Faites confirmer l’identifiant avant la recherche. |
| Communication visible par l’utilisateur | Préparez un brouillon ou un résumé avant l’envoi. |
| Modifications du compte | Demandez confirmation avant d’appeler l’outil. |
| Achats, annulations, paiements | Faites confirmer le montant, la cible et les conséquences avant d’appeler l’outil. |
| Actions irréversibles ou à fort impact | Demandez une confirmation explicite et proposez un transfert à un interlocuteur compétent si nécessaire. |
Utilisez ce comportement par défaut équilibré lorsque vous combinez des actions de lecture et d’écriture. Adaptez-le à votre cas d’usage.
## Tools
Use only the tools explicitly provided in the current tool list. Do not invent, assume, simulate, or rename tools.
For read-only tools:
- Call the tool when the user's intent is clear and all required fields are available.
- Do not ask for confirmation unless the lookup depends on a high-precision identifier or there is meaningful risk of using the wrong record.
- Ask a clarification question only if a required field is missing, ambiguous, or conflicting.
For write tools or external actions:
- Summarize the intended action before calling the tool.
- Include the key consequence, such as what will be changed, sent, canceled, ordered, or charged.
- Ask for confirmation.
- Do not call the tool until the user clearly confirms.
For exact identifiers:
- Treat order IDs, tracking numbers, account numbers, confirmation codes, phone numbers, and email addresses as high precision.
- Normalize only when the field type is clear.
- Confirm the final value before account-specific lookups, validation, or write actions.
After tool calls:
- Only say an action was completed after the tool call succeeds.
- If the tool fails, explain the failure briefly, avoid raw errors, and give the user a clear next step.Exemple à haut risque :
Utilisateur : Débitez ma carte du solde restant.
Mauvais exemple :
Assistant : J’ai débité votre carte.
Bon exemple :
Assistant : Pour confirmer, vous souhaitez que je débite la carte enregistrée de 248,16 $ pour régler le solde restant. Puis-je procéder au paiement ?
Gérez les échecs des outils
Les échecs des outils font partie de la conversation. Pour bien reprendre après un échec, l’assistant doit expliquer ce qui s’est passé et indiquer clairement à l’utilisateur la prochaine étape.
Ne traitez pas tous les échecs de la même manière. La reprise doit dépendre du type d’outil, du mode de défaillance et de l’impact sur l’utilisateur. Certains échecs doivent être gérés par une nouvelle tentative, sans en informer l’utilisateur. D’autres nécessitent de lui demander des précisions, de corriger un identifiant, de confirmer une nouvelle action ou de choisir une autre voie.
## Tool Failures
If a tool call fails:
1. Briefly explain what failed in user-friendly language.
2. Do not blame the user or expose raw tool errors.
3. If the failure may be due to an exact identifier, read back the value used and ask the user to correct it.
4. If the failure may be temporary, offer to retry once.
5. If the same failure happens repeatedly, offer an alternate path or escalation.
Do not repeatedly call the same tool with the same arguments after failure.
Do not ask for a different identifier until you have first checked whether the captured value was correct.Mauvais exemple :
Assistant : Un problème est survenu.
Bon exemple :
Assistant : Je n’ai trouvé aucune correspondance pour O R D tiret 3 1 2 5 B 2 3. Ai-je mal compris une partie de cet identifiant ?
Gardez le prompt et les outils disponibles en phase
Les modèles Realtime cherchent spontanément à aider. Si le prompt mentionne un outil qui n’est pas réellement disponible, ou si la liste des outils ne correspond pas au prompt, le modèle risque d’inventer un nom d’outil ou de prétendre avoir effectué l’action.
Par exemple, si le prompt fait référence à lookup_order, mais que l’outil fourni s’appelle search_orders, le modèle risque d’appeler le mauvais nom ou de simuler l’action.
## Tool Availability
Use only the tools that are explicitly provided in the current tool list.
Do not invent, assume, or simulate tools. If a tool is mentioned in the instructions but is not present in the tool list, treat it as unavailable.
If the user requests an action that requires an unavailable tool:
1. Do not pretend to complete the action.
2. Briefly explain that the tool is not available.
3. Offer the closest supported next step.
Only say an action was completed after the relevant tool call succeeds.Utilisez le méta-prompt d’audit des prompts en annexe pour repérer, dans les prompts de production, les contradictions, les outils manquants et les instructions fragiles.
Gérez le silence et les sons de fond
Les agents vocaux ont tendance à répondre par défaut. En production, ils reçoivent souvent des entrées audio qui ne devraient pas susciter de réponse orale : silence, bruit de fond, musique d’attente, son de télévision ou conversations entre d’autres personnes.
Utilisez un outil d’attente sans opération lorsque l’assistant doit rester silencieux et continuer à écouter. Cet outil donne au modèle une action valide qui ne nécessite pas de parler, au lieu de lui faire dire des phrases comme « Je suis là » ou « Je n’ai pas compris ».
Conception de l’outil :
{
"name": "wait_for_user",
"description": "Call this when the latest audio does not need a spoken response, such as silence, background noise, hold music, TV audio, side conversation, or speech not addressed to the assistant. This tool helps end the turn without a spoken reply.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}Associez-le à des instructions dans le prompt :
## Handling Silence and Background Noise
If the latest audio is silence, background noise, hold music, TV audio, side conversation, or speech not addressed to you, call `wait_for_user`.
Do not respond conversationally after calling this tool.
Do not say "I'm here," "I didn't catch that," "Take your time," or "Let me know when you're ready."
Resume normal responses only when the user clearly addresses you or asks for help.Utilisez cette approche pour les sons qui ne sont pas destinés à l’assistant, et non pour les demandes peu claires de l’utilisateur. Si l’utilisateur s’adresse manifestement à l’assistant, mais que ses propos sont inintelligibles, demandez-lui plutôt de préciser sa demande.
Utilisez les canaux de messages à bon escient
gpt-realtime-2 peut produire des messages intermédiaires visibles par l’utilisateur dans le canal commentary et des réponses finales destinées à l’utilisateur dans le canal final. Utilisez des instructions propres à chaque canal lorsque le comportement dépend du canal dans lequel il intervient.
| Canal | Visible par l’utilisateur ? | Utilisation |
|---|---|---|
commentary | Oui | Préambules et appels d’outils. |
final | Oui | Message final destiné à l’utilisateur. |
Par exemple, les appels d’outils ont lieu dans le canal commentary. Si vous souhaitez que l’assistant dise quelque chose avant, pendant ou après l’utilisation d’un outil, précisez ce comportement pour le canal commentary.
Before calling tools in the commentary channel, briefly tell the user what you are doing.gpt-realtime-2 peut émettre plusieurs phases de réponse au cours d’un même tour. Dans la sortie de l’API, cette distinction est représentée par l’événement response.done, qui inclut une valeur phase indiquant si le contenu est un commentaire ou la réponse finale.
Vous pouvez utiliser ce champ pour traiter chaque phase différemment dans votre application. Par exemple, un commentaire peut être lu à voix haute ou affiché sous forme de bref message intermédiaire, tandis que final_answer peut être réservé à la réponse complète de l’assistant.
response.output[0].phase: "commentary"
response.output[1].phase: "final_answer"Gérez les entrées audio peu claires
Le modèle ne doit agir qu’à partir d’une entrée audio qu’il comprend avec certitude. Si l’entrée audio n’est pas claire, il doit poser une brève question pour obtenir des précisions plutôt que de deviner.
Ne laissez pas le modèle déduire les mots manquants, appeler des outils, recueillir des entités, générer des préambules ou consacrer du temps de raisonnement interne à tenter de reconstituer ce que l’utilisateur a pu dire.
## Unclear Audio
- Only respond to clear audio or text.
- If the user's audio is not clear, ask for clarification using a short English phrase such as "Sorry, could you repeat that clearly?"
- Don't repeat the same unclear-audio clarification twice.
- Treat audio as unclear if it is ambiguous, noisy, silent, unintelligible, partially cut off, or if you are unsure of the exact words the user said.
- Do not guess what the user meant from unclear audio.
- Do not reason when the audio is unclear.
- Do not provide a preamble or call tools in the commentary channel when the audio is unclear.Exemple :
Audio de l’utilisateur : « Vérifiez la commande trois un- » [coupure]
Mauvais exemple :
Assistant : Je vais vérifier la commande 31.
Bon exemple :
Assistant : Je n’ai entendu qu’une partie du numéro de commande. Pourriez-vous le répéter chiffre par chiffre ?
Recueillez les entités avec exactitude
De nombreux workflows en temps réel reposent sur des valeurs exactes : identifiants de commande, numéros de suivi, adresses e-mail, codes de confirmation, numéros de compte, numéros de réclamation, identifiants de ticket, références d’assistance et numéros de téléphone.
La voix complique cette tâche. Les utilisateurs parlent vite, regroupent les chiffres de différentes façons, n’épellent qu’une partie des valeurs, emploient des mots de remplissage, se corrigent en cours de phrase ou prononcent des caractères aux sonorités proches. Un seul chiffre erroné peut faire échouer une recherche ou renvoyer le mauvais compte.
Recueillez les entités avec prudence. Collectez une seule valeur à la fois, normalisez uniquement ce qui est clair, faites confirmer les valeurs qui exigent une grande précision avant d’appeler des outils et veillez à pouvoir reprendre correctement après chaque correction.
Collectez une seule entité à la fois
Lorsqu’un workflow nécessite plusieurs valeurs, collectez-les une par une. Cela évite de mélanger les champs, en particulier dans les conversations vocales.
## Entity Collection Order
Collect required values one at a time.
- Ask for only the next missing value.
- Do not ask for multiple values in the same turn.
- Before asking, check whether the value was already provided earlier in the conversation or the session.
- If a possible value already exists, confirm it with the user before using it.
Example:
"I see tracking number ABC-54321 from earlier. Should I use that one, or do you have a different tracking number?"
Do not call tools until the current value has been collected, validated, and confirmed.Gérez les caractères épelés
Utilisez cette approche lorsque les utilisateurs épellent des identifiants, des codes, des noms ou des adresses e-mail caractère par caractère. La forme orale constitue la donnée d’entrée, pas la valeur finale.
## Spelled-Out Characters
When a user dictates an ID, code, or email character by character, treat the spoken sequence as one compact value. Preserve explicitly spoken separators like dash, dot, underscore, slash, or plus; otherwise do not add spaces or separators.
Examples:
- "A B C one two three" -> "ABC123"
- "B C dash nine eight seven" -> "BC-987"
- "J O H N at example dot com" -> "john@example.com"
Do not insert spaces between spelled-out characters unless the user explicitly says the value contains spaces.Normalisez les nombres prononcés avec prudence
Pour les identifiants numériques, les utilisateurs peuvent énoncer les chiffres un par un, les regrouper ou les lire comme des nombres. Si le champ attend une suite de chiffres sans séparateur, convertissez les nombres clairement énoncés en chiffres.
## Spoken Number Handling
Convert spoken numbers into digits when collecting numeric identifiers.
Examples:
- "one two three four" -> "1234"
- "one twenty three" -> "123"
- "one nineteen" -> "119"
- "ninety nine eleven" -> "9911"
- "nine thousand nine hundred eleven" -> "9911"
If multiple interpretations are plausible, ask the user to clarify before using the value.
Example:
"I heard either 119 or 1-19. Could you repeat the number digit by digit?"Faites confirmer les identifiants exacts avant d’appeler des outils
Les identifiants de commande, numéros de suivi, numéros de compte, numéros de réclamation, codes de confirmation et autres identifiants similaires sont des champs qui exigent une grande précision. Faites-les confirmer avant de les utiliser dans un appel d’outil.
Pour les identifiants numériques, relisez la valeur chiffre par chiffre. La lire comme un nombre entier peut masquer des erreurs.
Exemple :
Assistant : Pour confirmer, j’ai entendu 8... 3... 5... 2... 1. C’est bien cela ?
Si l’utilisateur corrige un caractère ou un chiffre, répétez la valeur corrigée dans son intégralité avant d’appeler l’outil.
Exemple :
Assistant : D’accord. J’ai 8... 3... 5... 7... 1. Est-ce correct ?
## Exact Identifier Confirmation
Before calling tools with high-precision identifiers:
- Confirm the final normalized value with the user.
- Read numeric identifiers back digit by digit.
- Do not use guessed, partial, or ambiguous values.
- If the user corrects the value, repeat the full corrected value before calling the tool.Faites confirmer les adresses e-mail caractère par caractère
Les adresses e-mail sont des valeurs importantes. Les points, les tirets, les traits de soulignement, les lettres répétées et les noms aux sonorités proches peuvent faire échouer une recherche de compte ou entraîner l’envoi de messages à la mauvaise adresse.
Demandez à l’utilisateur d’épeler l’adresse e-mail :
Assistant : Pourriez-vous épeler l’adresse e-mail caractère par caractère pour que je puisse vérifier que je l’ai correctement notée ?
Lorsque vous la relisez, faites confirmer l’adresse finale exacte :
Assistant : Pour confirmer, c’est bien c-h-e-n arobase example point com ?
## Email Confirmation
Email addresses must be captured exactly.
If the user says the email naturally without spelling it out, ask them to repeat it character by character.
Example:
"Could you spell the email address character by character so I can make sure I have it exactly right?"
When reading an email back, confirm the exact final email address.
Example:
"Just to confirm, that is c-h-e-n at example dot com, right?"Workflow de collecte des entités
Évitez les pièges de l’interprétation littérale des instructions
gpt-realtime-2 suit les instructions plus littéralement que les modèles temps réel précédents. Les prompts qui fonctionnaient bien avec les anciens modèles peuvent nécessiter des ajustements.
Utilisez des formulations précises. Le modèle peut privilégier les termes exacts d’une instruction au détriment du comportement plus général que vous souhaitiez obtenir. Des règles générales ou rigides peuvent dicter le comportement de l’assistant de manière surprenante, en particulier lorsque plusieurs règles se recoupent.
Employez avec prudence les termes contraignants tels que must, only, never et always. Utilisez-les lorsque le comportement est réellement requis, pas simplement pour insister. L’abus de contraintes strictes peut rendre l’assistant rigide, excessivement prudent ou incapable de gérer des exceptions raisonnables.
Privilégiez un champ d’application précis :
For write actions that modify user data, ask for confirmation before calling the tool.Évitez un champ d’application trop large :
Always ask for confirmation before doing anything.La version générale peut entraîner des demandes de confirmation inutiles avant des consultations sans risque en lecture seule, comme vérifier l’état d’une commande, consulter des disponibilités ou lire les informations d’un compte.
Exemple d’interprétation littérale
Recommandations générales pour la conception de prompts :
- Privilégiez les instructions explicites plutôt que les intentions implicites.
- Évitez les termes inutilement contraignants, sauf si le comportement doit réellement être rigide.
- Limitez autant que possible les consignes contradictoires.
- Soyez prudent avec les instructions de priorité qui se superposent ou se font concurrence.
- Testez les prompts progressivement. De petits changements de formulation peuvent avoir des effets importants sur le comportement.
- Lors d’une migration depuis des modèles temps réel précédents, attendez-vous à devoir restructurer certains prompts pour obtenir les meilleurs résultats.
Contrôlez séparément la langue et l’accent
La langue et l’accent doivent être contrôlés séparément.
L’accent d’un utilisateur ne détermine pas la langue dans laquelle il souhaite échanger. Un utilisateur peut parler anglais avec un accent hindi, espagnol, français ou mandarin et néanmoins attendre des réponses en anglais.
Évitez les instructions trop générales sur la langue, telles que :
Mirror the user.
Respond naturally in the user's language.
Switch languages when appropriate.
Sound local.
Adapt to the user's accent.Ces instructions sont trop générales. Le modèle peut interpréter l’accent, les mots de remplissage, les brèves marques d’écoute ou des mots étrangers isolés comme une raison de changer de langue.
Règles d’utilisation de l’anglais
## Language
English is the default response language.
- Do not infer language from accent alone.
- Ignore short filler sounds, backchannels, and isolated foreign words for language detection.
- Only switch languages if the user explicitly asks or provides a substantive utterance in another language.
- If language confidence is low, ask a short clarification instead of guessing.
- Keep preambles, spoken bridges, tool-related messages, and final answers in the same language.
- Accent adaptation must not change the response language.Règles d’utilisation de plusieurs langues
## Language
Default to English unless the user clearly uses another language.
Switch languages only when:
- the user explicitly asks to use another language;
- the user provides a substantive utterance in another language. A substantive utterance means the user gives a complete request, question, or correction in another language, not just a greeting, name, address, filler word, or borrowed phrase.
Do not switch languages based on:
- accent;
- pronunciation;
- filler words;
- short backchannels;
- names;
- addresses;
- isolated foreign words.
If uncertain, ask:
"Would you like me to continue in English or [LANGUAGE]?"Contrôle de l’accent
gpt-realtime-2 peut suivre plus fidèlement les instructions relatives à l’accent, mais des prompts vagues à ce sujet peuvent entraîner une dérive ou un changement de langue involontaire.
Les prompts qui contrôlent l’accent fonctionnent mieux lorsqu’ils précisent :
- l’accent cible ;
- les caractéristiques qui doivent rester stables ;
- le rythme, l’accentuation et la prosodie souhaités ;
- si l’adaptation de l’accent doit influer sur le choix de la langue.
Au lieu de :
Sound Australian.Utilisez :
## Accent
Speak English with a light Australian accent.
- Keep the accent stable from the first word to the last.
- Use natural Australian vowel shaping, but keep speech easy to understand.
- Do not exaggerate the accent.
- Do not change response language based on the user's accent.Voix personnalisées
Utilisez Custom Voices lorsque les voix standard ne permettent pas de répondre de manière fiable aux exigences de marque, d’accent ou de personnage.
Les prompts peuvent orienter l’accent, le rythme et la manière de parler, mais ils ne peuvent pas remplacer entièrement la conception d’une voix. Pour les cas d’utilisation qui exigent une identité vocale de marque constante ou une reproduction fidèle de l’accent, envisagez Custom Voices.
Custom Voices est uniquement disponible pour les clients approuvés. Contactez l’équipe chargée de votre compte pour y accéder.
Maintenez l’état au cours des sessions longues
gpt-realtime-2 fait passer la fenêtre de contexte en temps réel de 32 000 à 128 000 tokens, ce qui le rend mieux adapté aux sessions longues. Pour des conversations denses entre deux interlocuteurs, considérez que 128 000 tokens correspondent approximativement à 1 à 2 heures de contexte audio brut dense. Cette durée varie selon l’utilisation des outils, le raisonnement interne, les données injectées et les autres caractéristiques de la session.
Pour les cas d’utilisation avec un contexte long, gpt-realtime-2 donne de meilleurs résultats lorsqu’il peut distinguer les informations à jour, les éléments de contexte et ce qu’il doit ignorer en cas de contradiction entre les sources. Ne comptez pas sur le modèle pour déduire la priorité des sources à partir d’une transcription brute ou d’un grand volume de contexte non structuré. Structurez ces informations.
Utilisez un format structuré lorsque vous démarrez une session avec un contexte volumineux : données récupérées, historique des conversations, politiques, résumés, notes sur le compte ou documents de référence.
Migrez depuis les modèles temps réel antérieurs
Lors d’une migration depuis des modèles temps réel antérieurs, considérez le prompt comme un moyen de définir le comportement du modèle, et pas seulement comme du texte à transférer.
- Utilisez Codex ou un modèle de raisonnement performant pour restructurer le prompt selon les dernières recommandations de conception de prompts pour Realtime. Incluez un lien vers ce guide pour appuyer la migration sur les bonnes pratiques.
- Réglez l’effort de raisonnement sur
lowplutôt que sur la valeur par défaut. Augmentez-le uniquement pour les workflows qui nécessitent une planification plus approfondie. - Vérifiez les noms des outils, les paramètres, les énumérations, les schémas JSON et les autres réglages pour vous assurer qu’ils correspondent à l’implémentation attendue.
- Supprimez les exemples obsolètes. Ajoutez de courts exemples couvrant les scénarios nominaux, les ambiguïtés, les interruptions, les appels d’outils et les comportements de repli.
- Comparez des conversations représentatives avant et après la migration. Recherchez d’éventuelles régressions à l’aide d’une évaluation existante et documentez les changements de comportement intentionnels.
- Effectuez une dernière vérification de cohérence. Assurez-vous que le prompt distingue clairement les exigences impératives, les comportements par défaut, les règles d’utilisation des outils, les règles de sécurité et les comportements de repli.
- Exécutez des évaluations, examinez des échecs représentatifs et ajustez le prompt jusqu’à obtenir les comportements souhaités de manière fiable.
Guide de conception de prompts pour Realtime 1.5
gpt-realtime-1.5 est un modèle parole à parole de la Realtime API. Les recommandations de conception de prompts pour gpt-realtime s’appliquent également à ce modèle.
Les systèmes parole à parole sont essentiels pour faire de la voix une interface centrale de l’IA. gpt-realtime-1.5 permet de créer des agents vocaux en temps réel robustes et faciles à utiliser, capables de gérer à grande échelle des workflows critiques.
Par rapport aux modèles temps réel antérieurs en préversion, gpt-realtime-1.5 respecte mieux les instructions, appelle les outils de manière plus fiable, offre une meilleure qualité vocale et procure une expérience globalement plus fluide. Ces améliorations permettent de passer concrètement d’approches en chaîne à de véritables expériences en temps réel, avec une latence réduite et des réponses plus naturelles et expressives.
Les modèles temps réel tirent parti de techniques de conception de prompts qui ne s’appliqueraient pas directement aux modèles textuels. Ce guide propose d’abord une trame de prompt, puis en détaille chaque partie avec des conseils pratiques, de courts modèles réutilisables et des exemples à adapter à votre cas d’utilisation.
Conseils généraux
- Multipliez les itérations : De légers changements de formulation peuvent suffire à obtenir le comportement souhaité ou à le compromettre.
- Exemple : Dans une instruction concernant un audio peu clair, nous avons remplacé « inaudible » par « inintelligible », ce qui a amélioré le traitement des entrées bruitées.
- Préférez les listes à puces aux paragraphes : Des puces courtes et claires donnent de meilleurs résultats que de longs paragraphes.
- Guidez le modèle avec des exemples : Le modèle suit de près les exemples de phrases.
- Soyez précis : Les ambiguïtés ou les instructions contradictoires dégradent les performances, comme avec GPT-5.
- Contrôlez la langue : Imposez une langue cible aux réponses si vous constatez des changements de langue indésirables.
- Réduisez les répétitions : Ajoutez une règle de variété pour limiter les formulations robotiques.
- Utilisez les majuscules pour mettre en évidence les points importants : Écrire les règles clés en majuscules les fait ressortir et aide le modèle à les suivre.
- Reformulez les règles symboliques en toutes lettres : Au lieu d’écrire « IF x > 3 THEN ESCALATE », écrivez « SI PLUS DE TROIS ÉCHECS, ALORS TRANSFÉREZ À UN NIVEAU SUPÉRIEUR ».
Structure du prompt
Un prompt bien organisé aide le modèle à comprendre le contexte et à rester cohérent au fil des échanges. Il vous permet aussi d’itérer et de modifier plus facilement les sections problématiques.
- Effet : Utilisez des sections claires et titrées dans votre prompt système pour que le modèle puisse les repérer et les suivre. Consacrez chaque section à un seul sujet.
- Adaptation : Ajoutez des sections propres à votre domaine, comme Conformité ou Politique de marque. Supprimez les sections inutiles, par exemple Prononciations de référence si vous ne rencontrez pas de difficultés de prononciation.
Exemple
# Role & Objective — who you are and what “success” means
# Personality & Tone — the voice and style to maintain
# Context — retrieved context, relevant info
# Reference Pronunciations — phonetic guides for tricky words
# Tools — names, usage rules, and preambles
# Instructions / Rules — do’s, don’ts, and approach
# Conversation Flow — states, goals, and transitions
# Safety & Escalation — fallback and handoff logicRôle et objectif
Cette section définit l’identité de l’agent et les critères d’achèvement de sa tâche. Les exemples présentent deux identités différentes pour montrer à quel point le modèle respecte le rôle et l’objectif lorsqu’ils sont explicites.
- Quand l’utiliser : Le modèle n’adopte pas le personnage ou le rôle souhaité, ou ne respecte pas le périmètre de la tâche.
- Effet : Fixe l’identité de l’agent vocal pour que ses réponses correspondent à la description du rôle
- Adaptation : Modifiez le rôle en fonction de votre cas d’utilisation
Exemple (le modèle adopte un accent particulier)
# Role & Objective
You are a Quebecois French-speaking customer service bot. Your task is to answer the user's question.Modèle temps réel antérieur en préversion :
gpt-realtime-1.5 :
Exemple (le modèle incarne un personnage)
# Role & Objective
You are a high-energy game-show host guiding the caller to guess a secret number from 1 to 100 to win 1,000,000$.Modèle temps réel antérieur en préversion :
gpt-realtime-1.5 :
gpt-realtime-1.5 peut incarner le rôle spécifié de manière plus fiable que les modèles temps réel antérieurs en préversion.
Personnalité et ton
gpt-realtime-1.5 suit bien les instructions lorsqu’il imite une personnalité ou un ton particulier. Vous pouvez adapter l’expérience vocale et la manière de parler aux attentes de votre cas d’utilisation.
- Quand l’utiliser : Les réponses paraissent plates, trop longues ou manquent de cohérence au fil des échanges.
- Effet : Définit la voix, la concision et le rythme pour que les réponses paraissent naturelles et cohérentes.
- Adaptation : Ajustez le degré de chaleur et de formalité ainsi que la longueur par défaut. Dans les domaines réglementés, privilégiez la neutralité et la précision. Ajoutez d’autres sous-sections pertinentes pour votre cas d’utilisation.
Exemple
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
2–3 sentences per turn.Exemple (plusieurs émotions)
# Personality & Tone
- Start your response very happy
- Midway, change to sad
- At the end change your mood to very angrygpt-realtime-1.5 :
Le modèle parvient à suivre les instructions complexes et à passer d’une émotion à l’autre parmi trois émotions tout au long de la réponse audio.
Instructions sur la vitesse d’élocution
Dans la Realtime API, le paramètre speed modifie la vitesse de lecture, pas la façon dont le modèle compose son discours. Pour obtenir une élocution réellement plus rapide, ajoutez des instructions qui guident son rythme.
- Quand l’utiliser : Les utilisateurs souhaitent une élocution plus rapide ; la vitesse de lecture (réglée avec le paramètre speed) ne suffit pas à modifier la façon de parler.
- Effet : Ajuste la façon de parler (concision, cadence) indépendamment de la vitesse de lecture côté client.
- Comment l’adapter : Modifiez l’instruction sur la vitesse pour répondre aux exigences de votre cas d’usage.
Exemple
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Pacing
- Deliver your audio response fast, but do not sound rushed.
- Do not modify the content of your response, only increase speaking speed for the same response.Ancienne version préliminaire de realtime :
gpt-realtime-1.5 :
Avec des instructions explicites sur le rythme, gpt-realtime-1.5 peut parler nettement plus vite sans donner l’impression de trop se précipiter.
Contrainte de langue
Les contraintes de langue garantissent que le modèle répond systématiquement dans la langue souhaitée, même dans des conditions difficiles, en présence de bruit de fond ou d’entrées multilingues, par exemple.
- Quand l’utiliser : Pour éviter les changements de langue involontaires dans les environnements multilingues ou bruyants.
- Effet : Impose la langue choisie pour les réponses afin d’éviter les changements de langue involontaires.
- Comment l’adapter : Remplacez « anglais » par votre langue cible, ou ajoutez des instructions plus complexes selon votre cas d’usage.
Exemple (imposer une seule langue)
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
- The conversation will be only in English.
- Do not respond in any other language even if the user asks.
- If the user speaks another language, politely explain that support is limited to English.Voici les réponses obtenues avec gpt-realtime-1.5 après l’application de l’instruction.

Exemple (le modèle enseigne une langue)
# Role & Objective
- You are a friendly, knowledgeable voice tutor for French learners.
- Your goal is to help the user improve their French speaking and listening skills through engaging conversation and clear explanations.
- Balance immersive French practice with supportive English guidance to ensure understanding and progress.
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
### Explanations
Use English when explaining grammar, vocabulary, or cultural context.
### Conversation
Speak in French when conducting practice, giving examples, or engaging in dialogue.Voici les réponses obtenues avec gpt-realtime-1.5 après l’application de l’instruction.

Le modèle peut passer d’une langue à l’autre en fonction d’instructions personnalisées.
Réduisez les répétitions
Le modèle realtime peut suivre de près des exemples de formulations pour respecter le ton de la marque, mais il risque d’en abuser et de rendre ses réponses mécaniques ou répétitives. L’ajout d’une règle sur les répétitions aide à varier les formulations tout en préservant la clarté et le ton de la marque.
- Quand l’utiliser : Les réponses reprennent les mêmes introductions, mots de remplissage ou structures de phrases d’un tour ou d’une session à l’autre.
- Effet : Ajoute une contrainte de variété qui décourage les formulations répétitives, favorise les synonymes et les structures de phrases alternatives, et préserve les termes imposés.
- Comment l’adapter : Ajustez le degré de rigueur (par exemple, « ne réutilisez pas la même introduction plus d’une fois tous les N tours »), autorisez explicitement les formulations à conserver (mentions légales, conformité, marque) et permettez des formulations moins variées lorsque la cohérence est importante.
Exemple
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
- The conversation will be only in English.
- Do not respond in any other language even if the user asks.
- If the user speaks another language, politely explain that support is limited to English.
## Variety
- Do not repeat the same sentence twice.
- Vary your responses so they don't sound robotic.Voici les réponses obtenues avec gpt-realtime-1.5 avant l’application de l’instruction. Le modèle répète la même confirmation : Got it.

Voici les réponses obtenues avec gpt-realtime-1.5 après l’application de l’instruction.

Le modèle peut désormais varier ses réponses et ses confirmations sans paraître mécanique.
Prononciations de référence
Cette section explique comment faire en sorte que le modèle prononce correctement les mots, nombres, noms et termes importants lors des échanges vocaux.
- Quand l’utiliser : Les noms de marques, les termes techniques ou les noms de lieux sont souvent mal prononcés.
- Effet : Renforce la confiance et la clarté grâce à des indications phonétiques.
- Comment l’adapter : Limitez-vous à une courte liste et mettez-la à jour au fil des erreurs que vous entendez.
Exemple
# Reference Pronunciations
When voicing these words, use the respective pronunciations:
- Pronounce “SQL” as “sequel.”
- Pronounce “PostgreSQL” as “post-gress.”
- Pronounce “Kyiv” as “KEE-iv.”
- Pronounce "Huawei" as “HWAH-way”Ancienne version préliminaire de realtime :
gpt-realtime-1.5 :
Grâce aux instructions de prononciation de référence, gpt-realtime-1.5 peut prononcer correctement SQL comme le mot anglais « sequel ».
Prononciation des caractères alphanumériques
Realtime S2S peut rendre les chiffres ou les lettres indistincts, ou les fusionner, lorsqu’il répète des informations clés (numéros de téléphone ou de carte bancaire, identifiants de commande). Une confirmation explicite caractère par caractère évite les erreurs d’écoute et favorise une synthèse vocale plus claire.
- Quand l’utiliser : Si le modèle a du mal à recueillir ou à répéter des numéros de téléphone, des numéros de carte bancaire, des codes 2FA, des identifiants de commande, des numéros de série, des adresses, des numéros d’appartement ou des chaînes mêlant lettres et chiffres.
- Effet : Oblige le modèle à prononcer un caractère à la fois avec des séparateurs, puis à demander confirmation à l’utilisateur et à la redemander après toute correction. Peut aussi utiliser des repères phonétiques pour distinguer les lettres (par exemple, « A comme Alpha »).
Exemple (section d’instructions générales)
# Instructions/Rules
- When reading numbers or codes, speak each character separately, separated by hyphens (e.g., 4-1-5).
- Repeat EXACTLY the provided number; do not omit any digits.Conseil : Si votre stratégie de conception de prompts repose sur un déroulement de conversation, vous pouvez préciser dans quel état de la conversation appliquer l’instruction de prononciation des caractères alphanumériques.
Exemple (instruction dans un état de la conversation)
(extrait du déroulement de conversation défini dans le prompt de notre projet openai-realtime-agents)
{
"id": "3_get_and_verify_phone",
"description": "Request phone number and verify by repeating it back.",
"instructions": [
"Politely request the user’s phone number.",
"Once provided, confirm it by repeating each digit and ask if it’s correct.",
"If the user corrects you, confirm AGAIN to make sure you understand.",
],
"examples": [
"I'll need some more information to access your account if that's okay. May I have your phone number, please?",
"You said 0-2-1-5-5-5-1-2-3-4, correct?",
"You said 4-5-6-7-8-9-0-1-2-3, correct?"
],
"transitions": [{
"next_step": "4_authentication_DOB",
"condition": "Once phone number is confirmed"
}]
}Voici les réponses obtenues avec gpt-realtime-1.5 avant l’application de l’instruction.
Bien sûr ! Le numéro est 55119765423. Dites-moi si vous avez besoin d’autre chose !
Voici les réponses obtenues avec gpt-realtime-1.5 après l’application de l’instruction.
Bien sûr ! Le numéro est : 5-5-1-1-1-9-7-6-5-4-2-3. N’hésitez pas à me dire si vous avez besoin d’autre chose !
Instructions
Cette section donne des conseils de conception de prompts pour guider votre modèle dans l’exécution de votre tâche, l’application des bonnes pratiques et la résolution des problèmes éventuels.
Sans grande surprise, pour obtenir les meilleurs résultats, nous recommandons des approches de conception de prompts similaires à celles préconisées pour GPT-4.1.
Respect des instructions
Comme GPT-4.1 et GPT-5, gpt-realtime-1.5 sera moins performant si les instructions sont contradictoires, ambiguës ou peu claires.
- Quand l’utiliser : Le modèle s’écarte des règles dans ses réponses, saute des étapes ou utilise mal les outils.
- Effet : Utilise un LLM pour repérer les ambiguïtés, les contradictions et les définitions manquantes avant la mise en production.
Prompt d’évaluation de la qualité des instructions (utilisable dans ChatGPT ou via l’API)
Utilisez le prompt suivant avec GPT-5 pour repérer les points problématiques de votre prompt que vous pouvez corriger.
## Role & Objective
You are a **Prompt-Critique Expert**.
Examine a user-supplied LLM prompt and surface any weaknesses following the instructions below.
## Instructions
Review the prompt that is meant for an LLM to follow and identify the following issues:
- Ambiguity: Could any wording be interpreted in more than one way?
- Lacking Definitions: Are there any class labels, terms, or concepts that are not defined that might be misinterpreted by an LLM?
- Conflicting, missing, or vague instructions: Are directions incomplete or contradictory?
- Unstated assumptions: Does the prompt assume the model has to be able to do something that is not explicitly stated?
## Do **NOT** list issues of the following types:
- Invent new instructions, tool calls, or external information. You do not know what tools need to be added that are missing.
- Issues that you are unsure about.
## Output Format
"""
# Issues
- Numbered list; include brief quote snippets.
# Improvements
- Numbered list; provide the revised lines you would change and how you would change them.
# Revised Prompt
- Revised prompt where you have applied all your improvements surgically with minimal edits to the original prompt
"""Méta-prompt d’optimisation des prompts (utilisable dans ChatGPT ou via l’API)
Ce méta-prompt vous aide à améliorer votre prompt système de base en ciblant un type d’échec précis. Fournissez le prompt actuel et décrivez le problème observé : le modèle (GPT-5) proposera des variantes améliorées qui renforcent les contraintes et atténuent le problème.
Here's my current prompt to an LLM:
[BEGIN OF CURRENT PROMPT]
{CURRENT_PROMPT}
[END OF CURRENT PROMPT]
But I see this issue happening from the LLM:
[BEGIN OF ISSUE]
{ISSUE}
[END OF ISSUE]
Can you provide some variants of the prompt so that the model can better understand the constraints to alleviate the issue?Absence d’audio ou audio peu clair
Il arrive que le modèle croie entendre quelque chose et tente de répondre. Vous pouvez ajouter une instruction personnalisée pour lui indiquer comment réagir lorsque l’audio ou les propos de l’utilisateur sont peu clairs. Adaptez le comportement souhaité à votre cas d’utilisation. Par exemple, vous pouvez demander au modèle de répéter la même question plutôt que de demander des précisions.
- Quand l’utiliser : Des bruits de fond, des mots incomplets ou le silence déclenchent des réponses indésirables.
- Effet : Évite les réponses intempestives et permet de demander des précisions de manière naturelle.
- Comment l’adapter : Selon votre cas d’utilisation, choisissez de demander des précisions ou de répéter la dernière question.
Exemple (toux et audio peu clair)
# Instructions/Rules
...
## Unclear audio
- Always respond in the same language the user is speaking in, if unintelligible.
- Only respond to clear audio or text.
- If the user's audio is not clear (e.g. ambiguous input/background noise/silent/unintelligible) or if you did not fully hear or understand the user, ask for clarification using {preferred_language} phrases.Voici les réponses obtenues avec gpt-realtime-1.5 après application de l’instruction.
Dans cet exemple, le modèle demande des précisions après ma toux (très) bruyante et un passage audio peu clair.
Musique ou sons de fond
Il arrive que le modèle produise involontairement de la musique de fond, des fredonnements, des bruits rythmiques ou des artefacts sonores pendant la génération de parole. Ces artefacts peuvent nuire à la clarté, distraire les utilisateurs ou donner une impression moins professionnelle de l’assistant. Les instructions suivantes aident à éviter ces phénomènes ou à les réduire considérablement.
- Quand l’utiliser : Lorsque vous observez des éléments musicaux ou des effets sonores involontaires dans les réponses audio de Realtime.
- Effet : Guide le modèle pour qu’il évite de générer ces artefacts audio indésirables.
- Comment l’adapter : Ajustez l’instruction pour tenter de supprimer explicitement les motifs sonores précis que vous rencontrez.
Exemple
# Instructions/Rules
...
- Do not include any sound effects or onomatopoeic expressions in your responses.Outils
Utilisez cette section pour indiquer au modèle comment utiliser vos fonctions et vos outils. Précisez quand appeler ou ne pas appeler un outil, quels arguments recueillir, quoi dire pendant l’exécution d’un appel et comment gérer les erreurs ou les résultats partiels.
Sélection des outils
gpt-realtime-1.5 suit les instructions avec précision. Toutefois, des instructions incompatibles avec les ressources auxquelles le modèle a accès peuvent entraîner de mauvaises réponses. C’est notamment le cas si votre prompt mentionne des outils qui ne sont PAS fournis dans la liste des outils.
- Quand l’utiliser : Les prompts mentionnent des outils qui ne sont pas réellement disponibles.
- Effet : Examine les outils disponibles et le prompt système pour vérifier leur cohérence.
Exemple
# Tools
## lookup_account(email_or_phone)
...
## check_outage(address)
...Nous devons vérifier que les mêmes outils sont disponibles et que les descriptions ne se contredisent pas :
[
{
"name": "lookup_account",
"description": "Retrieve a customer account using either an email or phone number to enable verification and account-specific actions.",
"parameters": {
...
},
{
"name": "check_outage",
"description": "Check for network outages affecting a given service address and return status and ETA if applicable.",
"parameters": {
...
}
]Préambules aux appels d’outils
Dans certains cas d’utilisation, il peut être utile que le modèle Realtime fournisse une réponse audio en même temps qu’il appelle un outil. Cela améliore l’expérience utilisateur en masquant la latence. Vous pouvez adapter la phrase d’exemple à votre cas d’utilisation.
- Quand l’utiliser : Les utilisateurs ont besoin d’une confirmation immédiate au moment de l’appel d’un outil ; cela aide à masquer la latence.
- Effet : Ajoute un préambule court et cohérent avant l’appel d’un outil.
Exemple
# Tools
- Before any tool call, say one short line like “I’m checking that now.” Then call the tool immediately.Voici les réponses obtenues avec gpt-realtime-1.5 après application de l’instruction.

Grâce à l’instruction, le modèle produit la réponse audio « Je vérifie cela tout de suite » en même temps qu’il appelle l’outil.
Préambules aux appels d’outils + phrases d’exemple
Pour contrôler plus précisément le type de phrases que le modèle prononce lorsqu’il appelle un outil, vous pouvez ajouter des phrases d’exemple dans la description de la spécification de l’outil.
Exemple
tools = [
{
"name": "lookup_account",
"description": """Retrieve a customer account using either an email or phone number to enable verification and account-specific actions.
Preamble sample phrases:
- For security, I’ll pull up your account using the email on file.
- Let me look up your account by {email} now.
- I’m fetching the account linked to {phone} to verify access.
- One moment—I’m opening your account details.""",
"parameters": {
"type": "object",
"properties": {
"email": {"type": "string"},
"phone": {"type": "string"},
},
"additionalProperties": False,
},
},
{
"name": "check_outage",
"description": """Check for network outages affecting a given service address and return status and ETA if applicable.
Preamble sample phrases:
- I’ll check for any outages at {service_address} right now.
- Let me look up network status for your area.
- I’m checking whether there’s an active outage impacting your address.
- One sec—verifying service status and any posted ETA.""",
"parameters": {
"type": "object",
"properties": {
"service_address": {"type": "string"},
},
"required": ["service_address"],
"additionalProperties": False,
},
},
]Appels d’outils sans confirmation
Le modèle peut parfois demander une confirmation avant d’appeler un outil. Dans certains cas d’utilisation, ce manque d’initiative peut dégrader l’expérience de l’utilisateur final.
- Quand l’utiliser : L’agent demande une autorisation avant des appels d’outils qui vont de soi.
- Effet : Élimine les échanges de confirmation inutiles.
Exemple
# Tools
- When calling a tool, do not ask for any user confirmation. Be proactiveVoici les réponses obtenues avec gpt-realtime-1.5 après application de l’instruction.

Dans cet exemple, vous pouvez constater que le modèle realtime n’a produit aucune réponse audio : il a directement appelé l’outil concerné.
Conseil : Si vous constatez que le modèle se précipite pour appeler un outil, essayez d’atténuer la formulation. Par exemple, remplacer des termes forts comme « proactif » par des termes plus modérés peut aider le modèle à adopter une approche plus posée et moins empressée.
Performances des appels d’outils
À mesure que les cas d’utilisation se complexifient et que le nombre d’outils disponibles augmente, il devient essentiel d’indiquer explicitement au modèle quand utiliser chaque outil et, tout aussi important, quand ne pas l’utiliser. Des règles d’utilisation claires améliorent la précision des appels d’outils et aident le modèle à choisir le bon outil au bon moment.
- Quand l’utiliser : Le modèle rencontre des difficultés avec les appels d’outils et a besoin d’instructions explicites pour limiter les erreurs d’utilisation.
- Effet : Ajoutez des instructions précisant quand « utiliser ou éviter » chaque outil. Vous pouvez également préciser les enchaînements d’appels d’outils (après l’appel de l’outil A, vous pouvez appeler l’outil B ou C).
Exemple
# Tools
- When you call any tools, you must output at the same time a response letting the user know that you are calling the tool.
## lookup_account(email_or_phone)
Use when: verifying identity or viewing plan/outage flags.
Do NOT use when: the user is clearly anonymous and only asks general questions.
## check_outage(address)
Use when: user reports connectivity issues or slow speeds.
Do NOT use when: question is billing-only.
## refund_credit(account_id, minutes)
Use when: confirmed outage > 240 minutes in the past 7 days.
Do NOT use when: outage is unconfirmed; route to Diagnose → check_outage first.
## schedule_technician(account_id, window)
Use when: repeated failures after reboot and outage status = false.
Do NOT use when: outage status = true (send status + ETA instead).
## escalate_to_human(account_id, reason)
Use when: user seems very frustrated, abuse/harassment, repeated failures, billing disputes >$50, or user requests escalation.Conseil : Si un appel d’outil peut échouer de manière imprévisible, ajoutez des instructions claires de gestion des échecs pour que le modèle réagisse de manière appropriée.
Comportement propre à chaque outil
Vous pouvez ajuster précisément le comportement du modèle pour certains outils plutôt que d’appliquer une règle globale. Par exemple, vous pouvez souhaiter que les outils READ soient appelés de manière proactive, tandis que les outils WRITE nécessitent une confirmation explicite.
- Quand l’utiliser : Les instructions globales concernant la prise d’initiative, la confirmation ou les préambules ne conviennent pas à tous les outils.
- Effet : Ajoute des règles de comportement propres à chaque outil pour définir si le modèle doit l’appeler immédiatement, demander d’abord une confirmation ou prononcer un préambule avant l’appel.
Exemple
# TOOLS
- For the tools marked PROACTIVE: do not ask for confirmation from the user and do not output a preamble.
- For the tools marked as CONFIRMATION FIRST: always ask for confirmation to the user.
- For the tools marked as PREAMBLES: Before any tool call, say one short line like “I’m checking that now.” Then call the tool immediately.
## lookup_account(email_or_phone) — PROACTIVE
Use when: verifying identity or accessing billing.
Do NOT use when: caller refuses to identify after second request.
## check_outage(address) — PREAMBLES
Use when: caller reports failed connection or speed lower than 10 Mbps.
Do NOT use when: purely billing OR when internet speed is above 10 Mbps.
If either condition applies, inform the customer you cannot assist and hang up.
## refund_credit(account_id, minutes) — CONFIRMATION FIRST
Use when: confirmed outage > 240 minutes in the past 7 days (credit 60 minutes).
Do NOT use when: outage unconfirmed.
Confirmation phrase: “I can issue a credit for this outage—would you like me to go ahead?”
## schedule_technician(account_id, window) — CONFIRMATION FIRST
Use when: reboot + line checks fail AND outage=false.
Windows: “10am–12pm ET” or “2pm–4pm ET”.
Confirmation phrase: “I can schedule a technician to visit—should I book that for you?”
## escalate_to_human(account_id, reason) — PREAMBLES
Use when: harassment, threats, self-harm, repeated failure, billing disputes > $50, caller is frustrated, or caller requests escalation.
Preamble: “Let me connect you to a senior agent who can assist further.”Format des sorties d’outils
Certaines sorties d’outils, notamment les longues chaînes de caractères à répéter mot pour mot, peuvent être hors distribution pour le modèle, c’est-à-dire éloignées des données rencontrées pendant l’entraînement. Lors de l’entraînement, les sorties d’outils prennent généralement la forme d’objets JSON comportant des champs nommés. Si votre outil renvoie une chaîne brute et demande séparément au modèle de la « répéter exactement », le modèle risque davantage de la reformuler, de la tronquer ou d’y mêler son propre préambule.
Une solution pratique consiste à donner à la sortie le format habituel d’un résultat d’outil et à rendre l’exigence de répétition à l’identique explicite pour le modèle.
-
Quand l’utiliser : Un outil renvoie un contenu structuré long ou complexe (instructions en plusieurs phrases, ensembles d’informations à transmettre lors d’un transfert, identifiants/liens, résumés de politiques, procédures en plusieurs étapes, etc.) et vous observez des troncatures, des reformulations, des omissions de champs, des changements d’ordre ou l’ajout par le modèle de son propre préambule ou commentaire.
-
Effet : Encapsule la sortie de l’outil dans une petite enveloppe JSON explicite (par exemple,
response_textaccompagné d’indicateurs tels querequire_repeat_verbatim,formatoucontent_type) pour que la réponse ressemble davantage aux données de la distribution d’entraînement et que la manière attendue de la restituer soit claire pour le modèle. -
Comment l’adapter : Gardez un schéma minimal et stable. Documentez clairement la structure attendue de la sortie de l’outil, à la fois dans vos instructions de la section Outils et à côté de la définition de l’outil (par exemple, « Si
require_repeat_verbatimvaut true, produisez exactementresponse_textet rien d’autre » ou « Restituezresponse_texttel quel ; n’ajoutez, n’omettez et ne réordonnez aucun champ de la sortie de l’outil. »).
Exemples
Exemple : chaîne brute (plus sujette aux erreurs)
L’outil renvoie :
I just sent you an email with the verification link. Please open it and click “Confirm”.Le modèle dit parfois :
-
« Je vous ai envoyé un lien de vérification par e-mail… » (paraphrase)
-
Omet la dernière phrase (troncature)
-
Ajoute un commentaire (« Puis-je vous aider pour autre chose ? »)
Exemple : enveloppe JSON (plus proche des données d’entraînement, plus fiable)
L’outil renvoie :
{
"response_text": "I just sent you an email with the verification link. Please open it and click “Confirm”.",
"require_repeat_verbatim": true
}Comme ce format ressemble à un résultat d’outil habituel (objet JSON), le modèle parvient généralement plus facilement à :
-
reconnaître le contenu qui fait autorité (response_text)
-
comprendre la contrainte de restitution (require_repeat_verbatim)
-
reproduire fidèlement la sortie de l’outil, sans troncature ni commentaire supplémentaire
Reformulation des réponses de l’outil superviseur (architecture séparant réponse et réflexion)
Dans de nombreuses configurations vocales, le modèle temps réel se charge de répondre à l’utilisateur, tandis qu’un modèle textuel plus puissant se charge de la réflexion (planification, consultation des règles, exécution des procédures opérationnelles standard). Les réponses textuelles ne sont pas toujours adaptées à l’oral : le modèle chargé de répondre doit donc reformuler le texte du modèle chargé de la réflexion avant de générer l’audio.
- Quand l’utiliser : Lorsque la réponse orale du modèle chargé de répondre semble robotique, trop longue ou maladroite après réception d’une réponse du modèle chargé de la réflexion.
- Effet : Ajoute des instructions claires pour guider le modèle chargé de répondre dans la reformulation du texte du modèle chargé de la réflexion en une réponse courte, naturelle et conçue pour l’oral.
- Comment l’adapter : Ajustez le style des formulations, les phrases d’introduction et les limites de longueur aux attentes de votre cas d’utilisation.
Exemple
# Tools
## Supervisor Tool
Name: getNextResponseFromSupervisor(relevantContextFromLastUserMessage: string)
When to call:
- Any request outside the allow list.
- Any factual, policy, account, or process question.
- Any action that might require internal lookups or system changes.
When not to call:
- Simple greetings and basic chitchat.
- Requests to repeat or clarify.
- Collecting parameters for later Supervisor use:
- phone_number for account help (getUserAccountInfo)
- zip_code for store lookup (findNearestStore)
- topic or keyword for policy lookup (lookupPolicyDocument)
Usage rules and preamble:
1) Say a neutral filler phrase to the user, then immediately call the tool. Approved fillers: “One moment.”, “Let me check.”, “Just a second.”, “Give me a moment.”, “Let me see.”, “Let me look into that.” Fillers must not imply success or failure.
2) Do not mention the “Supervisor” when responding with filler phrase.
3) relevantContextFromLastUserMessage is a one-line summary of the latest user message; use an empty string if nothing salient.
4) After the tool returns, apply Rephrase Supervisor and send your reply.
### Rephrase Supervisor
- Start with a brief conversational opener using active language, then flow into the answer (for example: “Thanks for waiting—”, “Just finished checking that.”, “I’ve got that pulled up now.”).
- Keep it short: no more than 2 sentences.
- Use this template: opener + one-sentence gist + up to 3 key details + a quick confirmation or choice (for example: “Does that match what you expected?”, “Want me to review options?”).
- Read numbers for speech: money naturally (“$45.20” → “forty-five dollars and twenty cents”), phone numbers 3-3-4, addresses with individual digits, dates/times plainly (“August twelfth”, “three-thirty p.m.”).Voici un exemple sans instruction de reformulation :
Assistant : Le solde actuel de votre carte de crédit est positif, à 32 323 232 AUD.
Voici le même exemple avec l’instruction de reformulation :
Assistant : Je viens de vérifier : le solde de votre carte de crédit est de trente-deux millions trois cent vingt-trois mille deux cent trente-deux dollars en votre faveur. Votre dernier paiement a été traité le premier août. Cela correspond-il à ce que vous attendiez ?
Outils courants
gpt-realtime-1.5 a été entraîné à utiliser efficacement les outils courants suivants. Si votre cas d’utilisation nécessite un comportement similaire, conservez des noms, signatures et descriptions proches de ceux-ci pour maximiser la fiabilité et rester au plus près des données d’entraînement.
Voici quelques-uns des principaux outils courants à l’utilisation desquels le modèle a été entraîné :
Exemple
# answer(question: string)
Description: Call this when the customer asks a question that you don't have an answer to or asks to perform an action.
# escalate_to_human()
Description: Call this when a customer asks for escalation, or to talk to someone else, or expresses dissatisfaction with the call.
# finish_session()
Description: Call this when a customer says they're done with the session or doesn't want to continue. If it's ambiguous, confirm with the customer before calling.Déroulement de la conversation
Cette section explique comment structurer le dialogue en phases claires, chacune orientée vers un objectif, afin que le modèle sache exactement quoi faire à chaque étape. Elle définit le but de chaque phase, les instructions pour la mener à bien et les « critères de sortie » concrets pour passer à la suivante. Cela évite que le modèle ne reste bloqué, ne saute des étapes ou n’anticipe les suivantes, et permet de garder une conversation structurée, de l’accueil à la résolution.
De plus, organiser votre prompt en différents états de conversation permet de repérer plus facilement les types d’erreurs et d’itérer plus efficacement.
- Quand l’utiliser : Si les conversations semblent désorganisées, se bloquent avant d’atteindre leur but ou si le modèle peine à atteindre efficacement l’objectif.
- Effet : Découpe l’interaction en phases avec des objectifs, des instructions et des critères de sortie clairs.
- Comment l’adapter : Renommez les phases en fonction de votre workflow ; modifiez les instructions de chaque phase pour obtenir le comportement souhaité ; gardez les critères « Passer à la suite quand » concrets et limités à l’essentiel.
Exemple
# Conversation Flow
## 1) Greeting
Goal: Set tone and invite the reason for calling.
How to respond:
- Identify as NorthLoop Internet Support.
- Keep the opener brief and invite the caller’s goal.
- Confirm that customer is a Northloop customer
Exit to Discovery: Caller states they are a Northloop customer and mentions an initial goal or symptom.
## 2) Discover
Goal: Classify the issue and capture minimal details.
How to respond:
- Determine billing vs connectivity with one targeted question.
- For connectivity: collect the service address.
- For billing/account: collect email or phone used on the account.
Exit when: Intent and address (for connectivity) or email/phone (for billing) are known.
## 3) Verify
Goal: Confirm identity and retrieve the account.
How to respond:
- Once you have email or phone, call lookup_account(email_or_phone).
- If lookup fails, try the alternate identifier once; otherwise proceed with general guidance or offer escalation if account actions are required.
Exit when: Account ID is returned.
## 4) Diagnose
Goal: Decide outage vs local issue.
How to respond:
- For connectivity, call check_outage(address).
- If outage=true, skip local steps; move to Resolve with outage context.
- If outage=false, guide a short reboot/cabling check; confirm each step’s result before continuing.
Exit when: Root cause known.
## 5) Resolve
Goal: Apply fix, credit, or appointment.
How to respond:
- If confirmed outage > 240 minutes in the last 7 days, call refund_credit(account_id, 60).
- If outage=false and issue persists after basic checks, offer “10am–12pm ET” or “2pm–4pm ET” and call schedule_technician(account_id, chosen window).
- If the local fix worked, state the result and next steps briefly.
Exit when: A fix/credit/appointment has been applied and acknowledged by the caller.
## 6) Confirm/Close
Goal: Confirm outcome and end cleanly.
How to respond:
- Restate the result and any next step (e.g., stabilization window or tech ETA).
- Invite final questions; close politely if none.
Exit when: Caller declines more help.Exemples de formulations
Les exemples de formulations servent de repères au modèle. Ils illustrent le style, la concision et le ton que vous souhaitez lui faire adopter, sans l’enfermer dans une réponse figée.
- Quand l’utiliser : Les réponses ne reflètent pas le style de votre marque ou manquent de cohérence.
- Effet : Fournit des exemples de formulations que le modèle peut varier pour rester naturel et concis.
- Comment l’adapter : Remplacez les exemples pour les adapter à votre marque ; conservez l’avertissement « ne pas utiliser systématiquement ».
Exemple
# Sample Phrases
- Below are sample examples that you should use for inspiration. DO NOT ALWAYS USE THESE EXAMPLES, VARY YOUR RESPONSES.
Acknowledgements: “On it.” “One moment.” “Good question.”
Clarifiers: “Do you want A or B?” “What’s the deadline?”
Bridges: “Here’s the quick plan.” “Let’s keep it simple.”
Empathy (brief): “That’s frustrating—let’s fix it.”
Closers: “Anything else before we wrap?” “Happy to help next time.”Remarque : Si votre système vocal finit par ne faire que répéter les exemples de formulations, ce qui rend les échanges plus robotiques, essayez d’ajouter la contrainte de variété. Nous avons constaté que cela permettait de résoudre le problème.
Déroulement de la conversation + exemples de formulations
Ajouter des exemples de formulations aux différents états de la conversation est une approche utile pour montrer au modèle à quoi ressemble une bonne réponse :
Exemple
# Conversation Flow
## 1) Greeting
Goal: Set tone and invite the reason for calling.
How to respond:
- Identify as NorthLoop Internet Support.
- Keep the opener brief and invite the caller’s goal.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “Thanks for calling NorthLoop Internet—how can I help today?”
- “You’ve reached NorthLoop Support. What’s going on with your service?”
- “Hi there—tell me what you’d like help with.”
Exit when: Caller states an initial goal or symptom.
## 2) Discover
Goal: Classify the issue and capture minimal details.
How to respond:
- Determine billing vs connectivity with one targeted question.
- For connectivity: collect the service address.
- For billing/account: collect email or phone used on the account.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “Is this about your bill or your internet speed?”
- “What address are you using for the connection?”
- “What’s the email or phone number on the account?”
Exit when: Intent and address (for connectivity) or email/phone (for billing) are known.
## 3) Verify
Goal: Confirm identity and retrieve the account.
How to respond:
- Once you have email or phone, call lookup_account(email_or_phone).
- If lookup fails, try the alternate identifier once; otherwise proceed with general guidance or offer escalation if account actions are required.
Sample phrases:
- “Thanks—looking up your account now.”
- “If that doesn’t pull up, what’s the other contact—email or phone?”
- “Found your account. I’ll take care of this.”
Exit when: Account ID is returned.
## 4) Diagnose
Goal: Decide outage vs local issue.
How to respond:
- For connectivity, call check_outage(address).
- If outage=true, skip local steps; move to Resolve with outage context.
- If outage=false, guide a short reboot/cabling check; confirm each step’s result before continuing.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “I’m running a quick outage check for your area.”
- “No outage reported—let’s try a fast modem reboot.”
- “Please confirm the modem lights: is the internet light solid or blinking?”
Exit when: Root cause known.
## 5) Resolve
Goal: Apply fix, credit, or appointment.
How to respond:
- If confirmed outage > 240 minutes in the last 7 days, call refund_credit(account_id, 60).
- If outage=false and issue persists after basic checks, offer “10am–12pm ET” or “2pm–4pm ET” and call schedule_technician(account_id, chosen window).
- If the local fix worked, state the result and next steps briefly.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “There’s been an extended outage—adding a 60-minute bill credit now.”
- “No outage—let’s book a technician. I can do 10am–12pm ET or 2pm–4pm ET.”
- “Credit applied—you’ll see it on your next bill.”
Exit when: A fix/credit/appointment has been applied and acknowledged by the caller.
## 6) Confirm/Close
Goal: Confirm outcome and end cleanly.
How to respond:
- Restate the result and any next step (e.g., stabilization window or tech ETA).
- Invite final questions; close politely if none.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “We’re all set: [credit applied / appointment booked / service restored].”
- “You should see stable speeds within a few minutes.”
- “Your technician window is 10am–12pm ET.”
Exit when: Caller declines more help.
Déroulement avancé de la conversation
À mesure que les cas d’utilisation se complexifient, vous aurez besoin d’une structure capable d’évoluer tout en préservant l’efficacité du modèle. L’essentiel est de trouver un équilibre entre facilité de maintenance et simplicité : trop d’états rigides peuvent surcharger le modèle, dégrader ses performances et rendre les conversations robotiques.
Une meilleure approche consiste à concevoir des parcours qui réduisent la complexité perçue par le modèle. En gérant l’état de manière structurée mais souple, vous aidez le modèle à rester concentré et réactif, ce qui améliore l’expérience utilisateur.
Voici deux approches courantes pour gérer les scénarios complexes :
- Déroulement de la conversation sous forme de machine à états
- Déroulement dynamique de la conversation via session.updates
Déroulement de la conversation sous forme de machine à états
Définissez votre conversation sous la forme d’une structure JSON qui encode les états et les transitions. Vous pourrez ainsi plus facilement évaluer la couverture, repérer les cas limites et suivre les changements au fil du temps. Comme cette structure est stockée sous forme de code, vous pouvez en gérer les versions, comparer les différences et l’étendre à mesure que votre parcours évolue. Une machine à états vous permet également de contrôler précisément comment et quand la conversation passe d’un état à un autre.
Exemple
# Conversation States
[
{
"id": "1_greeting",
"description": "Begin each conversation with a warm, friendly greeting, identifying the service and offering help.",
"instructions": [
"Use the company name 'Snowy Peak Boards' and provide a warm welcome.",
"Let them know upfront that for any account-specific assistance, you’ll need some verification details."
],
"examples": [
"Hello, this is Snowy Peak Boards. Thanks for reaching out! How can I help you today?"
],
"transitions": [{
"next_step": "2_get_first_name",
"condition": "Once greeting is complete."
}, {
"next_step": "3_get_and_verify_phone",
"condition": "If the user provides their first name."
}]
},
{
"id": "2_get_first_name",
"description": "Ask for the user’s name (first name only).",
"instructions": [
"Politely ask, 'Who do I have the pleasure of speaking with?'",
"Do NOT verify or spell back the name; just accept it."
],
"examples": [
"Who do I have the pleasure of speaking with?"
],
"transitions": [{
"next_step": "3_get_and_verify_phone",
"condition": "Once name is obtained, OR name is already provided."
}]
},
{
"id": "3_get_and_verify_phone",
"description": "Request phone number and verify by repeating it back.",
"instructions": [
"Politely request the user’s phone number.",
"Once provided, confirm it by repeating each digit and ask if it’s correct.",
"If the user corrects you, confirm AGAIN to make sure you understand.",
],
"examples": [
"I'll need some more information to access your account if that's okay. May I have your phone number, please?",
"You said 0-2-1-5-5-5-1-2-3-4, correct?",
"You said 4-5-6-7-8-9-0-1-2-3, correct?"
],
"transitions": [{
"next_step": "4_authentication_DOB",
"condition": "Once phone number is confirmed"
}]
},
...Déroulement dynamique de la conversation
Dans cette approche, la conversation s’adapte en temps réel grâce à la mise à jour du prompt système et de la liste des outils en fonction de l’état actuel. Au lieu de présenter au modèle toutes les règles et tous les outils possibles à la fois, vous ne lui fournissez que ce qui est pertinent pour la phase active de la conversation.
Lorsque les conditions de fin d’un état sont remplies, utilisez session.update pour effectuer la transition, en remplaçant le prompt et les outils par ceux nécessaires à la phase suivante.
Cette approche réduit la charge cognitive du modèle, ce qui l’aide à traiter les tâches complexes sans être distrait par du contexte inutile.
Exemple
from typing import Literal
State = Literal["verify", "resolve"]
# Allowed transitions
TRANSITIONS: dict[State, list[State]] = {
"verify": ["resolve"],
"resolve": [], # terminal
}
def build_state_change_tool(current: State) -> dict:
allowed = TRANSITIONS[current]
readable = ", ".join(allowed) if allowed else "no further states (terminal)"
return {
"type": "function",
"name": "set_conversation_state",
"description": (
f"Switch the conversation phase. Current: '{current}'. "
f"You may switch only to: {readable}. "
"Call this AFTER exit criteria are satisfied."
),
"parameters": {
"type": "object",
"properties": {"next_state": {"type": "string", "enum": allowed}},
"required": ["next_state"],
},
}
# Minimal business tools per state
TOOLS_BY_STATE: dict[State, list[dict]] = {
"verify": [
{
"type": "function",
"name": "lookup_account",
"description": "Fetch account by email or phone.",
"parameters": {
"type": "object",
"properties": {"email_or_phone": {"type": "string"}},
"required": ["email_or_phone"],
},
}
],
"resolve": [
{
"type": "function",
"name": "schedule_technician",
"description": "Book a technician visit.",
"parameters": {
"type": "object",
"properties": {
"account_id": {"type": "string"},
"window": {"type": "string", "enum": ["10-12 ET", "14-16 ET"]},
},
"required": ["account_id", "window"],
},
}
],
}
# Short, phase-specific instructions
INSTRUCTIONS_BY_STATE: dict[State, str] = {
"verify": (
"# Role & Objective\n"
"Verify identity to access the account.\n\n"
"# Conversation (Verify)\n"
"- Ask for the email or phone on the account.\n"
"- Read back digits one-by-one (e.g., '4-1-5… Is that correct?').\n"
"Exit when: Account ID is returned.\n"
'When exit is satisfied: call set_conversation_state(next_state="resolve").'
),
"resolve": (
"# Role & Objective\n"
"Apply a fix by booking a technician.\n\n"
"# Conversation (Resolve)\n"
"- Offer two windows: '10–12 ET' or '2–4 ET'.\n"
"- Book the chosen window.\n"
"Exit when: Appointment is confirmed.\n"
"When exit is satisfied: end the call politely."
),
}
def build_session_update(state: State) -> dict:
"""Return the JSON payload for a Realtime `session.update` event."""
return {
"type": "session.update",
"session": {
"instructions": INSTRUCTIONS_BY_STATE[state],
"tools": TOOLS_BY_STATE[state] + [build_state_change_tool(state)],
},
}Sécurité et transfert
Avec les agents vocaux Realtime, il est souvent important de disposer d’un moyen fiable de passer le relais à un humain. Dans cette section, adaptez à votre cas d’utilisation les instructions précisant QUAND effectuer ce transfert.
- Quand l’utiliser : Le modèle peine à déterminer quand il convient de passer le relais à un humain ou à un système de secours
- Effet : Définit un transfert rapide et fiable, ainsi que le message à communiquer.
- Comment l’adapter : Indiquez vos propres seuils et ce que le modèle doit dire.
Exemple
# Safety & Escalation
When to escalate (no extra troubleshooting):
- Safety risk (self-harm, threats, harassment)
- User explicitly asks for a human
- Severe dissatisfaction (e.g., “extremely frustrated,” repeated complaints, profanity)
- **2** failed tool attempts on the same task **or** **3** consecutive no-match/no-input events
- Out-of-scope or restricted (e.g., real-time news, financial/legal/medical advice)
What to say at the same time as calling the escalate_to_human tool (MANDATORY):
- “Thanks for your patience—I’m connecting you with a specialist now.”
- Then call the tool: `escalate_to_human`
Examples that would require escalation:
- “This is the third time the reset didn’t work. Just get me a person.”
- “I am extremely frustrated!”Le premier exemple montre les réponses de gpt-4o-realtime-preview-2025-06-03 au cours d’une conversation avec cette instruction.

Le deuxième exemple montre les réponses de gpt-realtime-1.5 dans une conversation avec cette instruction.

gpt-realtime-1.5 parvient à suivre l’instruction et à passer le relais à un humain de manière plus fiable.
Prochaines étapes
Pour GPT-Live :
- Consultez la section Délégation et outils pour le prompt du backend et le contexte géré par l’application.
- Connectez-vous avec WebRTC ou WebSockets. Consultez la section Téléphonie et SIP pour les intégrations téléphoniques.
- Évaluez les agents vocaux selon la qualité des conversations et les résultats vérifiés des tâches.
Pour Realtime :
- Consultez le précédent Guide de conception de prompts pour Realtime pour découvrir d’autres exemples avec
gpt-realtime-1.5. - Consultez le guide d’évaluation de Realtime pour tester le comportement des agents vocaux sur des cas représentatifs.
- Connectez-vous avec WebRTC, WebSockets ou SIP.
- Découvrez le cycle de vie des conversations Realtime et consultez les coûts de Realtime.