For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal

Estado de la conversación

Aprende a gestionar el estado de la conversación durante una interacción con un modelo.

OpenAI ofrece varias formas de gestionar el estado de la conversación, lo cual es importante para conservar información entre varios mensajes o turnos de una conversación.

Al solucionar problemas en los que GPT-5.5 interpreta una actualización intermedia como la respuesta final, verifica que tu integración conserve correctamente el campo phase de los mensajes del asistente. Consulta Parámetro phase para obtener más información.

Gestionar manualmente el estado de la conversación

Aunque cada solicitud de generación de texto es independiente y no tiene estado, puedes implementar conversaciones de varios turnos proporcionando mensajes adicionales como parámetros en tu solicitud de generación de texto. Considera un chiste de “toc, toc”:

Construir manualmente una conversación anterior
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {"role": "user", "content": "knock knock."},
        {"role": "assistant", "content": "Who's there?"},
        {"role": "user", "content": "Orange."},
    ],
)

print(response.output_text)

Al alternar mensajes de user y assistant, incluyes el estado anterior de una conversación en una sola solicitud al modelo.

Para compartir manualmente el contexto entre las respuestas generadas, incluye la salida de la respuesta anterior del modelo como entrada y agrega esa entrada a tu siguiente solicitud.

En las solicitudes sin estado a modelos de razonamiento, conserva todos los elementos del arreglo output de la respuesta. La API Responses devuelve elementos de razonamiento cifrados de forma predeterminada. Volver a enviar la salida completa mantiene intactos los elementos de razonamiento y los valores de phase del asistente. Los modelos que admiten razonamiento persistente pueden usar reasoning.context: "all_turns" para incorporar el razonamiento disponible de turnos anteriores en la siguiente generación. Consulta Conservar el razonamiento entre llamadas.

En el siguiente ejemplo, le pedimos al modelo que cuente un chiste y luego le pedimos otro. Agregar las respuestas anteriores a las nuevas solicitudes de esta manera ayuda a que las conversaciones sean naturales y conserven el contexto de las interacciones anteriores.

Gestionar manualmente el estado de la conversación con la API Responses.
from openai import OpenAI

client = OpenAI()

history = [{"role": "user", "content": "tell me a joke"}]

response = client.responses.create(
    model="gpt-6-astra",
    input=history,
    store=False,
)

print(response.output_text)

# Add all response output items, including encrypted reasoning items, to the conversation
history += response.output

history.append({"role": "user", "content": "tell me another"})

second_response = client.responses.create(
    model="gpt-6-astra",
    input=history,
    store=False,
)

print(second_response.output_text)

API de OpenAI para el estado de la conversación

Nuestras API facilitan la gestión automática del estado de la conversación, por lo que no tienes que pasar las entradas manualmente en cada turno.

Usar la API Conversations

La API Conversations funciona junto con la API Responses para conservar el estado de la conversación como un objeto de larga duración con su propio identificador persistente. Después de crear un objeto de conversación, puedes seguir usándolo en distintas sesiones, dispositivos o trabajos.

Las conversaciones almacenan elementos, que pueden ser mensajes, llamadas a herramientas, salidas de herramientas y otros datos.

Crear una conversación
conversation = openai.conversations.create()

En una interacción de varios turnos, puedes pasar conversation a las respuestas posteriores para conservar el estado y compartir el contexto entre ellas, en lugar de tener que encadenar varios elementos de respuesta.

Gestionar el estado de la conversación con las API Conversations y Responses
response = openai.responses.create(
    model="gpt-6-astra",
    input=[{"role": "user", "content": "What are the 5 Ds of dodgeball?"}],
    conversation=conversation.id,
)

Pasar el contexto de la respuesta anterior

Otra forma de gestionar el estado de la conversación es compartir el contexto entre las respuestas generadas mediante el parámetro previous_response_id. Este parámetro te permite encadenar respuestas y crear un hilo de conversación.

Encadenar respuestas entre turnos pasando el ID de la respuesta anterior
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input="tell me a joke",
)
print(response.output_text)

second_response = client.responses.create(
    model="gpt-6-astra",
    previous_response_id=response.id,
    input=[{"role": "user", "content": "explain why this is funny."}],
)
print(second_response.output_text)

