Elige el modelo Realtime con el que estás desarrollando. Para GPT-Live, consulta Diseño de prompts para GPT-Live.
gpt-realtime-2 es nuestro modelo de voz con razonamiento de última generación para aplicaciones de voz a voz de baja latencia. Puede pensar antes de hablar, seguir instrucciones de forma más confiable, usar una ventana de contexto más amplia y llamar a herramientas con mayor precisión que los modelos realtime anteriores.
Para aprovechar estas mejoras, diseña prompts con un propósito más claro. Define explícitamente las responsabilidades del asistente, los puntos de decisión, el comportamiento de las llamadas a herramientas y las medidas de protección: qué debe hacer, cuándo debe hacerlo y qué debe evitar.
Empieza por lo sencillo. No sobrecargues el prompt desde el principio. Comienza con un prompt mínimo, ejecuta evaluaciones y luego agrega instrucciones solo para los comportamientos que fallen en las pruebas.
Elige un modelo
| Modelo | Cuándo usarlo | Aspectos clave del diseño de prompts |
|---|---|---|
gpt-realtime-2 | Necesitas las mejores capacidades de razonamiento, uso de herramientas y seguimiento de instrucciones en tiempo real. | Ajusta el esfuerzo de razonamiento, los preámbulos, las políticas de uso de herramientas, la captura exacta de entidades y el estado en sesiones largas. |
gpt-realtime-1.5 | Necesitas un modelo de voz a voz rápido y confiable, sin razonamiento. | Sigue la estructura básica de los prompts para tiempo real y prueba los comportamientos sensibles a la latencia. |
Guía de diseño de prompts para Realtime 2.0
Usa gpt-realtime-2 cuando el agente de voz necesite mejores capacidades de
razonamiento, selección de herramientas, manejo exacto de entidades o gestión del estado en sesiones largas.
Empieza con reasoning.effort: "low", prueba el comportamiento predeterminado de los
preámbulos y define claramente cuándo se requiere confirmación antes de realizar acciones de escritura.
Qué cambió en Realtime 2
Diseña los prompts para Realtime 2 como un agente de voz con razonamiento, no como un bot de voz básico.
| Cambio | Qué implica para los prompts |
|---|---|
| Razonamiento | Permite que el modelo razone internamente en tareas complejas antes de hablar o llamar a herramientas. Usa preámbulos para evitar silencios incómodos o frases de relleno innecesarias. |
| La precisión del prompt importa más | Reemplaza las indicaciones generales como “sé útil” por reglas claras sobre condiciones de activación, acciones y excepciones: cuándo actuar, qué hacer y cuándo no hacerlo. |
| Los conflictos entre instrucciones tienen un mayor costo | Elimina las reglas superpuestas con always, never, only y must, a menos que sean realmente necesarias. Define la prioridad cuando las reglas entren en conflicto. |
| Es más fácil dirigir el comportamiento al usar herramientas | Especifica cuándo el asistente debe actuar de inmediato, pedir información faltante, confirmar datos que requieren alta precisión, reintentar tras un fallo o escalar el caso. |
| Los preámbulos son parte fundamental del comportamiento | El modelo puede dar actualizaciones breves por voz antes de iniciar procesos más largos de razonamiento o uso de herramientas. Indica cuándo deben aparecer los preámbulos, qué tan breves deben ser y cuándo omitirlos. |
| Ventana de contexto ampliada | gpt-realtime-2 amplía la ventana de contexto en tiempo real de 32 000 a 128 000 tokens, lo que lo hace más adecuado para sesiones largas y prompts del sistema más extensos. |
Los preámbulos no son una cadena de pensamiento oculta. Son actualizaciones breves por voz, como “Voy a revisar ese pedido ahora”. No le pidas al modelo que revele su razonamiento privado.
Estructura recomendada del prompt
Usa secciones breves con títulos. El modelo debe poder encontrar rápidamente las instrucciones pertinentes.
# Role and Objective
# Personality and Tone
# Language
# Reasoning
# Message Channels
# Preambles
# Verbosity
# Tools
# Unclear Audio
# Entity Capture
# Long Context Behavior
# EscalationNo todos los casos de uso necesitan todas las secciones. Agrega las que sean pertinentes para tu producto.
Configura el esfuerzo de razonamiento
gpt-realtime-2 puede ofrecer un razonamiento más profundo a cambio de una mayor latencia. Usa el nivel de razonamiento más bajo que le proporcione al asistente suficiente inteligencia para el flujo de trabajo.
Empieza con low para la mayoría de los agentes de voz en producción. Aumenta o reduce el nivel según la complejidad de la tarea, la tolerancia a la latencia y el costo de los fallos.
| Esfuerzo | Cuándo usarlo | Ejemplo |
|---|---|---|
minimal | La prioridad es minimizar la latencia y la tarea es sencilla. | Comandos para el hogar inteligente, temporizadores y consultas sencillas del calendario. |
low | Necesitas respuestas rápidas y razonamiento básico. | Atención al cliente, consultas de pedidos y preguntas sencillas sobre políticas. |
medium | El asistente debe razonar para resolver tareas de varios pasos. | Soporte técnico, diagnósticos y enrutamiento complejo. |
high | Un razonamiento más profundo mejora considerablemente los resultados. | Flujos de trabajo de alta precisión, decisiones sobre escalamiento y tareas con restricciones. |
xhigh | El razonamiento máximo justifica la latencia y el costo adicionales. | Planificación compleja, clasificación de casos críticos y orquestación de herramientas en situaciones de alto riesgo. |
Además de configurar la API, orienta al modelo sobre cuándo y cuánto razonar.
## 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.Usa los preámbulos con un propósito claro
Los preámbulos son actualizaciones breves por voz que mantienen la sensación de que el agente responde con agilidad mientras razona, consulta información o llama a una herramienta. Bien usados, le dan al usuario la tranquilidad de saber que el asistente está trabajando. Mal usados, se convierten en relleno y aumentan la latencia percibida.
gpt-realtime-2 genera preámbulos de forma predeterminada. Empieza por probar el comportamiento predeterminado. Si no se ajusta a la experiencia de tu producto, modifícalo mediante instrucciones explícitas.

