개요
배포된 conversational Flow는 자동화 URL에 채팅 세션 API를 노출합니다. 단일/kickoff 실행 대신 세션을 만들고, 사용자 메시지를 턴으로 보내며, 선택적으로 토큰과 런타임 이벤트를 스트리밍하고, 턴에 사람 피드백이 필요할 때 HITL 일시중지를 재개합니다.
Conversational Flow 채팅은 experimental입니다. 엔드포인트는 배포된 Flow가
GET /inspect에서 conversational: true와 handle_turn: true를 모두 보고할 때만 사용할 수 있습니다.conversational = True, handle_turn, 라우터, 트레이싱)은 오픈소스 Conversational Flows 가이드를 참고하세요.
사전 요구 사항
- conversational 턴(
handle_turn)을 구현한 Flow 자동화를 배포합니다. - 자동화 Status 탭에서 bearer 토큰을 복사합니다(
/kickoff와 동일한 토큰). - 아래
/inspect로 채팅이 활성화되어 있는지 확인합니다.
https://your-flow-url.crewai.com입니다.
채팅 기능 확인
flow.chat를 확인하세요:
"Conversational flow chat is not available"와 함께 404를 반환합니다.
엔드투엔드 채팅 루프
1
세션 시작
채팅 세션을 만듭니다. 선택적으로 세션 수명 동안 completed-turn 웹훅과 이벤트 웹훅을 등록합니다.응답:웹훅이 필요 없으면 빈 body(
{} 또는 body 없음)도 유효합니다.2
사용자 메시지 보내기
세션에 턴을 큐에 넣습니다:응답:
messageHistory에서 허용되는 role: user, assistant, system, tool.3
턴 완료 대기
반환된 세션당 활성 턴은 하나만 가능합니다. 다음 메시지를 보내기 전에 history에서
kickoff_id로 턴을 폴링합니다(일반 Flow kickoff와 동일한 status API):active_kickoff_id가 설정된 상태에서 두 번째 /message는 409를 반환합니다:active_kickoff_id: null이 되거나 턴이 종료/일시중지 상태가 될 때까지 기다립니다.4
세션 history 읽기
턴 스트리밍
스트리밍은 선택 사항입니다. UI가 턴 실행 중 토큰이나 런타임 이벤트가 필요할 때 사용합니다. 프레임은 항상 라이프사이클 타입(turn_started, turn_completed, turn_failed, token, error)을 포함합니다. 추가 event 프레임은 events 쿼리 파라미터(* 또는 쉼표로 구분된 목록)로 필터링할 수 있습니다.
옵션 A: HTTP 메시지 + SSE attach
"stream": true로POST /chat/{session_id}/message를 호출합니다.- 활성 턴에 attach합니다:
text/event-stream JSON 프레임(data: {...})과 keepalive 코멘트를 반환합니다. 스트림은 turn_completed 또는 turn_failed에서 종료됩니다.
활성 턴이 없으면 이 엔드포인트는 409(No active chat turn)를 반환합니다.
옵션 B: WebSocket (attach 또는 전송)
token 쿼리 파라미터로 전달하거나, 클라이언트가 WebSocket 헤더를 지원하면 Authorization: Bearer ... 헤더를 사용합니다.
동작:
- 이미 활성 턴이 실행 중 — 소켓이 attach되고 먼저
data.status: "attached"인turn_started를 보낸 뒤, terminal 타입까지 프레임을 스트리밍합니다. - 활성 턴 없음 — JSON 메시지로 턴을 큐에 넣은 뒤 스트림을 소비합니다:
turn_started(status: "queued")로 응답한 뒤 해당 kickoff_id의 스트림 프레임을 보냅니다.
연결이 끊긴 뒤에는 last_event_id / lastEventId로 재개하세요.
스트림 프레임 예시
채팅 세션 내 HITL
턴이 사람 피드백을 위해 일시중지되면(status / 상태 PAUSED), 일반 Flow와 동일한 resume 엔드포인트로 재개합니다:
kickoff_id를 폴링한 뒤, /history에서 active_kickoff_id: null이 될 때까지 기다렸다가 다음 채팅 메시지를 보내세요.
플랫폼 검토 UX는 HITL 워크플로와 Flow HITL 관리를 참고하세요.
API 레퍼런스
일반적인 오류
관련 문서
Conversational Flows
handle_turn, 라우터, 트레이싱으로 멀티 턴 Flow를 구축하세요.Kickoff Crew / Flow
배포 URL에서 단일 실행 kickoff 및 상태 폴링.
Webhook Streaming
이벤트 웹훅 페이로드 형식과 인증 옵션.
Flow HITL 관리
일시중지된 Flow 단계에 대한 이메일 우선 인간 검토.
