소개
CrewAI는 crew 실행 중 실시간 출력을 스트리밍하는 기능을 제공하여, 전체 프로세스가 완료될 때까지 기다리지 않고 결과가 생성되는 대로 표시할 수 있습니다. 이 기능은 대화형 애플리케이션을 구축하거나, 사용자 피드백을 제공하거나, 장시간 실행되는 프로세스를 모니터링할 때 특히 유용합니다.스트리밍 작동 방식
스트리밍이 활성화되면 CrewAI는 LLM 응답과 도구 호출을 실시간으로 캡처하여, 어떤 task와 agent가 실행 중인지에 대한 컨텍스트를 포함한 구조화된 청크로 패키징합니다. 이러한 청크를 실시간으로 반복 처리하고 실행이 완료되면 최종 결과에 접근할 수 있습니다.스트리밍 활성화
스트리밍을 활성화하려면 crew를 생성할 때stream 파라미터를 True로 설정하세요:
Code
동기 스트리밍
스트리밍이 활성화된 crew에서kickoff()를 호출하면, 청크가 도착할 때마다 반복 처리할 수 있는 CrewStreamingOutput 객체가 반환됩니다:
Code
스트림 청크 정보
각 청크는 실행에 대한 풍부한 컨텍스트를 제공합니다:Code
스트리밍 결과 접근
CrewStreamingOutput 객체는 여러 유용한 속성을 제공합니다:
Code
비동기 스트리밍
비동기 애플리케이션의 경우, 비동기 반복과 함께akickoff()(네이티브 async) 또는 kickoff_async()(스레드 기반)를 사용할 수 있습니다:
akickoff()를 사용한 네이티브 Async
akickoff() 메서드는 전체 체인에서 진정한 네이티브 async 실행을 제공합니다:
Code
kickoff_async()를 사용한 스레드 기반 Async
더 간단한 async 통합이나 하위 호환성을 위해:
Code
고동시성 워크로드의 경우, 태스크 실행, 메모리 작업, 지식 검색에 네이티브 async를 사용하는
akickoff()가 권장됩니다. 자세한 내용은 Crew 비동기 시작 가이드를 참조하세요.kickoff_for_each를 사용한 스트리밍
kickoff_for_each()로 여러 입력에 대해 crew를 실행할 때, 동기 또는 비동기 여부에 따라 스트리밍이 다르게 작동합니다:
동기 kickoff_for_each
동기kickoff_for_each()를 사용하면, 각 입력에 대해 하나씩 CrewStreamingOutput 객체의 리스트가 반환됩니다:
Code
비동기 kickoff_for_each_async
비동기kickoff_for_each_async()를 사용하면, 모든 crew의 청크가 동시에 도착하는 대로 반환하는 단일 CrewStreamingOutput이 반환됩니다:
Code
스트림 청크 타입
청크는chunk_type 필드로 표시되는 다양한 타입을 가질 수 있습니다:
TEXT 청크
LLM 응답의 표준 텍스트 콘텐츠:Code
TOOL_CALL 청크
수행 중인 도구 호출에 대한 정보:Code
실용적인 예시: 스트리밍을 사용한 UI 구축
다음은 스트리밍을 사용한 대화형 애플리케이션을 구축하는 방법을 보여주는 완전한 예시입니다:Code
사용 사례
스트리밍은 다음과 같은 경우에 특히 유용합니다:- 대화형 애플리케이션: 에이전트가 작업하는 동안 사용자에게 실시간 피드백 제공
- 장시간 실행 태스크: 연구, 분석 또는 콘텐츠 생성의 진행 상황 표시
- 디버깅 및 모니터링: 에이전트 동작과 의사 결정을 실시간으로 관찰
- 사용자 경험: 점진적인 결과를 표시하여 체감 지연 시간 감소
- 라이브 대시보드: crew 실행 상태를 표시하는 모니터링 인터페이스 구축
중요 사항
- 스트리밍은 crew의 모든 에이전트에 대해 자동으로 LLM 스트리밍을 활성화합니다
.result속성에 접근하기 전에 모든 청크를 반복해야 합니다- 스트리밍을 사용하는
kickoff_for_each_async()의 경우, 모든 출력을 가져오려면.results(복수형)를 사용하세요 - 스트리밍은 최소한의 오버헤드를 추가하며 실제로 체감 성능을 향상시킬 수 있습니다
- 각 청크는 풍부한 UI를 위한 전체 컨텍스트(태스크, 에이전트, 청크 타입)를 포함합니다
오류 처리
스트리밍 실행 중 오류 처리:Code
