관찰성 도구 선택보다 중요한 것이 있다. “무엇을 측정할 것인가”다. LLM 앱이 프로덕션에서 블랙박스가 되지 않으려면 4가지 신호를 반드시 내보내야 한다. AI 채팅 기능을 실제 서비스에 배포하고 수개월 반복 개선을 거친 thoughtbot 팀이 도출한 프레임워크다.
4가지 신호
1. 모든 프롬프트에 버전을
코드에 프롬프트 문자열을 하드코딩하면 변경마다 PR과 배포가 필요하다. 프롬프트를 런타임에 가져오는 버전 관리 스토어로 분리하면 배포 없이 롤백할 수 있다.
# 코드는 버전 번호가 아닌 레이블로 프롬프트를 참조
template = PromptRepo.compile(name: "classify_question", label: "production")
# "production" 레이블을 버전 간에 이동하는 것은 클릭 한 번
# 롤백도 클릭 한 번. 배포 불필요.프롬프트가 콘텐츠가 되면 PO나 도메인 전문가가 직접 수정하고 즉시 반영할 수 있다. 피드백 루프가 짧아지고 품질이 올라간다.
확인 질문: 배포 없이 프롬프트를 롤백할 수 있는가?
2. 실제 작업 흐름을 담은 트레이스
LLM 호출은 단일 API 호출이 아니라 분류 → 프롬프트 로딩 → 도구 호출 → 응답 조합의 작은 프로그램이다. 트레이스가 한 줄이면 무언가 일어났다는 것만 알 수 있지만, 트레이스 트리는 실제로 무슨 일이 일어났는지 알려준다.
# Before: 한 줄 로그, 내부 구조 없음
[INFO] chat_completed user_id=123 duration_ms=4200 tokens=1840
# After: 결정 트리
trace: "chat"
span: load-prompt (version=production:v12)
generation: classify-question (model=haiku, category="billing")
generation: compose-answer
span: tool-call.lookup_invoice (200ms)
span: tool-call.lookup_customer (180ms)
generation: final-response (model=sonnet, 1.2k tokens)나중에 필터링할 차원(고객 ID, 질문 유형, 사용된 도구, 프롬프트 버전)으로 트레이스를 태깅하면, 트레이스 목록이 모델이 내린 결정의 쿼리 가능한 데이터베이스가 된다.
확인 질문: “특정 도구 호출 이후 사용자가 싫어했던 대화 전체”를 필터링할 수 있는가?
3. 사용자 평점
UI의 모든 어시스턴트 메시지에 좋아요/싫어요를 달고 클릭 시 트레이스에 점수를 기록한다. 싫어요 단독으로는 행동하기 어렵지만, 트레이스에 붙은 싫어요는 모델이 무엇을 봤는지, 어떤 도구를 호출했는지, 어떤 프롬프트 버전이 생성했는지를 한 번에 알려준다.
싫어요 10개 중 1개만 진짜 신호여도 충분하다. 그 1개가 프롬프트 변경, 새 도구, 버그 수정으로 이어진다. 리뷰에 시간이 걸리고 노이즈도 있지만, 사용자가 나쁘다고 표시한 전체 대화를 읽고 나면 추측이 사라진다.
확인 질문: 사용자가 나쁘다고 표시한 모든 트레이스를 프롬프트 버전별로 그룹화해 볼 수 있는가?
4. 모델 평점 (LLM-as-Judge)
사용자 피드백은 유용하지만 드물다. 대부분의 사용자는 아무것도 클릭하지 않는다.
백그라운드 잡이 완료된 대화를 가져와 별도의 “judge” 프롬프트(동일한 버전 스토어에서 관리)로 평가하고 결과를 같은 트레이스에 점수로 기록한다. Judge가 평가하는 항목:
- 사실성(factuality)
- 지시 이행(instruction-following)
- 완전성(completeness)
- 환각(hallucination)
- 올바른 내부 컨텍스트 사용 여부
Judge는 모든 대화에서 실행되므로 회귀(regression)가 배포 당일에 감지된다. 사용자와 Judge가 동의하면 Judge가 실제 사용자와 잘 맞는다는 신호, 둘이 불일치하면 시스템에서 가장 흥미로운 트레이스다.
핵심 교훈: 출시 전 회귀를 잡는 Judge는 더 빠르거나 스마트한 모델보다 가치 있다. 아무도 클릭하지 않아도 스케일하는 유일한 신호이기 때문이다.
도구 선택
이 4가지 신호를 구현하는 데 특정 도구에 종속될 필요는 없다. Langfuse, Helicone, Arize Phoenix, LangSmith, Braintrust 모두 동일한 문제를 해결한다. 도구보다 무엇을 측정할지 먼저 결정하는 것이 중요하다.
각 도구 간 상세 비교는 llm-observability-tips-tools를 참고한다.
참고 자료
- The Four Signals of AI Observability — thoughtbot (2026-06-01)