Eventos da execução
O stream SSE narra o run em tempo real: formato, níveis de verbosidade e o catálogo de eventos.
Atualizado em 10 de ago. de 2026
Cada linha do stream é um evento JSON no formato SSE: data: {...} seguido de linha em branco. Linhas começando com : são comentários de keepalive (a cada 15 s) — ignore-as no parser.
O campo events do request controla quanto detalhe chega. minimal reduziu ~87% dos bytes num run típico — útil quando você só quer a resposta:
| Nível | O que chega |
|---|---|
full (padrão) | Tudo — ideal para UIs que mostram o progresso passo a passo. |
messages | Falas dos agentes, ferramentas, fronteiras de nó e iterações de loop. |
minimal | Só o essencial: texto da resposta, stopped, error e done. |
| Evento | Quando | Campos úteis |
|---|---|---|
thread | Primeiro evento de todo run. | thread_id — guarde para continuar e parar. |
workflow_node_start | Um nó começou. | node_id, node_type, node_name |
workflow_node_end | Um nó terminou. | success — false traz error com a causa. |
workflow_loop | Iteração de um while. | iteration, path (loop/exit) |
workflow_stopped | Execução parada a seu pedido. | node_id do próximo nó que rodaria |
workflow_error | Um nó falhou e o run vai encerrar. | error, node_id |
flow_state | Estado de captura de fluxo ao final do turno. | pinned_node, pinned_agent |
done | Fim do run. | usage — custo, tokens e tempo consolidados |
| Evento | Quando | Campos úteis |
|---|---|---|
agent_message | Um agente do workflow falou (mensagem inteira). | data.content, data.sender.name, data.context.node_id |
chat_chunk | Fragmento de texto em streaming (caminho simples). | data.content |
| Evento | Quando | Campos úteis |
|---|---|---|
tool_use | O agente decidiu chamar uma ferramenta. | tool_name, tool_input |
tool_executing | A ferramenta está rodando. | data.tool_name, data.status |
tool_result | Resultado devolvido ao agente. | tool_name, output |
| Evento | Quando | Campos úteis |
|---|---|---|
debate_start / debate_round / debate_end | Fases de um nó de debate. | data.round, participantes |
vote_cast | Um votante votou. | data.vote, data.voter_index, sender.name |
vote_result | Resultado da votação. | data.votes, data.winner, data.has_majority |
sequential_start / sequential_end | Pipeline sequencial de agentes. | data.agent_index |
routing_decision | Um roteador escolheu o caminho. | data.route |
Há ainda eventos de atividade fina (search_started, fetch_progress, llm_thinking, processing_final_response…) — todos seguem o mesmo envelope {type, data}. Trate tipos desconhecidos como informativos: novos eventos podem surgir sem aviso.
tribunal do júri — 3 jurados, votação secretajson
data: {"type":"thread","thread_id":"2586cf3b-..."} ← guarde
data: {"type":"workflow_node_start","data":{"node_id":"juiz-intro","node_type":"agent"}}
data: {"type":"agent_message","data":{"sender":{"name":"Juiz"},"content":"Apresento o caso..."}}
data: {"type":"workflow_loop","data":{"iteration":1,"path":"loop"}} ← rodada 1
data: {"type":"workflow_node_start","data":{"node_id":"debate-jur","node_type":"debate"}}
data: {"type":"agent_message","data":{"sender":{"name":"Jurado Conservador"},"content":"..."}}
data: {"type":"vote_cast","data":{"vote":"culpado","voter_index":0}}
data: {"type":"vote_result","data":{"votes":{"culpado":2,"inocente":1},"winner":"culpado"}}
data: {"type":"workflow_loop","data":{"iteration":2,"path":"loop"}} ← rodada 2
...
data: {"type":"workflow_node_start","data":{"node_id":"veredito","node_type":"agent"}}
data: {"type":"done","usage":{"cost":0.0075,"input_tokens":18240,"output_tokens":3105}}Esta página foi útil?

