For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Observabilidade e uso

Acompanhe o progresso em tempo real, inspecione o trabalho concluído e consulte o uso registrado de tokens.

Acompanhe a atividade do agente em tempo real, inspecione o trabalho concluído e consulte os rastreamentos detalhados de cada turno.

  1. Consulte os logs da sessão no painel da plataforma.
  2. Acompanhe a sessão pelos eventos e pelo histórico salvo.
  3. Inspecione os turnos e identifique quais comandos tiveram sua execução delegada.
  4. Consulte o uso registrado de tokens nos turnos do agente raiz e dos subagentes.

Consulte a sessão no painel

Acesse platform.openai.com/logs?api=agents e abra a aba Agentes.

Busque a sessão pelo ID para inspecionar os turnos, as chamadas de ferramentas e os subagentes.

Consulte o guia de rastreamento para inspecionar no painel os registros de respostas do modelo, chamadas de ferramentas e atividade dos subagentes, ou exporte os rastreamentos da sessão em formato OTLP JSON pela API pública.

Acompanhe os eventos e inspecione o histórico da sessão

Cada sessão disponibiliza um fluxo de eventos que mostra o que o agente está fazendo em tempo real. Defina OPENAI_API_KEY e substitua o ID de sessão usado nos exemplos pelo ID da sessão que você salvou.

Acompanhe os eventos da sessão em tempo 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();
}

O fluxo permanece aberto mesmo após eventos de inatividade, para que você possa acompanhar o trabalho na fila. Pressione Ctrl+C para encerrar o acompanhamento.

Durante a execução da sessão, você verá eventos como estes:

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 inspecionar o trabalho já realizado, recupere os itens salvos da sessão.

Inspecione os itens salvos da sessão
// 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);

Inspecione os turnos e identifique os comandos delegados

Os turnos da sessão estão disponíveis pela API pública. Use o turn_id de um item de comando junto com o ID da sessão que você salvou. O exemplo em Go usa a paginação nativa do SDK para localizar o turno pelo ID entre os turnos do agente raiz e dos subagentes. Em seguida, recupera o turno do agente ao qual ele pertence. Substitua os IDs de exemplo pelos IDs da sua sessão. O exemplo em cURL requer jq.

Identifique quem executou um comando delegado
// Replace the illustrative session and turn IDs with values from your command item.
import OpenAI from "openai";
const client = new OpenAI();

async function findTurn(sessionId, turnId) {
  for await (const turn of client.beta.agents.sessions.turns.list(sessionId, {
    limit: 100,
  })) {
    if (turn.id === turnId) {
      return client.beta.agents.sessions.turns.retrieve(turnId, {
        session_id: sessionId,
      });
    }
  }
  for await (const subagent of client.beta.agents.sessions.subagents.list(
    sessionId,
    { limit: 100 }
  )) {
    for await (const turn of client.beta.agents.sessions.subagents.turns.list(
      subagent.id,
      { session_id: sessionId, limit: 100 }
    )) {
      if (turn.id === turnId) {
        return client.beta.agents.sessions.subagents.turns.retrieve(turnId, {
          session_id: sessionId,
          subagent_id: subagent.id,
        });
      }
    }
  }
  throw new Error(`Turn ${turnId} not found in session ${sessionId}`);
}

const turn = await findTurn("sess_123", "turn_123");
console.log(turn.subagent_id || "main agent");

Para paginar manualmente, use o last_id retornado como valor de after na próxima página quando has_more for true. O exemplo em Go percorre essas páginas automaticamente.

Os itens de comando contêm turn_id. Recupere o turno correspondente e consulte subagent_id para identificar o subagente que executou o comando. Se o ID do subagente for null, o agente raiz executou o comando. A API não informa se a saída do comando foi truncada.

Inspecione o rastreamento de um turno

Use o painel da plataforma para inspecionar um turno concluído e a atividade do agente nesse turno. Para recuperar os rastreamentos registrados pela API pública, use o endpoint de exportação de rastreamentos da sessão com uma chave de API do projeto. Os endpoints de rastreamento do painel são separados da API com suporte para clientes.

Os recursos de turno incluem o campo usage, preenchido com os dados disponíveis, e o campo subagent_id, que identifica o trabalho delegado. O valor de uso pode ser null quando o uso é desconhecido e pode mudar depois de registrado. Consulte Inspecione o uso de tokens dos subagentes.

