Loading...
    • Construir
    • Admin
    • Modelos e preços
    • SDKs de cliente
    • Referência da API
    Search...
    ⌘K
    Primeiros passos
    Introdução ao ClaudeInício rápido
    Construindo com Claude
    Visão geral dos recursosUsando a API de MensagensTratando razões de parada
    Capacidades do modelo
    Pensamento estendidoPensamento adaptativoEsforçoModo rápido (beta: prévia de pesquisa)Saídas estruturadasCitaçõesMensagens em streamingProcessamento em loteResultados de pesquisaRecusas em streamingSuporte multilíngueEmbeddings
    Ferramentas
    Visão geralComo o uso de ferramentas funcionaFerramenta de busca na webFerramenta de busca webFerramenta de execução de códigoFerramenta de memóriaFerramenta BashFerramenta de uso do computadorFerramenta de edição de texto
    Infraestrutura de ferramentas
    Busca de ferramentasChamada programática de ferramentasStreaming refinado de ferramentas
    Gerenciamento de contexto
    Janelas de contextoCompactaçãoEdição de contextoCache de promptContagem de tokens
    Trabalhando com arquivos
    Files APISuporte a PDFImagens e visão
    Skills
    Visão geralInício rápidoMelhores práticasSkills para empresasSkills na API
    MCP
    Servidores MCP remotosConector MCP
    Engenharia de prompt
    Visão geralMelhores práticas de promptingFerramentas de prompting no Console
    Testar e avaliar
    Definir sucesso e criar avaliaçõesUsando a Ferramenta de Avaliação no ConsoleReduzindo latência
    Fortalecer guardrails
    Reduzir alucinaçõesAumentar consistência de saídaMitigar jailbreaksReduzir vazamento de prompt
    Recursos
    Glossário
    Notas de versão
    Claude Platform
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Delegar trabalho ao seu agente

    Fluxo de eventos da sessão

    Envie eventos, transmita respostas e interrompa ou redirecione sua sessão durante a execução.

    Was this page helpful?

    • Tipos de eventos
    • Integrando eventos
    • Cenários adicionais
    • Tratando chamadas de ferramentas personalizadas
    • Confirmação de ferramenta
    • Rastreamento de uso

    A comunicação com Claude Managed Agents é baseada em eventos. Você envia eventos de usuário para o agente e recebe eventos de agente e de sessão de volta para acompanhar o status.

    Todas as requisições à API de Managed Agents requerem o cabeçalho beta managed-agents-2026-04-01. O SDK define o cabeçalho beta automaticamente.

    Tipos de eventos

    Os eventos fluem em duas direções.

    • Eventos de usuário são o que você envia ao agente para iniciar uma sessão e orientá-la conforme ela avança.
    • Eventos de sessão, eventos de span e eventos de agente são enviados a você para observabilidade do estado da sua sessão e do progresso do agente.

    As strings de tipo de evento seguem a convenção de nomenclatura {domain}.{action}.

    Todo evento inclui um timestamp processed_at indicando quando o evento foi registrado no servidor. Se processed_at for nulo, significa que o evento foi enfileirado pelo harness e será tratado após os eventos anteriores terminarem de ser processados.

    Consulte a referência da API de eventos de sessão para o esquema completo de cada tipo de evento.

    Integrando eventos

    Cenários adicionais

    Tratando chamadas de ferramentas personalizadas

    Quando o agente invoca uma ferramenta personalizada:

    1. A sessão emite um evento agent.custom_tool_use contendo o nome e a entrada da ferramenta.
    2. A sessão pausa com um evento session.status_idle contendo stop_reason: requires_action. Os IDs de eventos bloqueantes estão no array stop_reason.requires_action.event_ids.
    3. Execute a ferramenta em seu sistema e envie um evento user.custom_tool_result para cada um, passando o ID do evento no parâmetro custom_tool_use_id junto com o conteúdo do resultado.
    4. Assim que todos os eventos bloqueantes forem resolvidos, a sessão volta para o estado running.

    Confirmação de ferramenta

    Quando uma política de permissão requer confirmação antes que uma ferramenta seja executada:

    1. A sessão emite um evento agent.tool_use ou agent.mcp_tool_use.
    2. A sessão pausa com um evento session.status_idle contendo stop_reason: requires_action. Os IDs de eventos bloqueantes estão no array stop_reason.requires_action.event_ids.
    3. Envie um evento user.tool_confirmation para cada um, passando o ID do evento no parâmetro tool_use_id. Defina result como "allow" ou "deny". Use deny_message para explicar uma negação.
    4. Assim que todos os eventos bloqueantes forem resolvidos, a sessão volta ao estado running.

    Rastreamento de uso

    O objeto de sessão inclui um campo usage com estatísticas cumulativas de tokens. Busque a sessão após ela ficar ociosa para ler os totais mais recentes e use-os para rastrear custos, aplicar orçamentos ou monitorar o consumo.

    {
      "id": "sesn_01...",
      "status": "idle",
      "usage": {
        "input_tokens": 5000,
        "output_tokens": 3200,
        "cache_creation_input_tokens": 2000,
        "cache_read_input_tokens": 20000
      }
    }

    input_tokens reporta tokens de entrada não armazenados em cache e output_tokens reporta o total de tokens de saída em todas as chamadas de modelo na sessão. Os campos cache_creation_input_tokens e cache_read_input_tokens refletem a atividade de cache de prompt. As entradas de cache usam um TTL de 5 minutos, portanto turnos consecutivos dentro dessa janela se beneficiam de leituras de cache, que reduzem o custo por token.

    exec {fd}< <(curl -sS -N --fail-with-body \
      "https://api.anthropic.com/v1/sessions/$SESSION_ID/stream?beta=true" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -H "anthropic-beta: managed-agents-2026-04-01" \
      -H "content-type: application/json" \
      -H "Accept: text/event-stream")
    
    while IFS= read -r -u "$fd" line; do
      [[ $line == data:* ]] || continue
      data="${line#data: }"
      [[ $(jq -r '.type' <<<"$data") == "session.status_idle" ]] || continue
      case $(jq -r '.stop_reason.type // empty' <<<"$data") in
        requires_action)
          while IFS= read -r event_id; do
            # Busca o evento de uso de ferramenta personalizada e o executa
            result=$(call_tool "$event_id")
            # Envia o resultado de volta
            jq -n --arg id "$event_id" --arg result "$result" \
              '{events: [{type: "user.custom_tool_result", custom_tool_use_id: $id, content: [{type: "text", text: $result}]}]}' |
              curl -sS --fail-with-body \
                "https://api.anthropic.com/v1/sessions/$SESSION_ID/events?beta=true" \
                -H "x-api-key: $ANTHROPIC_API_KEY" \
                -H "anthropic-version: 2023-06-01" \
                -H "anthropic-beta: managed-agents-2026-04-01" \
                -H "content-type: application/json" \
                -d @-
          done < <(jq -r '.stop_reason.event_ids[]' <<<"$data")
          ;;
        end_turn)
          break
          ;;
      esac
    done
    exec {fd}<&-
    exec {fd}< <(curl -sS -N --fail-with-body \
      "https://api.anthropic.com/v1/sessions/$SESSION_ID/stream?beta=true" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -H "anthropic-beta: managed-agents-2026-04-01" \
      -H "content-type: application/json" \
      -H "Accept: text/event-stream")
    
    while IFS= read -r -u "$fd" line; do
      [[ $line == data:* ]] || continue
      data="${line#data: }"
      [[ $(jq -r '.type' <<<"$data") == "session.status_idle" ]] || continue
      case $(jq -r '.stop_reason.type // empty' <<<"$data") in
        requires_action)
          while IFS= read -r event_id; do
            # Aprovar a chamada de ferramenta pendente
            jq -n --arg id "$event_id" \
              '{events: [{type: "user.tool_confirmation", tool_use_id: $id, result: "allow"}]}' |
              curl -sS --fail-with-body \
                "https://api.anthropic.com/v1/sessions/$SESSION_ID/events?beta=true" \
                -H "x-api-key: $ANTHROPIC_API_KEY" \
                -H "anthropic-version: 2023-06-01" \
                -H "anthropic-beta: managed-agents-2026-04-01" \
                -H "content-type: application/json" \
                -d @-
          done < <(jq -r '.stop_reason.event_ids[]' <<<"$data")
          ;;
        end_turn)
          break
          ;;
      esac
    done
    exec {fd}<&-