## 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."Controla la extensión de las respuestas
gpt-realtime-2 sigue mejor las indicaciones de extensión cuando el prompt especifica cuánto detalle dar para cada tipo de tarea. En lugar de decirle al modelo “sé conciso”, define qué significa ser conciso en cada contexto: las respuestas directas, los resultados de herramientas, la solución de problemas, las comparaciones y los escalamientos pueden requerir respuestas de distinta extensión.
## 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.Ejemplo:
Usuario: ¿Qué plan debería elegir?
Asistente: si buscas el menor costo, elige Basic. Si necesitas permisos de equipo y facturación compartida, elige Pro. Si la revisión de cumplimiento o los controles de administración son importantes, elige Enterprise.
Diseñar el comportamiento de las herramientas
gpt-realtime-2 es más eficaz al llamar a herramientas, pero su comportamiento sigue dependiendo del diseño del prompt y de las especificaciones de las herramientas. Si el prompt no define cuándo actuar, preguntar, confirmar o recuperarse de un error, el asistente puede llamar a herramientas demasiado pronto, hacer preguntas innecesarias o repetir llamadas fallidas.
Definir la iniciativa para llamar a herramientas
Un nivel alto de iniciativa funciona bien para acciones de solo lectura y bajo riesgo. Un nivel bajo es mejor cuando las herramientas modifican datos, producen efectos externos o dependen de identificadores exactos.
| Tipo de herramienta | Comportamiento predeterminado |
|---|---|
| Consulta de solo lectura y bajo riesgo | Llama a la herramienta cuando la intención y los campos requeridos estén claros. |
| Solo lectura con identificador exacto | Confirma el identificador antes de la consulta. |
| Comunicación visible para el usuario | Prepara un borrador o un resumen antes de enviar. |
| Cambios en la cuenta | Confirma antes de llamar a la herramienta. |
| Compras, cancelaciones, pagos | Confirma el monto, el destino y la consecuencia antes de llamar a la herramienta. |
| Acciones irreversibles o de alto impacto | Confirma de forma explícita y ofrece escalar el caso cuando corresponda. |
Usa este comportamiento predeterminado equilibrado cuando combines acciones de lectura y escritura. Adáptalo a tu caso de uso.
## 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.Ejemplo de alto riesgo:
Usuario: cobra el saldo pendiente a mi tarjeta.
Incorrecto:
Asistente: ya hice el cargo a tu tarjeta.
Correcto:
Asistente: para confirmar, quieres que cobre el saldo pendiente de $248,16 a la tarjeta registrada. ¿Procedo?
Recuperarse de los errores de las herramientas
Los errores de las herramientas forman parte de la conversación. Una buena recuperación debe explicar qué ocurrió e indicarle al usuario claramente el siguiente paso.
No trates todos los errores de la misma manera. La recuperación debe depender del tipo de herramienta, del tipo de error y del impacto en el usuario. Algunos errores deben resolverse con un reintento sin avisar al usuario. Otros requieren pedirle que aclare la información, corrija un identificador, confirme una nueva acción o elija una alternativa.
## 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.Incorrecto:
Asistente: algo salió mal.
Correcto:
Asistente: no encontré ninguna coincidencia para O R D guion 3 1 2 5 B 2 3. ¿Entendí mal alguna parte?
Mantener sincronizada la disponibilidad de herramientas
Los modelos Realtime tienen mucha iniciativa para ayudar. Si el prompt menciona una herramienta que no está disponible, o si la lista de herramientas no coincide con el prompt, el modelo puede inventar un nombre de herramienta o fingir que completó la acción.
Por ejemplo, si el prompt hace referencia a lookup_order, pero la herramienta proporcionada se llama search_orders, el modelo puede hacer la llamada con el nombre incorrecto o simular la acción.
## 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.Usa el metaprompt de auditoría de prompts del apéndice para revisar los prompts de producción y detectar contradicciones, herramientas faltantes e instrucciones poco robustas.
Manejar el silencio y el audio de fondo
Los agentes de voz tienden a responder de forma predeterminada. En producción, suelen recibir audio que no debería generar una respuesta hablada, como silencio, ruido de fondo, música de espera, audio de televisión o conversaciones ajenas.
Usa una herramienta de espera que no realice ninguna operación cuando el asistente deba permanecer en silencio y seguir escuchando. La herramienta le ofrece al modelo una acción válida que no requiere hablar, en lugar de hacerlo decir cosas como “Aquí estoy” o “No entendí”.
Diseño de la herramienta:
{
"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": []
}
}Combínala con instrucciones en el 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.Usa este recurso para el audio que no está dirigido al asistente, no para solicitudes poco claras del usuario. Si el usuario claramente le está hablando al asistente, pero el contenido es ininteligible, pide una aclaración.
Usar los canales de mensajes de forma deliberada
gpt-realtime-2 puede generar mensajes intermedios visibles para el usuario en el canal commentary y respuestas finales dirigidas al usuario en el canal final. Usa instrucciones específicas para cada canal cuando el comportamiento dependa del canal en el que aparece.
| Canal | ¿Visible para el usuario? | Se usa para |
|---|---|---|
commentary | Sí | Preámbulos y llamadas a herramientas. |
final | Sí | Mensaje final dirigido al usuario. |
Por ejemplo, las llamadas a herramientas se realizan en el canal commentary. Si quieres que el asistente diga algo antes, durante o después de usar una herramienta, especifica ese comportamiento en relación con el canal commentary.
Before calling tools in the commentary channel, briefly tell the user what you are doing.gpt-realtime-2 puede emitir varias fases de respuesta en un solo turno. En la salida de la API, esta distinción se representa mediante el evento response.done, que incluye un valor phase que indica si el contenido es commentary o la respuesta final.
Puedes usar este campo para manejar cada fase de forma diferente en tu aplicación. Por ejemplo, commentary puede reproducirse o mostrarse como una breve actualización intermedia, mientras que final_answer puede reservarse para la respuesta completa del asistente.
response.output[0].phase: "commentary"
response.output[1].phase: "final_answer"Manejar el audio poco claro
El modelo solo debe actuar a partir de audio que pueda entender con confianza. Si el audio es poco claro, debe hacer una pregunta breve para aclararlo en lugar de adivinar.
No permitas que el modelo infiera palabras faltantes, llame a herramientas, capture entidades, genere preámbulos ni dedique tiempo de razonamiento oculto a intentar reconstruir lo que el usuario pudo haber dicho.
## 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.Ejemplo:
Audio del usuario: “Consulta el pedido tres uno-” [se corta]
Incorrecto:
Asistente: voy a consultar el pedido 31 ahora.
Correcto:
Asistente: solo escuché parte del número de pedido. ¿Podrías repetirlo dígito por dígito?
Capturar entidades con exactitud
Muchos flujos de trabajo en tiempo real dependen de valores exactos: identificadores de pedidos, números de seguimiento, direcciones de correo electrónico, códigos de confirmación, números de cuenta, números de reclamo, identificadores de tickets, referencias de soporte y números de teléfono.
La interacción por voz dificulta esta tarea. Los usuarios hablan rápido, agrupan los números de distintas maneras, deletrean partes de los valores, usan muletillas, se corrigen en medio de un turno o pronuncian caracteres que suenan parecido. Un solo dígito incorrecto puede hacer que una búsqueda falle o devuelva la cuenta equivocada.
Captura las entidades con cautela. Recopila un valor a la vez, normaliza solo lo que esté claro, confirma los valores que requieren alta precisión antes de llamar a herramientas y permite retomar el proceso tras cada corrección.
Recopilar una entidad a la vez
Cuando un flujo de trabajo necesite varios valores, recopílalos uno a la vez. Esto evita que se mezclen los campos, especialmente en las conversaciones por voz.
## 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.Procesar caracteres deletreados
Usa este enfoque cuando los usuarios deletreen identificadores, códigos, nombres o direcciones de correo electrónico un carácter a la vez. La forma hablada es la entrada, no el valor final.
## 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.Normalizar con cuidado los números hablados
En el caso de los identificadores numéricos, los usuarios pueden decir los dígitos por separado, agruparlos o expresarlos como números en lenguaje natural. Si el campo espera un único valor numérico sin interrupciones, convierte en dígitos los números que se hayan dicho con claridad.
## 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?"Confirmar los identificadores exactos antes de llamar a herramientas
Los identificadores de pedidos, números de seguimiento, números de cuenta, números de reclamo, códigos de confirmación y otros identificadores similares son campos que requieren alta precisión. Confírmalos antes de usarlos en una llamada a una herramienta.
En el caso de los identificadores numéricos, repite el valor en voz alta dígito por dígito. Leer el valor como un número completo puede ocultar errores.
Ejemplo:
Asistente: solo para confirmar, escuché 8... 3... 5... 2... 1. ¿Es correcto?
Si el usuario corrige un carácter o dígito, repite el valor corregido completo antes de llamar a la herramienta.
Ejemplo:
Asistente: entendido. Tengo 8... 3... 5... 7... 1. ¿Es correcto?
## 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.Confirmar direcciones de correo electrónico carácter por carácter
Las direcciones de correo electrónico son valores importantes. Los puntos, guiones, guiones bajos, letras repetidas y nombres que suenan parecido pueden provocar fallas al buscar cuentas o hacer que los mensajes se envíen a la dirección equivocada.
Pídele al usuario que deletree la dirección de correo electrónico:
Asistente: ¿podrías deletrear la dirección de correo electrónico carácter por carácter para asegurarme de tenerla exactamente como es?
Al repetirla en voz alta, confirma la dirección final exacta:
Asistente: solo para confirmar, es c-h-e-n arroba example punto com, ¿correcto?
## 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?"Flujo de trabajo para recopilar entidades
Evitar problemas por la interpretación literal de las instrucciones
gpt-realtime-2 sigue las instrucciones de forma más literal que los modelos anteriores de tiempo real. Los prompts que funcionaban bien con modelos más antiguos pueden necesitar ajustes.
Usa un lenguaje preciso. El modelo puede dar prioridad a la redacción exacta de una instrucción por encima del comportamiento más amplio que buscabas. Las reglas generales o rígidas pueden dominar el comportamiento del asistente de formas inesperadas, especialmente cuando varias reglas se superponen.
Ten cuidado con las palabras que imponen restricciones, como must, only, never y always. Úsalas cuando el comportamiento sea realmente obligatorio, no como un recurso general para dar énfasis. El uso excesivo de restricciones estrictas puede hacer que el asistente sea rígido, demasiado cauteloso o incapaz de manejar excepciones razonables.
Prefiere un alcance preciso:
For write actions that modify user data, ask for confirmation before calling the tool.Evita un alcance amplio:
Always ask for confirmation before doing anything.La versión de alcance amplio puede provocar confirmaciones innecesarias antes de consultas inofensivas de solo lectura, como consultar el estado de un pedido, obtener información de disponibilidad o leer información de una cuenta.
Ejemplo de interpretación literal
Recomendaciones generales para el diseño de prompts:
- Prefiere instrucciones explícitas en lugar de intenciones implícitas.
- Evita las palabras que imponen restricciones innecesarias, salvo que el comportamiento deba ser realmente rígido.
- Reduce al mínimo las indicaciones contradictorias.
- Ten cuidado con las instrucciones de prioridad que se superponen o compiten entre sí.
- Prueba los prompts de forma incremental. Pequeños cambios en la redacción pueden tener grandes efectos en el comportamiento.
- Al migrar desde modelos anteriores de tiempo real, ten en cuenta que algunos prompts necesitarán una reestructuración para obtener los mejores resultados.
Controlar el idioma y el acento por separado
El idioma y el acento deben controlarse por separado.
El acento de un usuario no equivale al idioma que quiere usar. Un usuario puede hablar inglés con acento hindi, español, francés o mandarín y aun así esperar respuestas en inglés.
Evita instrucciones generales sobre el idioma, como:
Mirror the user.
Respond naturally in the user's language.
Switch languages when appropriate.
Sound local.
Adapt to the user's accent.Estas instrucciones son demasiado generales. El modelo puede interpretar el acento, las muletillas, las señales verbales de escucha o las palabras aisladas en otros idiomas como un motivo para cambiar de idioma.
Política de uso del inglés
## 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.Política multilingüe
## 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]?"Control del acento
gpt-realtime-2 puede seguir con mayor fidelidad las instrucciones sobre el acento, pero los prompts imprecisos al respecto pueden causar desviaciones o cambios de idioma no deseados.
Los prompts para controlar el acento funcionan mejor cuando especifican:
- el acento deseado;
- qué características deben mantenerse estables;
- el ritmo, la acentuación y la prosodia deseados;
- si la adaptación del acento debe afectar la elección del idioma.
En lugar de:
Sound Australian.Usa:
## 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.Voces personalizadas
Usa voces personalizadas cuando las voces estándar no puedan cumplir de manera confiable los requisitos de marca, acento o personaje.
El diseño de prompts permite orientar el acento, el ritmo y la expresión vocal, pero no puede reemplazar por completo el diseño de la voz. Para los casos de uso que requieren una identidad vocal de marca consistente o fidelidad al acento, considera las voces personalizadas.
Las voces personalizadas están disponibles solo para clientes aprobados. Comunícate con el equipo que gestiona tu cuenta para solicitar acceso.
Mantener el estado en sesiones largas
gpt-realtime-2 amplía la ventana de contexto en tiempo real de 32 000 a 128 000 tokens, lo que lo hace más adecuado para sesiones largas. Para conversaciones bidireccionales con mucha información, conviene pensar en 128 000 tokens como aproximadamente 1-2 horas de contexto de audio sin procesar con alta densidad de información. Esto variará según el uso de herramientas, el razonamiento interno, los registros incorporados y otros detalles de la sesión.
En los casos de uso con contexto extenso, gpt-realtime-2 funciona mejor cuando puede distinguir qué información está vigente, cuál sirve como antecedente y cuál debe ignorarse si las fuentes se contradicen. No esperes que el modelo infiera la prioridad de las fuentes a partir de una transcripción sin procesar o de una gran cantidad de contexto sin organizar. Usa una estructura.
Usa un patrón estructurado al iniciar una sesión con una gran cantidad de contexto, como registros recuperados, historial de conversaciones previas, políticas, resúmenes, notas de la cuenta o documentos de referencia.
Migrar desde modelos anteriores en tiempo real
Al migrar desde modelos anteriores en tiempo real, considera el prompt como un medio para definir el comportamiento, no solo como texto que hay que trasladar.
- Usa Codex o un modelo de razonamiento potente para reestructurar el prompt según las recomendaciones más recientes de diseño de prompts para Realtime. Incluye un enlace a esta guía de diseño de prompts para basar la migración en prácticas recomendadas.
- Configura el esfuerzo de razonamiento en
lowen lugar del valor predeterminado. Auméntalo solo para flujos de trabajo que requieran una planificación más profunda. - Revisa los nombres de las herramientas, los parámetros, las enumeraciones, los esquemas JSON y otros ajustes para asegurarte de que coincidan con la implementación esperada.
- Elimina los ejemplos desactualizados. Agrega ejemplos breves de casos en los que todo funciona como se espera, ambigüedades, interrupciones, llamadas a herramientas y comportamientos alternativos.
- Compara conversaciones representativas antes y después de la migración. Usa una evaluación existente para detectar regresiones y documenta los cambios de comportamiento intencionales.
- Haz una revisión final de coherencia. Confirma que el prompt distinga claramente entre requisitos obligatorios, valores predeterminados, reglas para herramientas, reglas de seguridad y comportamientos alternativos.
- Ejecuta evaluaciones, examina fallas representativas y ajusta el prompt de forma iterativa hasta que los comportamientos deseados sean confiables.
Guía de diseño de prompts para Realtime 1.5
gpt-realtime-1.5 es un modelo de voz a voz de la Realtime API. Las mismas recomendaciones de diseño de prompts para gpt-realtime se aplican a este modelo.
Los sistemas de voz a voz son esenciales para hacer de la voz una interfaz principal de IA. gpt-realtime-1.5 permite crear agentes de voz en tiempo real robustos y fáciles de usar, capaces de manejar flujos de trabajo críticos a escala.
En comparación con los modelos preliminares anteriores en tiempo real, gpt-realtime-1.5 ofrece un mejor seguimiento de instrucciones, llamadas a herramientas más confiables, mayor calidad de voz y una experiencia más fluida en general. Estas mejoras hacen viable pasar de enfoques encadenados a experiencias realmente en tiempo real, lo que reduce la latencia y produce respuestas que suenan más naturales y expresivas.
Los modelos en tiempo real se benefician de técnicas de diseño de prompts que no serían directamente aplicables a los modelos basados en texto. Esta guía de diseño de prompts comienza con una estructura sugerida y luego explica cada parte con consejos prácticos, pequeños patrones que puedes copiar y ejemplos que puedes adaptar a tu caso de uso.
Consejos generales
- Itera constantemente: pequeños cambios en la redacción pueden hacer que el comportamiento sea el esperado o deje de serlo.
- Ejemplo: en una instrucción para audio poco claro, cambiamos “inaudible” → “ininteligible”, lo que mejoró el manejo de entradas con ruido.
- Prefiere las viñetas a los párrafos: las viñetas claras y breves funcionan mejor que los párrafos largos.
- Guía con ejemplos: el modelo sigue de cerca las frases de ejemplo.
- Sé preciso: la ambigüedad o las instrucciones contradictorias reducen el rendimiento, al igual que en GPT-5.
- Controla el idioma: fija un idioma de salida si observas cambios de idioma no deseados.
- Reduce la repetición: agrega una regla de variedad para reducir las expresiones robóticas.
- Usa mayúsculas para dar énfasis: escribir las reglas clave en mayúsculas las destaca y facilita que el modelo las siga.
- Convierte las reglas no textuales en texto: en lugar de escribir “IF x > 3 THEN ESCALATE”, escribe “SI HAY MÁS DE TRES FALLAS, DERIVA EL CASO”.
Estructura del prompt
Organizar el prompt facilita que el modelo comprenda el contexto y mantenga la coherencia entre turnos. También te facilita hacer ajustes iterativos y modificar las secciones problemáticas.
- Qué hace: usa secciones claras y con títulos en el prompt del sistema para que el modelo pueda encontrarlas y seguirlas. Mantén cada sección centrada en un solo tema.
- Cómo adaptarlo: agrega secciones específicas del ámbito de aplicación (por ejemplo, Cumplimiento o Política de marca). Elimina las secciones que no necesites (por ejemplo, Pronunciaciones de referencia, si no hay problemas de pronunciación).
Ejemplo
# 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 logicRol y objetivo
Esta sección define quién es el agente y qué significa dar la tarea por “terminada”. Los ejemplos muestran dos identidades diferentes para demostrar hasta qué punto el modelo se ajusta al rol y al objetivo cuando se definen de forma explícita.
- Cuándo usarlo: el modelo no adopta la personalidad, el rol o el alcance de la tarea que necesitas.
- Qué hace: fija la identidad del agente de voz para que sus respuestas se ajusten a la descripción de ese rol
- Cómo adaptarlo: modifica el rol según tu caso de uso
Ejemplo (el modelo adopta un acento específico)
# Role & Objective
You are a Quebecois French-speaking customer service bot. Your task is to answer the user's question.Versión preliminar anterior en tiempo real:
gpt-realtime-1.5:
Ejemplo (el modelo interpreta un personaje)
# 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$.Versión preliminar anterior en tiempo real:
gpt-realtime-1.5:
gpt-realtime-1.5 puede desempeñar el rol especificado de manera más confiable que los modelos preliminares anteriores en tiempo real.
Personalidad y tono
gpt-realtime-1.5 sigue bien las instrucciones al imitar una personalidad o un tono determinados. Puedes adaptar la experiencia de voz y la expresión vocal a las expectativas de tu caso de uso.
- Cuándo usarlo: las respuestas suenan monótonas, son demasiado extensas o varían de forma inconsistente entre turnos.
- Qué hace: define la voz, la brevedad y el ritmo para que las respuestas suenen naturales y consistentes.
- Cómo adaptarlo: ajusta la calidez, la formalidad y la extensión predeterminada. En ámbitos regulados, prioriza la precisión y la neutralidad. Agrega otras subsecciones relevantes para tu caso de uso.
Ejemplo
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
2–3 sentences per turn.Ejemplo (varias emociones)
# Personality & Tone
- Start your response very happy
- Midway, change to sad
- At the end change your mood to very angrygpt-realtime-1.5:
El modelo puede seguir las instrucciones complejas y alternar entre tres emociones a lo largo de la respuesta de audio.
Instrucciones de velocidad
En la Realtime API, el parámetro speed cambia la velocidad de reproducción, no la forma en que el modelo genera el habla. Para que realmente hable más rápido, agrega instrucciones que orienten el ritmo.
- Cuándo usarlo: los usuarios quieren que la voz hable más rápido; la velocidad de reproducción (con el parámetro speed) por sí sola no corrige el estilo del habla.
- Qué hace: ajusta el estilo del habla (brevedad, cadencia) independientemente de la velocidad de reproducción del cliente.
- Cómo adaptarlo: modifica la instrucción de velocidad para cumplir los requisitos de tu caso de uso.
Ejemplo
# 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.Versión preliminar anterior de realtime:
gpt-realtime-1.5:
Con instrucciones explícitas sobre el ritmo, gpt-realtime-1.5 puede hablar a un ritmo notablemente más rápido sin sonar demasiado apresurado.
Restricción de idioma
Las restricciones de idioma garantizan que el modelo responda de forma consistente en el idioma previsto, incluso en condiciones difíciles, como ruido de fondo o entradas multilingües.
- Cuándo usarlo: para evitar cambios accidentales de idioma en entornos multilingües o ruidosos.
- Qué hace: limita las respuestas al idioma elegido para evitar cambios accidentales de idioma.
- Cómo adaptarlo: reemplaza “inglés” por tu idioma de destino o agrega instrucciones más complejas según tu caso de uso.
Ejemplo (limitar las respuestas a un solo idioma)
# 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.Estas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.