Para identificar quem executou um comando de shell, recupere o turno indicado pelo turn_id do item de comando e consulte turn.subagent_id. A API para clientes não informa se a saída do comando foi truncada.

Erros e recuperação

Consulte Erros e recuperação para inspecionar falhas, escolher uma forma de recuperação e tentar novamente com segurança.

Uso e custo do modelo

Um agente pode fazer várias chamadas ao modelo para concluir uma tarefa. Cada chamada segue os preços por token e as regras de cache de prompts do modelo, como na API Responses. Para estimar o custo, considere todas as chamadas necessárias para concluir a tarefa.

O que entra no cálculo do custo?

Cada chamada ao modelo pode consumir:

  • Tokens de entrada: instruções do agente, definições de ferramentas, histórico da conversa, entrada do usuário, arquivos ou imagens e resultados das ferramentas.
  • Tokens de entrada em cache: parte da entrada reutilizada quando o prefixo do prompt coincide com um prefixo em cache. A cobrança segue a tarifa de entrada em cache do modelo.
  • Tokens de saída: texto gerado, argumentos de chamadas de ferramentas e raciocínio.

Os tokens de raciocínio são cobrados como tokens de saída.

Os subagentes também podem fazer chamadas ao modelo. Ao investigar os custos do modelo, consulte o uso registrado por turno dos subagentes junto com o do agente raiz.

Considere o trabalho do agente raiz e dos subagentes, inclusive as novas tentativas, além das cobranças aplicáveis pelo uso de ferramentas, recursos computacionais do sandbox e serviços de terceiros. Nos modelos que cobram por gravação em cache, gravar a entrada no cache também tem um custo. Os campos de uso da API de Agentes descritos abaixo não apresentam uma contagem separada de tokens gravados no cache. Por isso, quando essa tarifa se aplica, esses campos não permitem calcular o valor exato cobrado pelo uso do modelo.

Cache de prompts

Os agentes mantêm o contexto ao longo da sessão. Quando chamadas sucessivas ao modelo compartilham o mesmo prefixo de prompt, o cache de prompts pode aproveitar o processamento anterior desse prefixo. O modelo gera uma nova resposta a cada chamada, sem reproduzir uma resposta anterior do cache. Manter uma sessão não garante que o cache será usado. A reutilização depende da correspondência entre os prefixos e das regras do modelo sobre o que pode ser armazenado no cache e por quanto tempo.

Sempre que possível, mantenha as instruções iniciais e as definições de ferramentas estáveis e envie os novos detalhes da tarefa nas mensagens seguintes. Com a busca de ferramentas, as definições encontradas são adicionadas ao fim da conversa, o que preserva o conteúdo anterior para reutilização pelo cache. Consulte Cache de prompts para conhecer as regras de cada modelo.

Uma alta porcentagem de entrada em cache não indica quanto você economizou no custo total da tarefa. A entrada em cache também é cobrada, e chamadas repetidas podem processar um histórico extenso. Compare os custos de concluir a mesma tarefa com a qualidade e a latência de que seu aplicativo precisa.

Entenda o uso de tokens

Os recursos de sessão e de turno incluem o campo usage, preenchido com os dados disponíveis. O valor pode ser null quando o uso é desconhecido, e as contagens registradas podem mudar à medida que o uso é contabilizado. A ausência de dados de uso não significa que o consumo foi zero. Essas contagens não representam a cobrança final.

Um objeto de uso registrado contém as seguintes categorias de tokens:

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

Neste exemplo, o agente processou 5.000 tokens de entrada e gerou 900 tokens de saída. Dos tokens de entrada, 1.500 estavam em cache. Dos tokens de saída, 200 eram tokens de raciocínio.

Os tokens em cache entram na contagem de input_tokens, e os tokens de raciocínio entram na contagem de output_tokens.

Inspecione o uso de tokens dos subagentes

Liste ou recupere os turnos da sessão e consulte usage em cada turno. O campo subagent_id identifica o subagente e tem valor null nos turnos do agente raiz. Quando has_more for true, passe last_id como valor de after e mantenha o mesmo valor de order para consultar os turnos restantes.

O uso registrado reflete os dados disponíveis. O valor pode ser null quando o uso é desconhecido, e os valores registrados podem mudar. Você também pode consultar o uso registrado de cada agente no painel de rastreamento.