Skip to main content

개요

배포된 conversational Flow는 자동화 URL에 채팅 세션 API를 노출합니다. 단일 /kickoff 실행 대신 세션을 만들고, 사용자 메시지를 턴으로 보내며, 선택적으로 토큰과 런타임 이벤트를 스트리밍하고, 턴에 사람 피드백이 필요할 때 HITL 일시중지를 재개합니다.
Conversational Flow 채팅은 experimental입니다. 엔드포인트는 배포된 Flow가 GET /inspect에서 conversational: truehandle_turn: true를 모두 보고할 때만 사용할 수 있습니다.
Flow 자체 구현(conversational = True, handle_turn, 라우터, 트레이싱)은 오픈소스 Conversational Flows 가이드를 참고하세요.

사전 요구 사항

  1. conversational 턴(handle_turn)을 구현한 Flow 자동화를 배포합니다.
  2. 자동화 Status 탭에서 bearer 토큰을 복사합니다(/kickoff와 동일한 토큰).
  3. 아래 /inspect로 채팅이 활성화되어 있는지 확인합니다.
모든 요청은 다음을 사용합니다:
이 가이드의 기본 URL 예시는 https://your-flow-url.crewai.com입니다.

채팅 기능 확인

flow.chat를 확인하세요:
둘 중 하나라도 false이면 채팅 엔드포인트는 "Conversational flow chat is not available"와 함께 404를 반환합니다.

엔드투엔드 채팅 루프

1

세션 시작

채팅 세션을 만듭니다. 선택적으로 세션 수명 동안 completed-turn 웹훅과 이벤트 웹훅을 등록합니다.
응답:
웹훅이 필요 없으면 빈 body({} 또는 body 없음)도 유효합니다.
2

사용자 메시지 보내기

세션에 턴을 큐에 넣습니다:
응답:
messageHistory에서 허용되는 role: user, assistant, system, tool.
3

턴 완료 대기

반환된 kickoff_id로 턴을 폴링합니다(일반 Flow kickoff와 동일한 status API):
세션당 활성 턴은 하나만 가능합니다. active_kickoff_id가 설정된 상태에서 두 번째 /message409를 반환합니다:
다음 메시지를 보내기 전에 history에서 active_kickoff_id: null이 되거나 턴이 종료/일시중지 상태가 될 때까지 기다립니다.
4

세션 history 읽기

턴 스트리밍

스트리밍은 선택 사항입니다. UI가 턴 실행 중 토큰이나 런타임 이벤트가 필요할 때 사용합니다. 프레임은 항상 라이프사이클 타입(turn_started, turn_completed, turn_failed, token, error)을 포함합니다. 추가 event 프레임은 events 쿼리 파라미터(* 또는 쉼표로 구분된 목록)로 필터링할 수 있습니다.

옵션 A: HTTP 메시지 + SSE attach

  1. "stream": truePOST /chat/{session_id}/message를 호출합니다.
  2. 활성 턴에 attach합니다:
SSE는 text/event-stream JSON 프레임(data: {...})과 keepalive 코멘트를 반환합니다. 스트림은 turn_completed 또는 turn_failed에서 종료됩니다. 활성 턴이 없으면 이 엔드포인트는 409(No active chat turn)를 반환합니다.

옵션 B: WebSocket (attach 또는 전송)

인증: bearer 토큰을 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 엔드포인트로 재개합니다:
응답의 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 단계에 대한 이메일 우선 인간 검토.