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

Observabilidad y uso

Inspecciona el progreso en tiempo real, el trabajo completado y el uso de tokens registrado.

Sigue la actividad del agente en tiempo real, inspecciona el trabajo completado y revisa las trazas detalladas de los turnos:

  1. Puedes ver los registros de la sesión en el panel de la plataforma.
  2. Puedes seguir la sesión a través de sus eventos y su historial guardado.
  3. Puedes inspeccionar los turnos e identificar la ejecución delegada de comandos.
  4. Puedes inspeccionar el uso de tokens registrado para los turnos del agente raíz y de los subagentes.

Ver la sesión en el panel

Ve a platform.openai.com/logs?api=agents y abre la pestaña Agentes .

Busca una sesión por su ID para inspeccionar sus turnos, llamadas a herramientas y subagentes.

Usa la guía de seguimiento de trazas para inspeccionar las respuestas registradas del modelo, las llamadas a herramientas y la actividad de los subagentes en el panel, o exporta las trazas de la sesión en formato OTLP JSON a través de la API pública.

Seguir eventos e inspeccionar el historial de la sesión

Cada sesión ofrece un flujo de eventos que muestra lo que hace el agente en tiempo real. Configura OPENAI_API_KEY y reemplaza el ID de sesión ilustrativo de estos ejemplos por el ID de sesión que guardaste:

Seguir los eventos de la sesión en tiempo real
// Replace the illustrative IDs and URLs below with your own resource values.
import OpenAI from "openai";

const client = new OpenAI();
const events = await client.beta.agents.sessions.events.stream("sess_123");
try {
  for await (const event of events) {
    if (
      [
        "agent.session.turn.failed",
        "agent.session.turn.cancelled",
        "agent.session.failed",
        "agent.session.environment.failed",
        "error",
      ].includes(event.type)
    ) {
      throw new Error(`Agent lifecycle failure: ${event.type}`);
    }
    console.log(JSON.stringify(event));
  }
} finally {
  events.controller.abort();
}

El flujo permanece abierto durante los eventos de inactividad para que no te pierdas el trabajo en cola. Presiona Ctrl+C para dejar de observarlo.

Mientras se ejecuta la sesión, verás eventos como los siguientes:

agent.session.environment.connected
agent.session.turn.created
agent.session.turn.in_progress
agent.session.turn.item.added
agent.session.turn.output_text.delta
agent.session.turn.completed
agent.session.idle

Para inspeccionar el trabajo que ya se realizó, recupera los elementos guardados de la sesión:

Inspeccionar los elementos guardados de la sesión
// Replace the illustrative IDs and URLs below with your own resource values.
import OpenAI from "openai";
const client = new OpenAI();

const sessionId = "sess_123";
const items = await client.beta.agents.sessions.items.list(sessionId, {
  order: "asc",
  limit: 100,
});
console.log(items.data);

Inspeccionar turnos e identificar comandos delegados

Los turnos de la sesión están disponibles a través de la API pública. Usa el turn_id de un elemento de comando junto con el ID de sesión que guardaste. El ejemplo de cURL requiere jq:

Identificar la ejecución delegada de comandos
// Replace the illustrative IDs and URLs below with your own resource values.
import OpenAI from "openai";
const client = new OpenAI();

const sessionId = "sess_123";
const turns = await client.beta.agents.sessions.turns.list(sessionId, {
  limit: 20,
  order: "desc",
});
console.log(turns.data);
const turnId = "turn_123";
const turn = await client.beta.agents.sessions.turns.retrieve(turnId, {
  session_id: sessionId,
});
console.log(turn.subagent_id);

Usa el last_id devuelto como valor de after para la página siguiente cuando has_more sea true.

Los elementos de comando contienen turn_id. Recupera ese turno y consulta subagent_id para identificar al agente delegado que ejecutó el comando. Un ID de subagente con valor null identifica el trabajo del agente raíz. No se informa si se truncó la salida del comando.

Inspeccionar la traza de un turno

Usa el panel de la plataforma para inspeccionar un turno completado y la actividad de sus agentes. Para recuperar las trazas registradas a través de la API pública, usa el punto de acceso para exportar trazas de sesiones con una clave de API del proyecto. Los puntos de acceso de trazas del panel siguen siendo independientes de la API para clientes que cuenta con soporte.

Los recursos de turno incluyen usage según la información disponible y un subagent_id que identifica el trabajo delegado. El uso puede ser null cuando se desconoce y puede cambiar. Consulta Inspeccionar el uso de tokens de los subagentes.

