Langfuse와 CrewAI 통합하기

이 노트북은 OpenLit SDK를 통해 LangfuseCrewAI를 통합하는 방법을 보여준다. 이 노트북을 마치면 CrewAI 애플리케이션을 Langfuse로 추적하여 가시성과 디버깅을 개선할 수 있다.

Langfuse란 무엇인가? Langfuse는 오픈소스 LLM 엔지니어링 플랫폼이다. LLM 애플리케이션을 위한 추적 및 모니터링 기능을 제공하며, 개발자가 AI 시스템을 디버깅하고 분석하며 최적화하는 데 도움을 준다. Langfuse는 네이티브 통합, OpenTelemetry, API/SDK를 통해 다양한 도구와 프레임워크와 통합된다.

시작하기

OpenLit을 통해 CrewAI를 사용하고 Langfuse와 OpenTelemetry를 통합하는 간단한 예제를 살펴본다.

1단계: 의존성 설치

%pip install langfuse openlit crewai crewai_tools

2단계: 환경 변수 설정

Langfuse API 키를 설정하고 OpenTelemetry 내보내기 설정을 구성하여 추적 데이터를 Langfuse로 전송한다. Langfuse OpenTelemetry 엔드포인트 /api/public/otel과 인증에 대한 자세한 내용은 Langfuse OpenTelemetry 문서를 참조한다.

import os
import base64

LANGFUSE_PUBLIC_KEY="pk-lf-..."
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_AUTH=base64.b64encode(f"{LANGFUSE_PUBLIC_KEY}:{LANGFUSE_SECRET_KEY}".encode()).decode()

os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://cloud.langfuse.com/api/public/otel" # EU 데이터 리전
# os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://us.cloud.langfuse.com/api/public/otel" # US 데이터 리전
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"Authorization=Basic {LANGFUSE_AUTH}"

# OpenAI 키 설정
os.environ["OPENAI_API_KEY"] = "sk-..."

3단계: OpenLit 초기화

OpenLit OpenTelemetry instrumentation SDK를 초기화하여 OpenTelemetry 트레이스를 수집하기 시작한다.

import openlit

openlit.init()

Step 4: 간단한 CrewAI 애플리케이션 만들기

여러 에이전트가 협력해 사용자의 질문에 답변하는 간단한 CrewAI 애플리케이션을 만들어 보자.

from crewai import Agent, Task, Crew
from crewai_tools import WebsiteSearchTool

web_rag_tool = WebsiteSearchTool()

writer = Agent(
    role="Writer",
    goal="어린 아이들이 쉽게 이해할 수 있도록 수학을 시로 표현한다",
    backstory="하이쿠 작가이지만 수학에 대해 아는 바가 없다",
    tools=[web_rag_tool],  
)

task = Task(
    description="{multiplication}는 무엇인가요?",
    expected_output="답을 포함한 하이쿠를 작성한다",
    agent=writer
)

crew = Crew(
    agents=[writer],
    tasks=[task],
    share_crew=False
)

5단계: Langfuse에서 트레이스 확인하기

에이전트를 실행한 후, Langfuse에서 CrewAI 애플리케이션이 생성한 트레이스를 확인할 수 있다. LLM 상호작용의 상세한 단계를 볼 수 있으며, 이를 통해 AI 에이전트를 디버그하고 최적화하는 데 도움이 된다.

Langfuse의 공개 예제 트레이스

참고 자료