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

Ejecutar y continuar sesiones

Inicia el trabajo, sigue el progreso y continúa la conversación.

Una sesión conserva la configuración de un agente, la conversación y el trabajo guardado a lo largo del tiempo. Reutiliza la misma sesión para enviar mensajes de seguimiento y continuar el trabajo.

Sesiones y turnos

Un turno es un ciclo de trabajo dentro de una sesión. Un mensaje enviado a una sesión inactiva inicia un nuevo turno. Un mensaje enviado durante un turno activo orienta ese turno.

Los turnos se ejecutan de forma asíncrona. Tu aplicación puede seguir el progreso mediante transmisión continua o recibir cambios en el estado de la sesión a través de webhooks.

Iniciar el trabajo

Crea una sesión con una configuración de agente y un input inicial. Establece stream en true para recibir los eventos del primer turno en la misma solicitud.

Una vez que tengas la clave de API y el SDK configurados, ejecuta este ejemplo para crear y ejecutar un script. OpenAI administra su entorno:

Crear una sesión y transmitir su primer turno
from openai import OpenAI

with OpenAI() as client:
    with client.beta.agents.sessions.create(
        agent={
            "model": "gpt-6-astra",
            "instructions": "Write clean code, run it, and report the actual output.",
        },
        environment={"type": "openai_hosted"},
        input="Create tree.py, a Python script that prints a readable tree of the files in the current directory. Run it and show me the output.",
        stream=True,
    ) as events:
        for event in events:
            print(event.to_json(indent=None), flush=True)

Guarda el session_id junto con el estado de la conversación de tu aplicación. Úsalo para enviar mensajes de seguimiento y recuperar el trabajo guardado de esa conversación.

Consulta Configuración de agentes para conocer los ajustes reutilizables de los agentes y Arquitectura para conocer las opciones de entorno. Las sesiones con environment.type: "none" requieren una entrada inicial. La referencia de Crear sesión enumera los campos de la solicitud.

Seguir el progreso y manejar los resultados

Los eventos informan sobre la salida y los cambios mientras el agente trabaja. Comprueba el resultado del turno: finalización, error o cancelación. Que una sesión esté inactiva no significa por sí solo que el turno haya tenido éxito.

Busca agent.session.turn.completed, agent.session.turn.failed o agent.session.turn.cancelled. Inspecciona también la salida del agente: un turno completado no garantiza que todas las herramientas hayan tenido éxito.

Si la sesión necesita el resultado de una función o una conexión con un entorno, recupera la sesión e inspecciona required_actions. Tu código debe manejar la llamada a la función o conectar el entorno para que el trabajo pueda continuar.

Consulta Eventos y elementos para conocer los tipos de eventos y sus cargas útiles.

Continuar u orientar el trabajo

Envía otro agent.session.input.message a la misma sesión. Si el agente está trabajando, el mensaje orienta el turno activo. Si la sesión está inactiva, inicia un nuevo turno con la conversación existente.

Las actualizaciones de los agentes guardados se aplican solo a las sesiones nuevas. Para cambiar el modelo, el esfuerzo de razonamiento o el nivel de servicio para los turnos posteriores de esta sesión, actualiza su configuración.

Usa el ID de sesión de la conversación para enviar una entrada. Suscríbete a su flujo de eventos antes de enviar el mensaje para que tu aplicación reciba los primeros eventos del turno.

Pasa tu cliente de API, el ID de sesión y el mensaje a una función de tu aplicación:

Enviar un mensaje de seguimiento
# Pass your saved session ID and message to this helper.
def send_message(client: OpenAI, session_id: str, text: str) -> None:
    client.beta.agents.sessions.events.create(
        session_id,
        events=[
            {
                "type": "agent.session.input.message",
                "input": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "type": "input_text",
                                "text": text,
                            }
                        ],
                    }
                ],
            }
        ],
    )

Para ver un ejemplo que combine el envío y la transmisión continua, consulta Eventos y elementos.

Recuperar el trabajo guardado

Los eventos muestran el progreso en tiempo real. Los elementos son los mensajes y las llamadas a herramientas guardados, incluidas las respuestas completadas. Recupéralos para mostrar el trabajo anterior o inspeccionar los resultados después de que termine un turno:

Recuperar los elementos de la sesión
# Pass your saved session ID to this helper.
def list_items(client: OpenAI, session_id: str):
    return client.beta.agents.sessions.items.list(session_id, order="asc", limit=100)

Consulta Administración de sesiones para inspeccionar el estado de la sesión y los resultados de los turnos. Recupera archivos a través de Archivos y artefactos.

Los flujos no vuelven a transmitir los eventos perdidos. Después de una desconexión, recupera la sesión y sus elementos guardados para recuperar el trabajo. Consulta Recuperar un flujo desconectado para conocer el procedimiento de reconexión.

Cancelar un turno activo

Cancela el turno actual cuando quieras que el agente se detenga. La sesión y su trabajo anterior siguen disponibles:

Cancelar el turno activo
# Pass your saved session ID to this helper.
def cancel_turn(client: OpenAI, session_id: str) -> None:
    client.beta.agents.sessions.events.create(
        session_id, events=[{"type": "agent.session.input.cancel"}]
    )