Ejemplo (el modelo enseña un idioma)
# 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.Estas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.

El modelo puede alternar entre idiomas según las instrucciones personalizadas.
Reducir la repetición
El modelo realtime puede seguir de cerca las frases de ejemplo para mantener el estilo de la marca, pero puede usarlas en exceso y hacer que las respuestas suenen robóticas o repetitivas. Agregar una regla sobre la repetición ayuda a mantener la variedad sin perder la claridad ni la voz de la marca.
- Cuándo usarlo: las respuestas repiten las mismas frases de apertura, muletillas o estructuras de oraciones en distintos turnos o sesiones.
- Qué hace: agrega una regla de variedad que desalienta la repetición de frases, favorece los sinónimos y las estructuras alternativas de oraciones, y mantiene intactos los términos obligatorios.
- Cómo adaptarlo: ajusta el nivel de exigencia (por ejemplo, “no repitas la misma frase de apertura más de una vez cada N turnos”), permite expresamente las frases que deben conservarse (por motivos legales, de cumplimiento o de marca) y admite formulaciones más acotadas cuando la consistencia sea importante.
Ejemplo
# 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.Estas son las respuestas antes de aplicar la instrucción con gpt-realtime-1.5. El modelo repite la misma confirmación: Got it.

Estas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.

Ahora el modelo puede variar sus respuestas y confirmaciones sin sonar robótico.
Pronunciaciones de referencia
Esta sección explica cómo garantizar que el modelo pronuncie correctamente las palabras, los números, los nombres y los términos importantes durante las interacciones habladas.
- Cuándo usarlo: los nombres de marcas, los términos técnicos o los nombres de lugares suelen pronunciarse mal.
- Qué hace: mejora la confianza y la claridad mediante indicaciones fonéticas.
- Cómo adaptarlo: mantén una lista breve y actualízala a medida que escuches errores.
Ejemplo
# 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”Versión preliminar anterior de realtime:
gpt-realtime-1.5:
Con las instrucciones de pronunciación de referencia, gpt-realtime-1.5 puede pronunciar correctamente SQL como “sequel”.
Pronunciación de caracteres alfanuméricos
Realtime S2S puede pronunciar de forma poco clara o unir dígitos y letras al repetir información clave (números de teléfono, de tarjetas de crédito o IDs de pedidos). La confirmación explícita carácter por carácter evita errores de escucha y favorece una síntesis de voz más clara.
- Cuándo usarlo: si al modelo le cuesta captar o repetir números de teléfono, números de tarjetas, códigos 2FA, IDs de pedidos, números de serie, direcciones, números de unidad o cadenas alfanuméricas mixtas.
- Qué hace: obliga al modelo a decir un carácter a la vez con separadores, luego confirmarlo con el usuario y volver a confirmarlo después de las correcciones. Opcionalmente, usa una referencia fonética para desambiguar las letras (por ejemplo, “A de Alpha”).
Ejemplo (sección de instrucciones generales)
# 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.Consejo: si sigues una estrategia de diseño de prompts basada en el flujo de la conversación, puedes especificar en qué estado de la conversación debe aplicarse la instrucción de pronunciación de caracteres alfanuméricos.
Ejemplo (instrucción en un estado de la conversación)
(tomado del flujo de conversación del prompt de nuestro 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"
}]
}Estas son las respuestas antes de aplicar la instrucción con gpt-realtime-1.5.
¡Claro! El número es 55119765423. ¡Avísame si necesitas algo más!
Estas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.
¡Claro! El número es: 5-5-1-1-1-9-7-6-5-4-2-3. ¡Por favor, avísame si necesitas algo más!
Instrucciones
Esta sección ofrece orientación sobre cómo diseñar prompts para indicarle al modelo que resuelva tu tarea, aplique las prácticas recomendadas y corrija posibles problemas.
Quizá no resulte sorprendente que recomendemos patrones de diseño de prompts similares a los de GPT-4.1 para obtener los mejores resultados.
Seguimiento de instrucciones
Al igual que GPT-4.1 y GPT-5, gpt-realtime-1.5 tendrá un peor desempeño si las instrucciones son contradictorias, ambiguas o poco claras.
- Cuándo usarlo: las respuestas se apartan de las reglas, omiten fases o usan las herramientas de forma incorrecta.
- Qué hace: usa un LLM para señalar ambigüedades, contradicciones y definiciones faltantes antes del lanzamiento.
Prompt para evaluar la calidad de las instrucciones (se puede usar en ChatGPT o con la API)
Usa el siguiente prompt con GPT-5 para identificar aspectos problemáticos de tu prompt que puedas corregir.
## 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
"""Metaprompt para optimizar prompts (se puede usar en ChatGPT o con la API)
Este metaprompt te ayuda a mejorar tu prompt de sistema base al centrarse en un tipo de falla específico. Proporciona el prompt actual y describe el problema que observas. El modelo (GPT-5) sugerirá variantes mejoradas que refuercen las restricciones y reduzcan el problema.
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?Audio ausente o poco claro
A veces, el modelo cree escuchar algo e intenta responder. Puedes agregar una instrucción personalizada que le indique cómo comportarse cuando el audio o lo que dice el usuario no se entiende con claridad. Ajusta el comportamiento deseado a tu caso de uso. Por ejemplo, quizá prefieras que el modelo repita la misma pregunta en lugar de pedir una aclaración.
- Cuándo usarlo: el ruido de fondo, las palabras incompletas o el silencio provocan respuestas no deseadas.
- Qué hace: evita respuestas injustificadas y permite pedir aclaraciones de forma natural.
- Cómo adaptarlo: elige entre pedir una aclaración o repetir la última pregunta según el caso de uso.
Ejemplo (tos y audio poco claro)
# 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.Estas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.
En este ejemplo, el modelo pide una aclaración después de mi tos (muy) fuerte y del audio poco claro.
Música o sonidos de fondo
En ocasiones, el modelo puede generar música de fondo, tarareos, ruidos rítmicos o artefactos sonoros no deseados durante la generación de voz. Estos artefactos pueden reducir la claridad, distraer a los usuarios o hacer que el asistente parezca menos profesional. Las siguientes instrucciones ayudan a evitar o reducir considerablemente estos problemas.
- Cuándo usarlo: úsalo cuando notes elementos musicales o efectos de sonido no deseados en las respuestas de audio de Realtime.
- Qué hace: orienta al modelo para que evite generar estos artefactos de audio no deseados.
- Cómo adaptarlo: ajusta la instrucción para intentar suprimir explícitamente los patrones sonoros específicos que estás detectando.
Ejemplo
# Instructions/Rules
...
- Do not include any sound effects or onomatopoeic expressions in your responses.Herramientas
Usa esta sección para indicarle al modelo cómo usar tus funciones y herramientas. Especifica cuándo llamar a una herramienta y cuándo no, qué argumentos recopilar, qué decir mientras se ejecuta una llamada y cómo manejar errores o resultados parciales.
Selección de herramientas
gpt-realtime-1.5 sigue las instrucciones de cerca. Sin embargo, si las instrucciones contradicen aquello a lo que el modelo tiene acceso, por ejemplo, si mencionas en el prompt herramientas que NO se incluyen en la lista de herramientas, esto puede dar lugar a respuestas deficientes.
- Cuándo usarlo: los prompts mencionan herramientas que en realidad no están disponibles.
- Qué hace: revisa las herramientas disponibles y el prompt del sistema para comprobar que sean coherentes entre sí.
Ejemplo
# Tools
## lookup_account(email_or_phone)
...
## check_outage(address)
...Debemos asegurarnos de que las mismas herramientas estén disponibles y de que las descripciones no se contradigan entre sí:
[
{
"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": {
...
}
]Preámbulos para llamadas a herramientas
En algunos casos de uso, puede ser útil que el modelo Realtime genere una respuesta de audio al mismo tiempo que llama a una herramienta. Esto mejora la experiencia del usuario al disimular la latencia. Puedes modificar la frase de ejemplo para adaptarla a tu caso de uso.
- Cuándo usarlo: los usuarios necesitan una confirmación inmediata al mismo tiempo que se llama a una herramienta; ayuda a disimular la latencia.
- Qué hace: agrega un preámbulo breve y consistente antes de llamar a una herramienta.
Ejemplo
# Tools
- Before any tool call, say one short line like “I’m checking that now.” Then call the tool immediately.Estas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.

Con esta instrucción, el modelo genera la respuesta de audio “Lo estoy revisando ahora mismo” al mismo tiempo que llama a la herramienta.
Preámbulos para llamadas a herramientas + frases de ejemplo
Si quieres controlar con mayor precisión qué tipo de frases genera el modelo mientras llama a una herramienta, puedes agregar frases de ejemplo en la descripción de la especificación de la herramienta.
Ejemplo
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,
},
},
]Llamadas a herramientas sin confirmación
A veces, el modelo puede pedir confirmación antes de llamar a una herramienta. En algunos casos de uso, esto puede empeorar la experiencia del usuario final porque el modelo no está actuando de forma proactiva.
- Cuándo usarlo: el agente pide permiso antes de realizar llamadas evidentes a herramientas.
- Qué hace: elimina ciclos de confirmación innecesarios.
Ejemplo
# Tools
- When calling a tool, do not ask for any user confirmation. Be proactiveEstas son las respuestas después de aplicar la instrucción con gpt-realtime-1.5.

En el ejemplo, puedes observar que el modelo en tiempo real no generó ninguna respuesta de audio; llamó directamente a la herramienta correspondiente.
Consejo: si notas que el modelo se apresura a llamar a una herramienta, prueba suavizar la redacción. Por ejemplo, sustituir términos más enfáticos como “proactivo” por otros más moderados puede ayudar a que el modelo actúe con más calma y menos precipitación.
Desempeño en las llamadas a herramientas
A medida que los casos de uso se vuelven más complejos y aumenta la cantidad de herramientas disponibles, resulta fundamental indicarle explícitamente al modelo cuándo usar cada herramienta y, con la misma importancia, cuándo no hacerlo. Las reglas de uso claras no solo mejoran la precisión de las llamadas a herramientas, sino que también ayudan al modelo a elegir la herramienta adecuada en el momento indicado.
- Cuándo usarlo: el modelo tiene dificultades para realizar correctamente las llamadas a herramientas y necesita instrucciones explícitas para reducir su uso incorrecto.
- Qué hace: agrega instrucciones sobre cuándo “usar/evitar” cada herramienta. También puedes agregar instrucciones sobre secuencias de llamadas a herramientas (después de la llamada a la herramienta A, puedes llamar a la herramienta B o C)
Ejemplo
# 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.Consejo: si una llamada a una herramienta puede fallar de forma impredecible, agrega instrucciones claras para manejar los fallos, de modo que el modelo responda adecuadamente.
Comportamiento por herramienta
Puedes ajustar con precisión cómo se comporta el modelo con herramientas específicas en lugar de aplicar una sola regla global. Por ejemplo, quizá quieras que las herramientas de LECTURA se llamen de forma proactiva, mientras que las de ESCRITURA requieran una confirmación explícita.
- Cuándo usarlo: las instrucciones globales sobre proactividad, confirmación o preámbulos no se adaptan a todas las herramientas.
- Qué hace: agrega reglas de comportamiento para cada herramienta que definen si el modelo debe llamarla de inmediato, pedir confirmación primero o decir un preámbulo antes de la llamada.
Ejemplo
# 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.”Formato de los resultados de las herramientas
Algunos resultados de herramientas, en especial las cadenas largas que deben repetirse textualmente, pueden estar fuera de la distribución de entrenamiento del modelo. Durante el entrenamiento, los resultados de herramientas suelen tener la forma de objetos JSON con campos con nombre. Si tu herramienta devuelve una cadena sin procesar y, por separado, le pide al modelo que la “repita exactamente”, el modelo puede ser más propenso a parafrasearla, truncarla o mezclarla con su propio preámbulo.
Una solución práctica consiste en darle al resultado de la herramienta un formato habitual y expresar el requisito de repetición textual de forma explícita para el modelo.
-
Cuándo usarlo: una herramienta devuelve contenido estructurado largo o complejo (instrucciones de varias oraciones, paquetes de información para transferencias, identificadores/enlaces, resúmenes de políticas, procedimientos de varios pasos, etc.) y observas truncamiento, paráfrasis, omisión de campos, cambios de orden o que el modelo mezcla el contenido con su propio preámbulo o comentario.
-
Qué hace: encapsula el resultado de la herramienta en una estructura JSON pequeña y explícita (por ejemplo,
response_textjunto con indicadores comorequire_repeat_verbatim,formatocontent_type) para que la respuesta se ajuste mejor a la distribución de entrenamiento y el comportamiento esperado al reproducirla sea claro para el modelo. -
Cómo adaptarlo: mantén el esquema mínimo y estable. Documenta claramente la estructura esperada del resultado de la herramienta tanto en las instrucciones de Herramientas como junto a la definición de la herramienta (por ejemplo, “Si
require_repeat_verbatimes true, genera exactamenteresponse_texty nada más”, o “Presentaresponse_texttal cual; no agregues, omitas ni reordenes campos del resultado de la herramienta”).
Ejemplos
Ejemplo: cadena sin procesar (más propensa a errores)
La herramienta devuelve:
I just sent you an email with the verification link. Please open it and click “Confirm”.El modelo a veces dice:
-
“Te envié un enlace de verificación por correo…” (paráfrasis)
-
Omite la última oración (truncamiento)
-
Agrega comentarios adicionales (“¿Puedo ayudarte con algo más?”)
Ejemplo: contenido encapsulado en JSON (más acorde con la distribución de entrenamiento, más confiable)
La herramienta devuelve:
{
"response_text": "I just sent you an email with the verification link. Please open it and click “Confirm”.",
"require_repeat_verbatim": true
}Como esto se parece a un resultado típico de una herramienta (un objeto JSON), al modelo generalmente le resulta más fácil:
-
reconocer cuál es el contenido “autorizado” (response_text)
-
entender la restricción sobre cómo expresar la respuesta (require_repeat_verbatim)
-
reproducir la salida de la herramienta sin truncamientos ni comentarios adicionales
Reformular la respuesta de la herramienta supervisora (arquitectura de respuesta y razonamiento)
En muchas configuraciones de voz, el modelo en tiempo real actúa como modelo de respuesta (habla con el usuario), mientras que un modelo de texto más potente actúa como modelo de razonamiento (planifica, consulta políticas y completa procedimientos operativos estándar). Las respuestas de texto no siempre son adecuadas para expresarlas en voz alta, por lo que el modelo de respuesta debe reformular el texto del modelo de razonamiento para adaptarlo al habla antes de generar el audio.
- Cuándo usarlo: cuando la salida hablada del modelo de respuesta suena robótica, demasiado larga o poco natural después de recibir una respuesta del modelo de razonamiento.
- Qué hace: agrega instrucciones claras que guían al modelo de respuesta para reformular el texto del modelo de razonamiento en una respuesta breve y natural, pensada para expresarse en voz alta.
- Cómo adaptarlo: ajusta el estilo de las frases, las expresiones de apertura y los límites de extensión según lo que requiera tu caso de uso.
Ejemplo
# 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.”).Aquí tienes un ejemplo sin la instrucción de reformulación:
Asistente: el saldo actual de tu tarjeta de crédito es positivo, de 32 323 232 AUD.
Aquí tienes el mismo ejemplo con la instrucción de reformulación:
Asistente: acabo de revisarlo. El saldo de tu tarjeta de crédito es de treinta y dos millones trescientos veintitrés mil doscientos treinta y dos dólares a tu favor. Tu último pago se procesó el primero de agosto. ¿Coincide con lo que esperabas?
Herramientas comunes
gpt-realtime-1.5 se entrenó para usar eficazmente las siguientes herramientas comunes. Si tu caso de uso necesita un comportamiento similar, mantén los nombres, las firmas y las descripciones parecidos a estos para maximizar la confiabilidad y ajustarte mejor a la distribución de entrenamiento.
A continuación se presentan algunas de las herramientas comunes importantes con las que se entrenó el modelo:
Ejemplo
# 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.Flujo de conversación
Esta sección explica cómo estructurar el diálogo en fases claras y orientadas a objetivos para que el modelo sepa exactamente qué hacer en cada paso. Define el propósito de cada fase, las instrucciones para avanzar por ella y los “criterios de salida” concretos para pasar a la siguiente. Esto evita que el modelo se estanque, omita pasos o se adelante, y garantiza que la conversación se mantenga organizada desde el saludo hasta la resolución.
Además, organizar tu prompt en distintos estados de conversación facilita la identificación de tipos de errores y permite iterar de forma más eficaz.
- Cuándo usarlo: si las conversaciones parecen desorganizadas, se estancan antes de alcanzar la meta o al modelo le cuesta cumplir el objetivo de forma eficaz.
- Qué hace: divide la interacción en fases con objetivos, instrucciones y criterios de salida claros.
- Cómo adaptarlo: cambia los nombres de las fases para que coincidan con tu flujo de trabajo; modifica las instrucciones de cada fase para lograr el comportamiento previsto; mantén la condición “Salir cuando” concreta y mínima.
Ejemplo
# 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.Frases de ejemplo
Las frases de ejemplo sirven como “ejemplos de referencia” para el modelo. Le muestran el estilo, la brevedad y el tono que quieres que siga, sin limitarlo a una única respuesta rígida.
- Cuándo usarlo: las respuestas no reflejan el estilo de tu marca o no son consistentes.
- Qué hace: proporciona frases de ejemplo que el modelo puede variar para mantener respuestas naturales y breves.
- Cómo adaptarlo: reemplaza los ejemplos por otros que se ajusten a tu marca; conserva la advertencia de “no usarlos siempre”.
Ejemplo
# 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.”Nota: si tu sistema de voz termina repitiendo únicamente las frases de ejemplo de manera constante, lo que genera una experiencia de voz más robótica, prueba agregar la restricción de variedad. Hemos visto que esto resuelve el problema.
Flujo de conversación + frases de ejemplo
Agregar frases de ejemplo en los distintos estados del flujo de conversación es un patrón útil para enseñarle al modelo cómo es una buena respuesta:
Ejemplo
# 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.
Flujo de conversación avanzado
A medida que los casos de uso se vuelven más complejos, necesitarás una estructura que pueda crecer sin que el modelo pierda eficacia. La clave está en equilibrar la facilidad de mantenimiento con la simplicidad: demasiados estados rígidos pueden sobrecargar al modelo, perjudicar su rendimiento y hacer que las conversaciones suenen robóticas.
Un mejor enfoque es diseñar flujos que reduzcan la complejidad que percibe el modelo. Al gestionar el estado de forma estructurada pero flexible, le facilitas al modelo mantenerse enfocado y responder con agilidad, lo que mejora la experiencia del usuario.
Dos patrones comunes para gestionar escenarios complejos son:
- Flujo de conversación como máquina de estados
- Flujo de conversación dinámico mediante session.updates
Flujo de conversación como máquina de estados
Define tu conversación como una estructura JSON que codifique tanto los estados como las transiciones. Esto facilita analizar la cobertura, identificar casos límite y hacer un seguimiento de los cambios a lo largo del tiempo. Como se almacena en forma de código, puedes gestionar sus versiones, comparar diferencias y ampliarla a medida que evoluciona tu flujo. Una máquina de estados también te permite controlar con precisión cómo y cuándo la conversación pasa de un estado a otro.
Ejemplo
# 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"
}]
},
...Flujo de conversación dinámico
En este patrón, la conversación se adapta en tiempo real mediante la actualización del prompt del sistema y la lista de herramientas según el estado actual. En lugar de presentar al modelo todas las reglas y herramientas posibles a la vez, solo le proporcionas lo que es relevante para la fase activa de la conversación.
Cuando se cumplen las condiciones de finalización de un estado, usas session.update para realizar la transición y reemplazar el prompt y las herramientas por los que se necesitan en la siguiente fase.
Este enfoque reduce la carga cognitiva del modelo y le facilita abordar tareas complejas sin distraerse con contexto innecesario.
Ejemplo
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)],
},
}Seguridad y derivación
Con los agentes de voz de Realtime, a menudo es importante contar con una forma confiable de derivar la atención a una persona. En esta sección, debes modificar las instrucciones sobre CUÁNDO hacer esa derivación según tu caso de uso.
- Cuándo usarlo: al modelo le cuesta determinar cuándo corresponde derivar la atención a una persona o a un sistema de respaldo
- Qué hace: define una derivación rápida y confiable, y qué decir al realizarla.
- Cómo adaptarlo: incorpora tus propios umbrales y lo que el modelo debe decir.
Ejemplo
# 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!”El primer ejemplo muestra las respuestas de gpt-4o-realtime-preview-2025-06-03 en una conversación al aplicar la instrucción.

El segundo ejemplo muestra respuestas de gpt-realtime-1.5 en una conversación al aplicar la instrucción.

gpt-realtime-1.5 puede seguir la instrucción y derivar la conversación a una persona de forma más confiable.
Próximos pasos
Para GPT-Live:
- Consulta delegación y herramientas sobre el prompt del backend y el contexto a cargo de la aplicación.
- Conéctate mediante WebRTC o WebSockets. Consulta Telefonía y SIP para las integraciones telefónicas.
- Evalúa los agentes de voz según la calidad de la conversación y los resultados verificados de las tareas.
Para Realtime:
- Consulta la guía de diseño de prompts para tiempo real anterior para ver más ejemplos de
gpt-realtime-1.5. - Consulta la guía de evaluación de Realtime para probar comportamientos representativos de los agentes de voz.
- Conéctate mediante WebRTC, WebSockets o SIP.
- Conoce el ciclo de vida de las conversaciones de Realtime y consulta los costos de Realtime.