Para atribuir un comando de shell, recupera el turno identificado por el valor turn_id de su elemento de comando y luego inspecciona turn.subagent_id. La API para clientes no indica si se truncó la salida del comando.

Uso del modelo y costo

Un agente puede realizar varias llamadas al modelo para completar una tarea. En cada llamada se aplican los precios por token y las reglas de almacenamiento de prompts en caché del modelo, al igual que en la API Responses. Estima el costo de todas las llamadas necesarias para completar la tarea.

¿Qué contribuye al costo?

Cada llamada al modelo puede consumir:

  • Tokens de entrada: instrucciones del agente, definiciones de herramientas, historial de la conversación, entradas del usuario, archivos o imágenes y resultados de herramientas.
  • Tokens de entrada en caché: entrada reutilizada a partir de un prefijo de prompt coincidente, facturada según la tarifa de entrada en caché del modelo.
  • Tokens de salida: texto generado, argumentos de llamadas a herramientas y razonamiento.

Los tokens de razonamiento se facturan como tokens de salida.

Los subagentes también pueden realizar llamadas al modelo. Al investigar los costos del modelo, inspecciona su uso registrado por turno junto con el trabajo del agente raíz.

Ten en cuenta el trabajo del agente raíz y de los subagentes, incluidos los reintentos, además de los cargos aplicables por herramientas, recursos de cómputo del sandbox y servicios de terceros. En los modelos con tarifas de escritura en caché, escribir la entrada en la caché también tiene un costo. Los campos de uso de la API de agentes que se muestran a continuación no incluyen un recuento independiente de escritura en caché, por lo que no permiten determinar el cargo exacto del modelo cuando se aplica esa tarifa.

Almacenamiento de prompts en caché

Los agentes conservan el contexto a lo largo de una sesión. Cuando las llamadas sucesivas al modelo comparten el mismo prefijo de prompt, el almacenamiento de prompts en caché permite reutilizar el procesamiento previo de ese prefijo. El modelo genera una respuesta nueva; la caché no reproduce una respuesta anterior. Mantener una sesión no garantiza un acierto de caché. La reutilización depende de que el prefijo coincida y de las reglas del modelo sobre los requisitos y la duración de la caché.

Mantén estables las instrucciones iniciales y las definiciones de herramientas cuando sea práctico, y agrega los nuevos detalles de la tarea en mensajes de seguimiento. Con la búsqueda de herramientas, las definiciones encontradas se agregan al final de la conversación, lo que preserva el contenido anterior para reutilizarlo desde la caché. Consulta Almacenamiento de prompts en caché para conocer las reglas específicas de cada modelo.

Un porcentaje alto de entrada en caché no mide el ahorro en el costo total de la tarea. La entrada en caché se sigue facturando, y las llamadas repetidas pueden procesar un historial extenso. Compara el costo de completar la misma tarea con la calidad y la latencia que necesita tu aplicación.

Comprender el uso de tokens

Los recursos de sesión y de turno ofrecen usage según la información disponible. Puede ser null cuando se desconoce, y los recuentos registrados pueden cambiar a medida que llegan los datos de contabilización. La ausencia de datos de uso no significa que el uso sea cero. Estos recuentos no constituyen una factura final.

Un objeto de uso registrado contiene estas categorías de tokens:

{
  "input_tokens": 5000,
  "input_tokens_details": {
    "cached_tokens": 1500
  },
  "output_tokens": 900,
  "output_tokens_details": {
    "reasoning_tokens": 200
  },
  "total_tokens": 5900
}

En este ejemplo, el agente procesó 5000 tokens de entrada y generó 900 tokens de salida. De los tokens de entrada, 1500 estaban en caché. De los tokens de salida, 200 eran tokens de razonamiento.

Los tokens en caché se incluyen en input_tokens, y los tokens de razonamiento se incluyen en output_tokens.

Inspeccionar el uso de tokens de los subagentes

Enumera o recupera los turnos de la sesión e inspecciona el valor de usage de cada turno. El subagent_id identifica al subagente; su valor es null para los turnos del agente raíz. Cuando has_more sea true, pasa last_id como after con el mismo valor de order para leer los turnos restantes.

El uso se registra según la información disponible: puede ser null cuando se desconoce, y los valores registrados pueden cambiar. También puedes inspeccionar el uso registrado de cada agente en el panel de seguimiento de trazas.