En el siguiente ejemplo, le pedimos al modelo que cuente un chiste. En una solicitud aparte, le pedimos que explique por qué es gracioso, y el modelo cuenta con todo el contexto necesario para dar una buena respuesta.

Gestionar manualmente el estado de la conversación con la API Responses
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input="tell me a joke",
)
print(response.output_text)

second_response = client.responses.create(
    model="gpt-6-astra",
    previous_response_id=response.id,
    input=[{"role": "user", "content": "explain why this is funny."}],
)
print(second_response.output_text)

previous_response_id en modo WebSocket

Si usas el modo WebSocket de la API Responses, la continuación sigue la misma semántica de previous_response_id que en el modo HTTP, pero a través de un socket persistente con eventos response.create repetidos.

La caché local de la conexión mantiene en memoria las respuestas anteriores recientes para permitir la continuación con baja latencia. Cuando usas stream_id, cada canal puede conservar su respuesta más reciente; previous_response_id sigue controlando el linaje, por lo que un canal nuevo puede bifurcarse a partir de una respuesta de otro canal mientras esa respuesta siga disponible. Si no se puede resolver un ID que no está en caché, envía un nuevo turno con previous_response_id establecido en null y pasa todo el contexto de entrada.

Incluso al usar previous_response_id, todos los tokens de entrada anteriores de las respuestas de la cadena se facturan como tokens de entrada en la API.

Gestionar la ventana de contexto

Comprender las ventanas de contexto te ayudará a crear hilos de conversación correctamente y a gestionar el estado entre interacciones con el modelo.

La ventana de contexto es la cantidad máxima de tokens que se pueden usar en una sola solicitud. Este máximo incluye los tokens de entrada, de salida y de razonamiento. Para conocer la ventana de contexto de tu modelo, consulta los detalles del modelo.

Gestionar el contexto para la generación de texto

A medida que tus entradas se vuelvan más complejas o incluyas más turnos en una conversación, tendrás que considerar tanto los límites de tokens de salida como los de la ventana de contexto . Las entradas y salidas del modelo se miden en tokens, que se extraen de las entradas para analizar su contenido e intención y se combinan para producir salidas lógicas. Los modelos tienen límites de uso de tokens durante el ciclo de vida de una solicitud de generación de texto.

  • Los tokens de salida son los tokens que genera un modelo en respuesta a un prompt. Cada modelo tiene distintos límites de tokens de salida. Por ejemplo, gpt-4o-2024-08-06 puede generar un máximo de 16 384 tokens de salida.
  • Una ventana de contexto describe la cantidad total de tokens que se pueden usar como tokens de entrada y de salida (y, en algunos modelos, como tokens de razonamiento). Compara los límites de la ventana de contexto de nuestros modelos. Por ejemplo, gpt-4o-2024-08-06 tiene una ventana de contexto total de 128k tokens.

Si creas un prompt extenso, a menudo al incluir contexto, datos o ejemplos adicionales para el modelo, corres el riesgo de superar la ventana de contexto asignada al modelo, lo que podría dar lugar a salidas truncadas.

Usa la herramienta de tokenización, creada con la biblioteca tiktoken, para ver cuántos tokens contiene una cadena de texto determinada.

Por ejemplo, al realizar una solicitud a la API Responses con un modelo con razonamiento habilitado, como el modelo o1, los siguientes tokens se contabilizan en el total de la ventana de contexto:

  • Tokens de entrada (datos que incluyes en el arreglo input para la API Responses)
  • Tokens de salida (tokens generados en respuesta a tu prompt)
  • Tokens de razonamiento (que el modelo usa para planificar una respuesta)

Los tokens generados que excedan el límite de la ventana de contexto pueden truncarse en las respuestas de la API.

visualización de la ventana de contexto

Puedes estimar la cantidad de tokens que usarán tus mensajes con la herramienta de tokenización.

Compactación

La guía detallada sobre compactación ahora se encuentra en Compactación.

Próximos pasos

Para ver ejemplos y casos de uso más específicos, visita el OpenAI Cookbook o descubre cómo usar las API para ampliar las capacidades de los modelos: