핵심 요약
단순한 LLM 프로토타입을 넘어 실제 운영 환경에서 발생하는 환각, 지연 시간, 불분명한 답변 문제를 해결하기 위해 관측성 도구인 Langfuse를 도입한다. 'FuseCommerce'라는 가상의 기술 소매점 지원 에이전트를 구축하며, 의도 분류와 시맨틱 검색을 결합한 에이전트 워크플로우를 구현한다. Langfuse의 트레이싱 기능을 통해 에이전트의 사고 과정을 시각화하고, 사용자 피드백 루프를 구축하여 시스템을 지속적으로 개선하는 구조를 갖춘다. 최종적으로 대시보드를 통해 비용, 지연 시간, 정확도를 모니터링하는 방법을 익힌다.
배경
Python 3.10 이상, Langfuse Cloud 계정, Google Cloud Gemini API 액세스 권한
대상 독자
LLM 애플리케이션을 프로덕션 환경에 배포하고 성능을 모니터링하려는 개발자 및 AI 엔지니어
의미 / 영향
LLM의 블랙박스 특성을 해결하기 위해 관측성 도구가 필수적임을 시사하며, 특히 복잡한 에이전트 구조에서 각 단계별 추적이 성능 최적화와 사용자 신뢰 확보의 핵심임을 보여준다.
섹션별 상세

def semantic_search(query):
# Create a vector representation of the query
query_embedding = genai.embed_content(
model="models/text-embedding-004",
content=query
)["embedding"]
# Using math, find the nearest meanings to the query
similarities = cosine_similarity([query_embedding], product_vectors)
return get_top_matches(similarities)Google Gemini의 임베딩 모델과 코사인 유사도를 활용하여 시맨틱 검색을 구현하는 예시
@langfuse.observe(as_type="generation")
def classify_user_intent(user_input):
prompt = f"""
Use the following user input to classify the user's intent into one of the three categories:
1. PRODUCT_SEARCH
2. ORDER_STATUS
3. GENERAL_CHAT
Input: {user_input}
"""
# Call Gemini model here...
intent = "PRODUCT_SEARCH" # Placeholder
return intentLangfuse 데코레이터를 사용하여 LLM의 의도 분류 과정을 자동으로 트레이싱하는 예시
@langfuse.observe() # Root Trace
def handle_customer_user_input(user_input, session_id):
# Tag the session
langfuse.update_current_trace(session_id=session_id)
# Think
intent = get_classified_intent(user_input)
# Act based on classified intent
if intent == "PRODUCT_SEARCH":
context = use_semantic_search(user_input)
# ... (중략)
response = generate_ai_response(context, intent)
return response전체 에이전트 워크플로우를 루트 트레이스로 설정하고 세션 ID를 태깅하는 예시

if col1.button("👍"):
lf_client.score(trace_id=trace_id, name="user-satisfaction", value=1)
if col2.button("👎"):
lf_client.score(trace_id=trace_id, name="user-satisfaction", value=0)사용자의 피드백을 특정 트레이스 ID와 연결하여 Langfuse로 전송하는 예시


실무 Takeaway
- 운영 환경의 LLM 시스템에서는 @langfuse.observe와 같은 데코레이터를 활용해 복잡한 에이전트의 사고 단계를 가시화해야 디버깅 효율을 극대화할 수 있다.
- 단순 키워드 매칭 대신 벡터 임베딩 기반의 시맨틱 검색을 구현하면 사용자가 동의어나 추상적인 표현을 사용하더라도 정확한 정보를 제공할 수 있다.
- 사용자 피드백을 개별 트레이스 ID와 연결하여 수집하면 어떤 프롬프트나 검색 결과가 부정적인 경험을 유발했는지 즉각적으로 분석하고 개선할 수 있다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.