Visão Geral
Flows conversacionais implantados expõem uma API de sessão de chat na URL da automação. Em vez de uma única execução/kickoff, você cria uma sessão, envia mensagens do usuário como turnos, opcionalmente transmite tokens e eventos de runtime, e retoma pausas HITL quando um turno precisa de feedback humano.
O chat de Flow conversacional é experimental. Os endpoints só ficam disponíveis quando o Flow implantado reporta
conversational: true e handle_turn: true em GET /inspect.conversational = True, handle_turn, routers, tracing), consulte o guia open-source Conversational Flows.
Pré-requisitos
- Implante uma automação Flow que implemente turnos conversacionais (
handle_turn). - Copie o bearer token da aba Status da automação (o mesmo token usado em
/kickoff). - Confirme que o chat está habilitado via
/inspect(abaixo).
https://your-flow-url.crewai.com.
Descobrir capacidade de chat
flow.chat:
404 com "Conversational flow chat is not available".
Loop de chat ponta a ponta
1
Iniciar uma sessão
Crie uma sessão de chat. Opcionalmente registre um webhook de turno concluído e webhooks de eventos para a vida da sessão.Resposta:Um body vazio (
{} ou sem body) é válido quando você não precisa de webhooks.2
Enviar uma mensagem do usuário
Enfileire um turno para a sessão:Resposta:
Roles aceitos em
messageHistory: user, assistant, system, tool.3
Aguardar o fim do turno
Faça polling do turno com o Apenas um turno pode ficar ativo por sessão. Um segundo Aguarde até o histórico mostrar
kickoff_id retornado (mesma API de status de um kickoff normal de Flow):/message enquanto active_kickoff_id estiver definido retorna 409:active_kickoff_id: null (ou o turno atingir status terminal / pausa) antes de enviar a próxima mensagem.4
Ler o histórico da sessão
Streaming de um turno
O streaming é opcional. Use quando a UI precisar de tokens ou eventos de runtime durante o turno. Os frames sempre incluem tipos de ciclo de vida (turn_started, turn_completed, turn_failed, token, error). Frames event adicionais podem ser filtrados com o query param events (* ou lista separada por vírgulas).
Opção A: mensagem HTTP + anexar SSE
POST /chat/{session_id}/messagecom"stream": true.- Anexe-se ao turno ativo:
text/event-stream (data: {...}), mais comentários de keepalive. O stream termina em turn_completed ou turn_failed.
Se não houver turno ativo, este endpoint retorna 409 (No active chat turn).
Opção B: WebSocket (anexar ou enviar)
token, ou como header Authorization: Bearer ... quando o cliente suportar headers em WebSocket.
Comportamento:
- Turno ativo já em execução — o socket anexa e emite primeiro
turn_startedcomdata.status: "attached", depois transmite frames até um tipo terminal. - Sem turno ativo — envie uma mensagem JSON para enfileirar um turno e então consuma o stream:
turn_started (status: "queued") e então frames do stream para aquele kickoff_id.
Use last_event_id / lastEventId para retomar após desconexões.
Exemplos de frames do stream
HITL dentro de uma sessão de chat
Se um turno pausar para feedback humano (status / estado PAUSED), retome com o mesmo endpoint de resume de Flow usado em execuções sem chat:
kickoff_id de resume da resposta. Aguarde até /history mostrar active_kickoff_id: null antes de enviar a próxima mensagem de chat.
Veja Workflows HITL e Gerenciamento HITL para Flows para a UX de revisão na plataforma.
Referência da API
Erros comuns
Relacionados
Conversational Flows
Construa Flows multi-turno com
handle_turn, routers e tracing.Kickoff Crew / Flow
Kickoff de execução única e polling de status na URL da implantação.
Webhook Streaming
Formato do payload de webhook de eventos e opções de autenticação.
Gerenciamento HITL para Flows
Revisão humana com email-first para etapas pausadas de Flow.
