8. 평가와 관측성: 고객에게 가치 증명하기
AI 시스템이 쓸 만하다는 말은 점수와 기록으로 증명될 때만 고객에게 닿습니다. 평가는 얼마나 좋은지를 재고, 관측성은 무슨 일이 있었는지를 남기며, FDE는 이 둘로 "이 시스템이 가치가 있다"를 근거와 함께 말합니다.
학습 동기: 이 장을 읽으면 고객이 내민 벤치마크 점수나 "잘 되는 것 같다"는 인상을 의심할 수 있고, 평가 방법을 작업에 맞게 고르며, 에이전트가 틀렸을 때 어느 단계에서 틀렸는지 기록으로 찾는 방법을 설명할 수 있습니다.
선행 가정: 정밀도와 재현율(1.8.2, 1.8.3), 임베딩(1.4.4), 환각(2.18), 에이전트의 구성(6.1)을 알고 있다고 가정합니다. 에이전트를 단계 그래프로 설계하는 방식(7.3)과 프롬프트 인젝션(9.2)은 사례에서 짧게 언급되므로, 낯설면 해당 절을 먼저 훑어 보십시오.
8.1 LLM 평가(LLM Evaluation)
원문: What is LLM Evaluation? Metrics, Benchmarks, and Methods Explained
고객이 "이 챗봇이 좋은가요?"라고 물을 때 "좋아 보입니다"는 답이 되지 못합니다. LLM 평가는 모델의 출력이 정확하고 유용하며 안전한지를 숫자와 근거로 보여 주는 절차이며, 이 절은 그 도구 상자 전체를 펼칩니다. 이하 내용은 2026년 5월 글 기준입니다.
8.1.1 평가 유형
**LLM 평가(LLM Evaluation)**는 모델에 입력을 주고 출력을 관찰하여, 우리가 기대한 작업을 얼마나 잘 해내는지 재는 과정입니다. 챗봇을 만들었다면 정답을 말하는지, 공손한지, 안전한지, 지난주 버전보다 나은지를 모두 이 과정으로 답합니다. LLM은 사실이 아닌 내용을 자신 있게 말하는 환각(2.18 참조)과 유해하거나 편향된 출력을 낼 수 있으므로, 출시 전에 거동을 알아야 하고 출시 후에도 품질이 떨어지지 않는지 계속 확인해야 합니다.
평가가 필요한 이유는 여섯 가지로 나뉩니다.
- 여러 모델을 비교하여 용도에 맞는 것을 고릅니다.
- 파인튜닝(11.1 참조)이나 프롬프트 변경 전후의 버전을 비교합니다.
- 모델이 실패하는 약점을 찾아 고칩니다.
- 유해한 출력을 내지 않는지 확인합니다.
- 시간이 지나며 품질이 오르는지 내리는지 추적합니다.
- 사용자, 팀, 이해관계자의 신뢰를 얻습니다.
평가 방법은 크게 네 가지입니다.
| 유형 | 방식 | 한 줄 요약 |
|---|---|---|
| 자동 지표(Automatic Metrics) | 수식으로 출력을 기준 답과 비교해 점수화 | 빠르고 싸지만 표면 비교 |
| 벤치마크(Benchmarks) | 모두가 쓰는 표준 데이터셋으로 시험 | 모델 간 비교에 적합 |
| 사람 평가(Human Evaluation) | 사람이 읽고 등급을 매김 | 가장 정확하지만 느리고 비쌈 |
| LLM 판정(LLM as a Judge) | 다른 LLM이 점수를 매김 | 사람 대신 규모를 확보 (8.2 참조) |
이 네 가지에 더해 **작업별 평가(Task-Specific Evaluation)**와 **안전 평가(Safety Evaluation)**가 있습니다. 둘은 별도 방법이 아니라 위 네 방법을 재사용하되 무엇을 시험할지를 정하는 층입니다(8.1.6 참조). 실제 프로젝트에서는 한 가지만 쓰지 않고 조합하며, 평가 없이 출시하는 것은 실사용자가 달린 제품에서 추측에 의존하는 일입니다.
FDE는 첫 미팅에서 "무엇을 좋다고 부를 것인가"를 고객과 합의해야 합니다. 이 합의가 어느 평가 유형을 주력으로 삼을지 정합니다.
8.1.2 자동 지표(Automatic Metrics)
자동 지표는 모델 출력과 사람이 써 둔 기준 답(reference)을 수식으로 비교하여 점수를 내는 방법입니다. 영어 문장을 프랑스어로 번역시키고, 사람이 번역한 정답과 모델 번역이 얼마나 가까운지 재는 장면이 전형적입니다. 주요 지표는 다음과 같습니다.
| 지표 | 무엇을 보는가 | 주 용도 |
|---|---|---|
| BLEU | 모델 출력의 n-gram(작은 단어 묶음) 중 기준 답에도 나오는 비율, 정밀도 기반 | 번역 |
| ROUGE | 기준 요약의 n-gram 중 모델 요약이 포함한 비율 | 요약 |
| BERTScore | 문맥 임베딩으로 의미 유사도 비교 | 표현이 다양한 작업 |
| METEOR | BLEU에 동의어, 어간, 어순 처리를 더한 것 | 표면 일치와 의미 일치의 중간 |
| 퍼플렉시티(Perplexity) | 모델이 실제 다음 토큰에 부여하는 확률, 낮을수록 좋음 | 학습 중 진행 추적 (2.14 참조) |
| 완전 일치(Exact Match) | 출력이 기준 답과 같으면 1, 아니면 0 | 수학 문제, 짧은 사실 질문 |
BLEU와 BERTScore의 차이는 예문으로 확인됩니다. 기준 답이 "The cat sat on the mat"이고 모델이 똑같이 출력하면 BLEU는 높습니다. 모델이 "A feline rested on the rug"라고 하면 뜻은 같아도 BLEU가 낮습니다. 단어 하나씩(1-gram) 세어 보면 모델 출력 6단어 중 기준 답에 나오는 것은 on, the 두 개뿐이므로 1-gram 정밀도는 2/6 ≈ 0.33이고, 두 단어 묶음(2-gram)은 5개 중 on the 하나만 일치하여 0.20입니다. 실제 BLEU는 여러 n-gram 정밀도를 결합하므로 이 값은 직관을 위한 계산입니다. 반면 BERTScore는 임베딩(1.4.4 참조)으로 의미를 비교하므로 같은 쌍에서 높은 점수를 줍니다.
장점과 한계는 분명합니다.
- 장점: 빠르고 싸며 수백만 건에 돌릴 수 있고, 같은 입력에는 같은 점수가 나옵니다.
- 한계: 표면 유사도만 보므로 같은 뜻을 다른 단어로 쓴 정답이 낮은 점수를 받고, 창작이나 대화 같은 개방형 작업에는 맞지 않습니다.
원문은 현대 LLM 평가에서 BLEU와 ROUGE 같은 기준 답 기반 지표가 주로 연구 논문과 번역 파이프라인에서 쓰이며, 운영 중인 LLM 애플리케이션은 LLM 판정이나 작업별 평가에 의존한다고 밝힙니다. 고객 팀이 BLEU 점수를 보고서에 올려 왔다면, 그 작업이 정답 문장이 하나로 정해지는 작업인지부터 물어야 합니다.
8.1.3 벤치마크
벤치마크는 연구 커뮤니티 전체가 모델 시험에 쓰는 표준 데이터셋입니다. 새 모델이 나오면 개발사가 유명 벤치마크 점수를 공개하므로, 같은 시험지 위에서 모델끼리 공정하게 비교할 수 있습니다. 벤치마크마다 시험하는 능력이 다르므로 범주별로 알아 둡니다.
| 범주 | 벤치마크 | 시험 내용 |
|---|---|---|
| 일반 지식 | MMLU | 역사, 법, 수학, 의학 등 57개 과목의 객관식 |
| 일반 지식 | MMLU-Pro | 보기 10개와 사고의 연쇄 추론(4.1 참조)을 요구하는 더 어려운 판 |
| 상식 추론 | HellaSwag | 짧은 이야기의 가장 그럴듯한 결말 고르기 |
| 코딩 | HumanEval | 간단한 함수 작성 |
| 코딩 | SWE-bench Verified | 오픈소스 프로젝트의 실제 GitHub 이슈 해결 |
| 코딩 | LiveCodeBench | 모델 학습 시점 이후 공개된 문제를 써서 오염에 강함 |
| 수학 | GSM8K, MATH, AIME | 초등 수준 문장제, 경시 수준, 올림피아드 문제 |
| 최전선 추론 | GPQA-Diamond | 박사 수준 과학 문제 |
| 최전선 추론 | Humanity's Last Exam(HLE) | 여러 분야 전문가 수준 2,500문항(공개 세트) |
| 지시 따르기 | IFEval | "정확히 세 개의 불릿으로 답하라" 같은 검증 가능한 제약 |
| 도구 사용 | BFCL(Berkeley Function-Calling Leaderboard) | 도구와 함수 호출 능력, 에이전트에 직결 (6.2 참조) |
| 긴 컨텍스트 | RULER | 모델이 주장하는 명목 길이보다 정직한 유효 컨텍스트 윈도우 측정 |
| 진실성 | TruthfulQA | 흔한 거짓 믿음을 따라 하지 않고 사실을 답하는지 |
| 대화 품질 | Chatbot Arena(LMArena) | 실사용자가 익명 모델 둘을 비교해 고르고, 체스의 Elo와 같은 계열의 점수로 순위를 매김 |
벤치마크 점수를 읽을 때 알아야 할 세 가지 개념이 있습니다.
- 포화(Saturation): 상위 모델이 점수 상한 가까이에 몰려 우수와 최우수를 가르지 못하는 상태이며, 그래서 더 어려운 벤치마크가 계속 만들어집니다.
- 데이터 오염(Data contamination): 모델이 학습 중 시험 문제를 이미 본 경우로, 점수가 실제보다 높게 나옵니다. LiveCodeBench처럼 학습 시점 이후 문제를 쓰는 벤치마크가 대응책입니다.
- 통과 기준선(Qualification bar): 오래되거나 쉬운 벤치마크는 쓸모없어진 것이 아니라, 어려운 시험을 보기 전에 진지한 모델이라면 통과해야 하는 기본 점검으로 남습니다.

장점은 같은 데이터셋이라 비교가 쉽고 넓은 능력을 덮으며 커뮤니티의 뒷받침이 있다는 점입니다. 한계는 높은 점수가 우리 용도에서의 성능을 보장하지 않으며, 포화나 오염 또는 둘 다로 점수가 오도할 수 있고, 공개 벤치마크가 우리 제품의 정확한 작업과 거의 일치하지 않는다는 점입니다. 고객이 "벤치마크 1위 모델이니 도입하자"고 하면 그 벤치마크가 고객 업무와 닮았는지, 오염되었는지를 되묻고, 고객 데이터로 만든 작은 평가 세트를 제안합니다.
8.1.4 사람 평가
사람 평가는 실제 사람이 출력을 읽고 점수를 매기는 방법이며 여전히 최종 기준(gold standard)입니다. 어조, 유용성, 창의성, 안전성은 수식으로 잴 수 없습니다. 짧은 시를 쓰게 했을 때 정답은 하나가 아니고, 좋은 시인지 판단하는 것은 사람입니다. 대표 방식은 세 가지입니다.
- 리커트 척도 평가(Likert Scale Rating): 품질, 유용성, 안전성을 1~5점으로 매깁니다.
- 쌍대 비교(Pairwise Comparison): 출력 둘을 보여 주고 나은 쪽을 고르게 합니다. Chatbot Arena가 이 방식입니다.
- 오류 주석(Error Annotation): 출력에서 틀린 부분을 정확히 표시하여 어디서 실패했는지 알려 줍니다.
장점은 의미, 어조, 품질을 판단하고 정답이 하나가 아닌 작업에 통하며 실패 지점에 대한 깊은 통찰을 준다는 점입니다. 한계는 느리고 비싸며, 같은 출력에도 사람마다 점수가 다르고, 수천 수백만 건으로 확장할 수 없다는 점입니다. 쌍대 비교는 점수를 매기는 데만 쓰이지 않고 사람의 순위를 보상 모델로 바꾸어 모델을 학습시키는 데도 쓰입니다(11.6 참조).
그래서 사람을 대체하는 도구가 **LLM 판정(LLM as a Judge)**입니다. 강력한 LLM에 입력과 출력을 주고 "도움이 되고 공손한가를 1~5점으로 평가하고 이유를 짧게 적어라"라고 요청하면 점수와 이유가 나오며, 이를 사람 점수처럼 쓸 수 있습니다. 사람보다 훨씬 싸고 빠르며 수백만 건에 확장되고 수식이 실패하는 개방형 작업에도 통용됩니다. 대신 판정 모델에도 편향이 있습니다.
- 위치 편향(Position bias): 두 답을 나란히 놓을 때 첫 번째 (드물게 두 번째)를 선호합니다.
- 장황함 편향(Verbosity bias): 짧은 답이 더 나아도 긴 답을 선호합니다.
- 자기 선호 편향(Self-preference bias): 자기 모델 계열의 출력을 선호합니다.
판정자도 틀릴 수 있으므로 작은 표본에서 판정 점수를 사람 점수와 비교하여 검증해야 합니다. 판정자의 구축 절차와 편향 대응은 별도 절로 분리되어 있습니다(8.2 참조). FDE는 사람 평가를 모든 건에 쓰지 않고, 판정자를 검증하는 기준 표본과 출시 직전 최종 점검에 쓰는 구조로 설계합니다.
8.1.5 평가의 도전 과제
LLM 평가가 어려운 이유는 여섯 가지입니다.
| 도전 과제 | 내용 | 예 |
|---|---|---|
| 개방형 출력 | 정답이 하나가 아니라 수식이 잘 맞지 않음 | 좋은 이메일 답장을 쓰는 방법은 수천 가지 |
| 데이터 오염 | 모델이 시험 데이터를 학습 중 봄 | 벤치마크 점수가 부풀려짐 (8.1.3 참조) |
| 비용 | 사람 평가도, 큰 평가 세트를 강력한 LLM에 돌리는 일도 비쌈 | 평가 예산이 빠르게 소진 |
| 판정자의 편향 | 판정이 실사용자와 다른 선호를 가짐 | 긴 답, 자기 계열 답을 선호 |
| 시간에 따른 표류(Drift) | 파인튜닝, 프롬프트 수정, 심지어 제공사의 서버 측 모델 갱신으로도 행동이 바뀜 | 출시 전 점수가 석 달 뒤에는 맞지 않음 |
| 극단 사례(Edge cases) | 평균은 좋아도 드물지만 중요한 경우에 크게 실패 | 평가 세트에 따로 추가해야 함 |
특히 표류 때문에 평가는 출시 전 한 번으로 끝나지 않습니다. 프롬프트, 모델, 시스템을 바꿀 때마다 평가를 돌리고 결과를 저장하여 추세를 봐야 합니다. 이 도전 과제에 대응하는 모범 사례는 일곱 가지입니다.
- 맞춤 평가 세트 구축: 공개 벤치마크에만 기대지 말고 실제 용도에 맞는 작지만 고품질인 데이터셋을 만듭니다.
- 여러 방법 조합: 속도는 자동 지표, 규모는 LLM 판정, 최종 점검은 사람 평가가 맡습니다.
- 판정 검증: 판정 점수를 작은 표본의 사람 점수와 비교합니다.
- 시간 추적: 프롬프트, 모델, 시스템을 바꿀 때마다 평가하고 결과를 보관합니다.
- 극단 사례 포함: 어려운 예, 적대적 예, 안전 예를 평가 세트에 넣습니다.
- 사람 개입 유지: 자동화가 있어도 매주 소량을 직접 검토하여 지표가 놓친 문제를 잡습니다.
- 비용과 지연도 측정: 완벽하지만 30초 걸리는 답은 실제 제품에서 쓸모가 없습니다.
고객 현장에서는 "마지막으로 평가를 돌린 것이 언제입니까"가 첫 질문입니다. 석 달 전 점수만 있다면 제공사 측 모델 갱신을 반영하지 못한 수치입니다.
8.1.6 상황별 방법 선택
네 방법의 특성은 다음과 같이 비교됩니다.
| 방법 | 속도 | 비용 | 판정 품질 | 적합한 용도 |
|---|---|---|---|---|
| 자동 지표 | 가장 빠름 | 가장 낮음 | 낮음 | 번역, 요약, 정답이 정해진 작업 |
| 벤치마크 | 빠름 | 낮음 | 중간 | 연구 수준의 모델 비교 |
| 사람 평가 | 가장 느림 | 가장 높음 | 가장 높음 | 최종 품질 점검, 개방형 작업 |
| LLM 판정 | 빠름 | 중간 | 높음 | 대화, RAG, 에이전트 평가의 규모 확장 |
실제 제품에서는 넷을 모두 조합합니다. 학습 중에는 자동 지표, 모델 선택에는 벤치마크, 일상 모니터링에는 LLM 판정, 출시 직전에는 사람 평가를 씁니다.
flowchart LR
A[학습: 자동 지표] --> B[모델 선택: 벤치마크]
B --> C[일상 모니터링: LLM 판정]
C --> D[출시 직전: 사람 평가]
그림 8.1.6 — 개발 단계에 따라 평가 방법을 바꾸어 쓰는 순서.
작업별 평가는 이 표 위에 얹히는 층입니다. 내부적으로는 자동 지표나 LLM 판정을 쓰지만, 던지는 질문, 시험 입력, 채점 대상을 우리 작업에 맞게 정합니다. 일반 벤치마크는 평균적 성능을 알려 줄 뿐이고 실제 제품에는 구체적 작업이 있기 때문입니다.
- RAG: 검색이 맞는 문서를 가져왔는지, 모델이 그 문서를 올바르게 썼는지 두 가지를 봅니다. 표준은 RAGAS 4지표 패턴입니다. 컨텍스트 정밀도(Context Precision)는 가져온 청크 중 실제 관련 있는 비율(RAGAS의 실제 계산은 관련 청크가 상위에 놓였는지도 반영합니다)이고, 컨텍스트 재현율(Context Recall)은 코퍼스의 관련 청크 중 가져온 비율이며, 충실성(Faithfulness, 근거성)은 최종 답이 검색된 컨텍스트로 뒷받침되는지, 답변 관련성(Answer Relevance)은 답이 사용자 질문에 맞는지입니다. 앞의 둘은 정밀도와 재현율(1.8.2, 1.8.3 참조)을 검색에 적용한 것입니다. 예를 들어 5개 청크를 가져왔는데 3개가 관련 있고 코퍼스 전체의 관련 청크가 4개라면 정밀도는 3/5 = 0.60, 재현율은 3/4 = 0.75입니다. 이 지표를 구현한 프레임워크로 RAGAS와 DeepEval이 있습니다(청킹은 5.6 참조).
- 에이전트: 알맞은 도구를 골랐는지, 인자가 맞는지, 작업을 끝냈는지, 몇 단계가 들었는지 봅니다. 대표 벤치마크는 현실적 고객 서비스 환경의 τ-bench와 코딩 에이전트용 SWE-bench Verified이며, 범용 비서 작업은 GAIA, 브라우저 에이전트는 WebArena, 함수 호출 정확도는 BFCL이 맡습니다(8.3 참조).
- 코드 생성: 생성된 코드를 테스트 케이스에 돌려 통과하면 정답으로 칩니다. 코드 텍스트를 비교하는 것보다 훨씬 낫습니다.
- 고객 지원 챗봇: 질문에 답했는지, 공손했는지, 브랜드 지침을 따랐는지, 필요할 때 사람에게 넘겼는지 봅니다.
**안전 평가와 레드팀(Red-Teaming)**은 적대적이고 유해한 입력으로 모델을 시험하는 별도 범주입니다. 탈옥(9.3 참조), 프롬프트 인젝션(9.2 참조), 유해 요청을 시도하여 모델이 올바르게 거절하는지, 민감 정보를 누설하지 않는지, 민감 주제에서 편향을 보이지 않는지 확인합니다. 입력과 출력에서 이 검사를 강제하는 방법은 가드레일입니다(9.1 참조). 널리 알려진 안전 벤치마크는 유해하고 적대적인 요청에 대한 행동을 보는 HarmBench, 모델 공격용 적대 프롬프트 표준 세트인 AdvBench, 진실성, 안전, 공정성, 견고성, 프라이버시, 윤리를 아우르는 TrustLLM입니다. 새로운 공격 패턴이 계속 나오므로 운영 환경에서는 실제 트래픽에 대한 안전 모니터링을 계속 돌립니다.
FDE가 방법을 고를 때는 작업의 성격으로 시작합니다. 정답이 하나로 정해지면 자동 지표와 완전 일치, 개방형이면 검증된 LLM 판정과 사람 표본, 외부 행동을 하는 에이전트라면 안전 평가를 반드시 추가합니다. 마지막으로 품질만 보지 않고 응답 속도와 호출당 비용을 함께 기록하도록 고객에게 요청합니다.
8.2 LLM-as-a-Judge
원문: What is LLM as a Judge? How to Use an LLM to Evaluate LLM Outputs
사람 평가는 정확하지만 확장되지 않고, 수식 지표는 확장되지만 의미를 놓칩니다. LLM-as-a-Judge는 그 사이의 공백을 메우는 기법이며, 8.1에서 한 줄로 소개한 LLM 판정을 구축 절차, 프롬프트, 편향까지 내려가서 다룹니다. 이하 내용은 2026년 5월 글 기준입니다.
8.2.1 동작 방식과 유형
LLM-as-a-Judge는 한 LLM이 다른 LLM의 출력을 읽고, 우리가 정한 기준에 비추어 점수나 판정을 이유와 함께 내놓는 기법입니다. 숙제를 채점하는 교사에 비유하면 학생이 평가 대상 LLM이고, 교사가 기대 답과 비교하여 등급과 피드백을 주는 판정자 역할의 LLM입니다.
이 기법이 필요한 이유는 기존 방법 둘이 각자 한계를 가졌기 때문입니다. LLM 출력은 개방형 텍스트라서 정답이 하나가 아니고, 서로 다른 두 답이 모두 맞을 수 있습니다.
| 접근 | 장점 | 문제 |
|---|---|---|
| 사람 평가 | 언어를 이해하므로 품질이 높음 | 느리고 비싸며 지치고, 하루 수백만 건을 못 봄 |
| BLEU, ROUGE 같은 규칙 기반 지표 | 빠르고 쌈 | 단어 겹침만 봄. 같은 뜻을 다른 단어로 쓴 정답에 낮은 점수를 줌 |
| LLM-as-a-Judge | 의미를 이해하고, 단어가 달라도 비교하며, 하루 수백만 건을 처리 | 판정자 자체의 편향 (8.2.4 참조) |
원문은 강한 LLM 판정자가 사람 평가자와 80% 넘게 일치하며 이는 두 사람이 같은 작업에서 서로 일치하는 비율과 비슷하다는 연구 결과를 전합니다. 잘 만든 판정자는 사람만큼 믿을 만하면서 훨씬 빠르고 싸므로 LLM 애플리케이션 평가의 기본 방식이 되었습니다. 다만 이 수치는 연구 환경의 일반론이며 우리 작업에서의 일치율은 직접 재야 합니다(8.2.2 참조). 더 근본적인 질문은 그 작업에 정확한 검사기가 있는가이며, 정의가 불분명한 작업은 판정자도 기준을 잡지 못합니다.
동작은 다섯 단계입니다. 고객 지원 챗봇의 예로 보겠습니다.
- 사용자 질문과 챗봇 답변을 가져옵니다.
- 판정 LLM에 줄 프롬프트를 씁니다. 질문, 답변, 판정 규칙이 들어갑니다.
- 이 프롬프트를 판정 LLM에 보냅니다.
- 판정 LLM이 읽고 점수와 이유를 냅니다.
- 점수로 챗봇이 잘하고 있는지 판단합니다.
"비밀번호를 어떻게 재설정하나요?"라는 질문에 "로그인 페이지의 비밀번호 찾기 링크를 누르고 이메일 주소를 입력하면 재설정 링크가 메일로 옵니다"라는 답변을 주고 "도움됨 기준 1~5점과 이유를 달라"고 하면, 판정자는 "5점: 명확하고 단계별이며 질문에 직접 답합니다"처럼 응답합니다. 실제 시스템에서 판정자는 더 큰 흐름 안의 한 단계로 놓이며, 낮은 점수가 나오면 작업을 되돌려 다시 시도하게 연결됩니다(7.3 참조).
판정 방식은 네 유형이 있습니다.
- 단일 답변 채점(Single answer scoring): 답 하나에 1~5점이나 1~10점을 매깁니다. 시간에 따라 평균 점수가 오르는지 내리는지 추적할 때 씁니다.
- 쌍대 비교(Pairwise comparison): 같은 질문의 답 둘 중 낫다고 생각하는 쪽(A 또는 B)과 이유를 받습니다. 두 모델이나 두 프롬프트 버전을 비교할 때 씁니다.
- 기준 답 기반 평가(Reference-based evaluation): 답과 정답(ground truth)을 함께 주고 의미가 얼마나 가까운지 점수를 받습니다. 정답이 있고 출력이 그에 얼마나 가까운지 볼 때 씁니다.
- 루브릭 기반 평가(Rubric-based evaluation): 정확성, 유용성, 명확성, 어조처럼 여러 기준을 주고 기준마다 따로 점수를 받은 뒤 종합 점수를 받습니다. 좋은 답은 정확하고 명확하고 공손해야 하므로, 품질을 한 숫자로 표현할 수 없을 때 어디가 강하고 어디가 약한지 알려 줍니다. 운영 환경에서 가장 흔한 유형입니다.
FDE는 고객의 질문이 "어느 버전이 낫나"이면 쌍대 비교, "시간에 따라 떨어지나"이면 단일 채점, "무엇이 문제인가"이면 루브릭을 고릅니다.
8.2.2 Judge 구축 단계와 프롬프트 템플릿
판정자는 일곱 단계로 만듭니다.
| 단계 | 할 일 | 핵심 |
|---|---|---|
| 1. 기준 정의 | 평가할 것을 쉬운 말로 적음 | 지원 챗봇이라면 정확한가, 명확한가, 공손한가 |
| 2. 판정 모델 선택 | 강한 모델을 고름 | 평가 대상 이상의 능력이 필요함. 아니면 실수를 놓침 |
| 3. 판정 프롬프트 작성 | 작업 설명, 사용자 입력, 평가할 출력, 척도와 규칙, 출력 형식을 포함 | 아래 템플릿 참조 |
| 4. 표본에 실행 | 작은 표본에 돌려 점수와 이유를 읽음 | 판정이 제 역할을 하는지 점검 |
| 5. 사람 평점과 비교 | 같은 표본을 사람이 채점하여 대조 | 근접하면 좋은 판정자, 아니면 프롬프트 개선 |
| 6. 반복 개선 | 규칙 추가, 더 좋은 예시 제공, 재시험 | 판정 평점이 사람 평점과 맞을 때까지 |
| 7. 대규모 사용 | 신뢰가 쌓이면 수천 수백만 건에 사용 | 모델, 프롬프트, 버전 비교에도 활용 |
원문 시점(2026년 5월)의 판정 모델 예로 GPT-5, Claude Opus 4.7, Gemini 3.1 Pro가 거론됩니다. 모델명은 빠르게 바뀌므로 "평가 대상보다 약하지 않은 모델"이라는 원칙이 본질입니다. 데이터를 폐쇄형 API에 보내고 싶지 않다면 오픈소스 판정 모델을 검토할 수 있습니다.
완성된 프롬프트 템플릿은 다음 요소로 이루어집니다.
당신은 전문 평가자입니다. AI 어시스턴트가 사용자 질문에 준 응답을 평가하십시오.
평가 기준: 1. 정확성(사실과 맞는가) 2. 유용성(문제를 해결하는가) 3. 명확성(이해하기 쉬운가)
사용자 질문: {user_question}
어시스턴트 응답: {assistant_response}
형식: 정확성 점수(1-5), 유용성 점수(1-5), 명확성 점수(1-5), 종합 점수(1-5), 이유(짧은 설명)
공정하고 일관되게 평가하고, 위 응답만 근거로 점수를 매기십시오.
이 템플릿이 신뢰도를 주는 이유는 판정자가 과제, 기준, 입력, 출력 형식을 모두 알기 때문입니다. 판정자를 만들 때 FDE가 가장 먼저 하는 일은 고객이 무엇을 좋은 답으로 부르는지 문장으로 받아 적는 것(1단계)이며, 5단계의 사람 평점은 고객 현업 담당자가 맡아야 합니다.
8.2.3 G-Eval: 사고의 연쇄 판정
기본 프롬프트도 작동하지만 판정자에게 먼저 생각하고 나중에 점수를 내라고 하면 더 좋아집니다. 이 기법이 **사고의 연쇄 판정(chain-of-thought judging)**이며 G-Eval이라고도 합니다. G-Eval은 평가 단계를 생성한 뒤 점수를 매기는 것(Generate evaluation steps + Score)입니다.
바로 점수를 요구하면 판정자는 깊이 생각하지 않고 숫자를 고르므로 점수가 얕아집니다. 먼저 평가 단계를 쓰게 하면 판정자는 천천히 답을 읽고 단계를 하나씩 적용하여 최종 점수가 훨씬 믿을 만해집니다. 이는 사고의 연쇄 프롬프팅(4.1 참조)을 평가에 적용한 것입니다. G-Eval 형식의 프롬프트는 이렇게 구성됩니다.
기준: 유용성
1단계: 응답이 유용한지 확인할 평가 단계를 직접 적어라.
2단계: 각 단계를 응답에 하나씩 적용하고 단계마다 근거를 적어라.
3단계: 그 근거를 바탕으로 1~5점의 최종 점수를 내라.
(사용자 질문과 어시스턴트 응답을 아래에 첨부)
원문은 G-Eval이 기본 채점 프롬프트보다 사람 평점과 훨씬 잘 일치한다고 주장하므로, 신뢰할 수 있는 판정자를 원하면 사고의 연쇄 판정을 쓰라고 권합니다. 일치 정도는 모델과 작업에 따라 다르므로 8.2.2의 5단계로 직접 확인합니다. 지연과 토큰 비용이 늘어나는 점은 일상 모니터링의 호출량과 함께 따져야 합니다.
8.2.4 Judge의 편향
판정자는 강력하지만 완벽하지 않으며 신뢰하기 전에 편향을 알아야 합니다. 원문이 꼽는 편향은 일곱 가지입니다.
| 편향 | 증상 | 대응 |
|---|---|---|
| 스타일 편향(Style bias) | 불릿을 문단보다, 격식체를 구어체보다 선호. 원문은 가장 지배적인 편향이라고 설명하며(외부 출처로는 확인하지 못했습니다) 실제 품질을 압도할 수 있음 | 프롬프트에 기대하는 스타일을 명시 |
| 위치 편향(Position bias) | A와 B 중 먼저 나온 답을 선호 | 순서를 바꾸어 두 번 돌리고 평균 |
| 장황함 편향(Verbosity bias) | 짧은 답이 나아도 긴 답을 선호 | 프롬프트에서 긴 답을 선호하지 말라고 지시 |
| 자기 선호 편향(Self-preference bias) | 자신이나 같은 계열 모델이 만든 답에 높은 점수 | 다른 계열 모델을 판정자로 쓰거나 서로 다른 계열의 판정단(Panel of Judges) 사용 |
| 선호 누출(Preference leakage) | 파이프라인 전체의 평가 오염 | 판정 모델 계열을 학습 데이터 생성 계열과 분리 |
| 권위 편향(Authority bias) | 자신감 있고 전문가나 출처를 인용하는 답에 높은 점수 | 어조나 자신감이 아닌 정확성만 보라고 상기 |
| 군중 편향(Bandwagon bias) | 앞선 답들이 동의하면 따라감 | 같은 방식으로 정확성에만 집중하게 지시 |

위치 편향의 대응은 구체적입니다. 판정자가 (A, B) 순서에서 A를 고르고 순서를 바꾼 (B, A)에서는 B를 고른다면 두 결과가 갈리므로 내용이 아니라 자리를 보고 고른 신호이며, 두 번의 결과를 평균하면 이 영향이 상쇄됩니다.
선호 누출은 단일 답변이 아니라 파이프라인 수준에서 작동합니다. 자기 선호 편향이 메커니즘이고, 선호 누출은 그 메커니즘이 평가 체계 전체를 오염시키는 현상입니다. 예를 들어 GPT-5로 합성 학습 데이터를 만들어 모델을 학습시킨 뒤 같은 GPT-5로 그 모델을 평가한다고 해 봅시다. 학습 데이터가 이미 모델을 GPT-5 문체 쪽으로 밀었으므로, 판정자는 GPT-5 문체와 닮은 답을 조용히 보상합니다. 점수는 문서상 훌륭해 보이지만 실사용자 앞에서는 점수만큼 성능이 나오지 않습니다. 데이터 생성자와 판정자가 더 이상 독립이 아니기 때문입니다. 판정 모델 계열은 학습 데이터, 프롬프트 등 파이프라인에 닿는 모든 입력을 만든 계열과 달라야 합니다.
자기 선호 편향에서 판정자는 자기 머릿속에서는 공정하게 비교한다고 믿지만 자기 문체에 대한 숨은 선호를 가집니다. 원문은 최전선 판정 모델조차 편향이 강한 과제에서 여전히 실패한다고 경고하므로, 운영에 투입하기 전에 이 편향들에 대해 판정자를 시험해야 합니다. FDE는 고객이 "생성도 평가도 같은 벤더 모델로 하겠다"고 할 때 선호 누출의 위험을 설명하고 계열 분리를 요구합니다.
8.2.5 모범 사례
판정자를 믿을 만하게 쓰기 위한 아홉 가지 원칙이 있습니다.
- 강한 판정 모델 사용: 판정자는 평가 대상 이상의 능력을 가져야 합니다.
- 명확한 프롬프트: 과제, 기준, 입력, 출력, 형식을 포함합니다.
- 프롬프트에 예시 제공: 퓨샷 예시가 좋은 점수의 모습을 보여 줍니다.
- 분명한 척도: 1~5점이 1~100점보다 쉬우며, 작은 척도에서 판정이 더 일관됩니다.
- 점수와 이유를 함께 요구: 더 신중하게 생각하게 하고 판정자를 디버깅할 수 있습니다.
- 사람과 대조 검증: 표본에서 판정 평점과 사람 평점을 비교합니다.
- 위치 편향 처리: 쌍대 비교는 순서를 바꾸어 평균합니다.
- 판정단(Jury) 사용: 서로 다른 계열의 판정 모델 여럿의 점수를 평균하면 자기 선호 편향이 줄고 단일 판정자보다 신뢰도가 높아집니다.
- 기준을 단순하게: 한 번에 너무 많은 것을 평가시키지 않고, 필요하면 평가를 나눕니다.
실제 활용 사례는 여섯 가지입니다.
| 사례 | 내용 |
|---|---|
| 모델 평가 | 학습이나 파인튜닝(11.1 참조) 후 새 버전이 옛 버전보다 나은지 출력을 나란히 비교 |
| 챗봇 품질 모니터링 | 모든 대화를 읽을 수 없으므로 자동 채점하고 일일 리포트를 받음 |
| 콘텐츠 검열 | 출력이 유해한지 판정하고 사용자에게 가기 전에 차단. 출력 가드레일의 작동 방식 그대로임 (9.1 참조) |
| RAG 평가 | 답이 검색된 문서에 근거하는지 확인하여 환각 포착 (5.14 참조) |
| 프롬프트 엔지니어링 | 같은 작업에 여러 프롬프트를 규모 있게 비교 |
| 에이전트 궤적 평가 | 에이전트가 도구를 선택하고 결과를 읽고 계획하는 전체 단계(궤적)를 읽고 도구 선택, 사용, 결과를 판정. 다른 방법으로는 평가하기 어려워서 가장 빠르게 늘어나는 활용 (8.3 참조) |
원문의 권고는 판정자를 신뢰하기 전에 항상 사람 평점과 대조해 검증하라는 것입니다. 고객에게 판정자를 인도할 때는 사람과의 일치율, 순서 교환 시 결과 변동, 판정 모델 계열을 문서로 함께 남깁니다.
8.3 에이전트 평가(Agent Evaluation)
원문: How to Evaluate AI Agents? Metrics, Methods, and Best Practices
에이전트는 이메일을 보내고 데이터베이스에 쓰고 돈을 씁니다. 그래서 최종 답만 채점하는 LLM 평가(8.1 참조)로는 부족하고, 결과에 이르는 모든 단계와 도구를 함께 채점해야 합니다. 이하 내용은 2026년 5월 글 기준입니다.
8.3.1 LLM 평가와 다른 점
AI 에이전트는 LLM으로 계획하고, 도구로 행동하며, 스스로 작업을 끝내는 시스템입니다(6.1 참조). 일반 LLM은 텍스트만 내놓지만 에이전트는 도구를 호출하고 파일을 읽고 웹을 검색하고 코드를 실행하며 목표까지 여러 단계를 밟습니다. "델리에서 방갈로르로 가는 금요일 항공편을 예약해 줘"라고 요청하면 에이전트는 생각하고, 항공편 검색 도구를 부르고, 결과를 읽고, 항공편을 고르고, 예약 도구를 부르고, 확인을 돌려줍니다. 사용자에게 보이는 것은 최종 결과뿐이지만 그 사이에서 여러 새로운 방식으로 실패할 수 있습니다.
에이전트 평가는 같은 작업을 에이전트에게 주고 시작부터 끝까지 지켜보며 작업을 올바르게 끝냈는지, 알맞은 도구와 단계를 썼는지, 시간과 돈을 낭비하지 않았는지를 확인하는 과정입니다. 필요한 이유는 다음과 같습니다.
- 작업을 올바르게 끝내는지 확인합니다.
- 올바른 때에 올바른 도구를 쓰는지 확인합니다.
- 작업당 단계 수와 비용을 추적합니다.
- 실패하는 약점을 찾아 고칩니다.
- 프롬프트나 모델을 바꾼 버전끼리 비교합니다.
- 유해한 행동을 하지 않는지 확인합니다.
LLM 평가는 입력을 주고 최종 텍스트 출력을 채점하지만, 에이전트는 입력과 출력 사이에서 계획하고 도구를 고르고 호출하고 결과를 읽고 결정하며 실패하면 다시 시도합니다. 그래서 최종 답과 그 사이의 모든 일을 함께 봐야 합니다.
| 측면 | LLM 평가 | 에이전트 평가 |
|---|---|---|
| 무엇을 보는가 | 최종 텍스트 출력 | 최종 출력과 중간 모든 단계 |
| 단계 수 | 한 단계 | 여러 단계 |
| 도구 사용 | 없음 | 많은 도구 호출 |
| 비용 추적 | LLM 호출 1회 | 여러 LLM 호출과 도구 호출 |
| 실패 양상 | 틀린 텍스트 | 잘못된 도구, 잘못된 순서, 무한 루프 등 |
평가 유형은 넷입니다. **결과 평가(Outcome)**는 최종 결과만, **궤적 평가(Trajectory)**는 결과에 이르기까지의 모든 단계를, **도구 사용 평가(Tool Use)**는 도구를 쓴 방식을, **계획 평가(Planning)**는 계획의 품질을 봅니다. 실제 프로젝트에서는 둘 이상을 조합합니다. FDE는 에이전트 데모를 보고 "최종 답이 맞다"에서 멈추지 않고, 어떤 경로로 그 답에 도달했는지를 고객과 함께 확인해야 합니다.
8.3.2 결과(Outcome) 평가
결과 평가는 최종 결과만 보고 그 사이는 무시합니다. "델리에서 방갈로르로 가는 금요일 최저가 항공편을 찾아 예약하라"는 지시에서 5단계를 밟았는지 50단계를 밟았는지는 보지 않고, 금요일 최저가 항공편이 예약되었는지만 봅니다. 맞으면 결과가 옳고 아니면 틀립니다.
대표 지표는 세 가지입니다.
- 작업 성공률(Task Success Rate): 올바르게 끝낸 작업의 비율입니다.
- 최종 답변 정확도(Final Answer Accuracy): 최종 답이 기대 답과 맞는지입니다.
- 목표 달성(Goal Completion): 에이전트가 사용자의 목표에 도달했는지입니다.
장점은 정의와 측정이 간단하고, 사용자가 실제로 신경 쓰는 것과 일치하며, 명확한 정답이 있는 작업에 잘 맞는다는 점입니다. 한계는 세 가지입니다.
- 왜 실패했는지 알 수 없습니다.
- 잘못된 단계를 여럿 밟고 우연히 정답에 닿아도 성공으로 기록됩니다.
- 정답이어도 돈과 시간을 많이 낭비했을 수 있습니다.
결과 평가는 올바른 결과가 무엇인지 말할 수 있을 때만 성립합니다. "완료 기준(definition of done)"가 없는 작업은 결과 평가도 할 수 없습니다. 고객에게 "이 에이전트가 성공했다는 것을 누가, 무엇으로 판정합니까"를 먼저 묻고 합의되지 않으면 평가 설계를 시작하지 않는 것이 안전합니다.
8.3.3 궤적(Trajectory) 평가
궤적 평가는 에이전트가 결과에 이르기까지 밟은 모든 단계를 순서대로 살핍니다. 궤적은 에이전트가 지난 행동과 생각의 전체 경로입니다. "내일 방갈로르 날씨는 어떻고 우산을 가져가야 할까?"라는 질문에 좋은 궤적은 이렇습니다.
- 날씨 도구를 도시 = 방갈로르, 날짜 = 내일로 호출합니다.
- 결과를 읽습니다. 비 올 확률이 70%입니다.
- 사용자가 우산을 가져가야 한다고 판단합니다.
- 사용자에게 답합니다.
에이전트가 1단계를 건너뛰고 추측으로 답했다면, 최종 답이 우연히 맞아도 궤적은 틀린 것입니다. 점검 방식은 다섯 가지입니다.
| 방식 | 질문 |
|---|---|
| 완전 일치(Exact Match) | 기대한 단계 순서를 정확히 따랐는가 |
| 순서 일치(In-Order Match) | 필요한 단계를 올바른 순서로 수행했는가 (여분의 단계가 있어도 됨) |
| 순서 무관 일치(Any-Order Match) | 필요한 단계를 모두 수행했는가 (순서는 달라도 됨) |
| 정밀도(Precision) | 밟은 단계 중 유용했던 단계의 비율 |
| 재현율(Recall) | 필요했던 단계 중 실제로 밟은 단계의 비율 |
마지막 둘은 분류 시스템에 쓰는 정밀도, 재현율과 같습니다(1.8 참조). 계산 예를 보겠습니다. 필요한 도구 호출이 search_flights, book_flight, send_email 세 단계인데 에이전트가 search_flights, search_flights, book_flight 세 번을 호출했다면, 밟은 3단계 중 유용한 서로 다른 단계는 2개이므로 정밀도는 2/3 ≈ 0.67이고, 필요한 3단계 중 수행한 것은 2개이므로 재현율도 2/3 ≈ 0.67입니다. 중복 호출이 정밀도를, 빠진 확인 메일이 재현율을 깎았습니다.

장점은 에이전트가 어디서 틀렸는지 정확히 찾을 수 있고, 운과 실제 이해를 구분하며, 디버깅과 개선에 도움이 된다는 점입니다. 한계는 좋은 경로가 흔히 여럿이라 하나의 정답 궤적을 정의하기 어렵고, 최종 답만 확인하는 것보다 평가 비용이 크며, 완전 일치를 요구하면 지나치게 엄격하다는 점입니다. 궤적을 평가하려면 먼저 모든 단계를 포착해야 하며, 그 포착을 제공하는 것이 에이전트 관측성입니다(8.4 참조). 고객의 에이전트가 정답이 여러 경로인 작업이라면 완전 일치 대신 순서 일치나 순서 무관 일치로 시작합니다.
8.3.4 도구 사용 평가
도구 사용 평가는 에이전트가 가용한 도구를 어떻게 썼는지 확인합니다. 도구는 에이전트의 손이므로 잘못된 도구를 고르거나 잘못된 인자를 넘기면 작업 전체가 실패할 수 있습니다. 점검 항목은 다섯 가지입니다.
- 도구 선택(Tool Selection): 작업에 맞는 도구를 골랐는가.
- 인자 정확성(Argument Correctness): 도구에 올바른 인자를 넘겼는가(6.2 참조).
- 도구 호출 성공(Tool Call Success): 호출이 유효한 결과를 돌려주었는가, 오류가 났는가.
- 결과 처리(Result Handling): 도구 결과를 다음 단계에 올바르게 사용했는가.
- 존재하지 않는 도구 환각 없음(No Hallucinated Tools): 없는 도구를 호출하려 하지 않았는가.
예를 들어 도구가 search_flights, book_flight, send_email이고 사용자가 "금요일 방갈로르행 최저가 항공편을 예약해 줘"라고 한다면, 좋은 에이전트는 search_flights를 부르고 최저가 결과로 book_flight를 부른 뒤 send_email로 확인을 보냅니다. 나쁜 에이전트는 send_email을 먼저 부르거나, 항공편을 고르지 않은 채 book_flight를 부르거나, 존재하지 않는 cancel_flight를 부릅니다. 도구 사용 평가는 이런 실수를 모두 잡아냅니다.
장점은 에이전트 실패의 가장 흔한 원인을 잡고, 도구 호출이 구조화되어 있어 자동화하기 쉬우며, 도구 설명과 프롬프트를 개선하는 데 쓸 수 있다는 점입니다. 한계는 최종 답의 품질을 알려 주지 않고, 어느 도구를 써야 하는지에 대한 명확한 기준 답이 필요한데 그것을 정의하기 어려울 때가 있다는 점입니다. 도구 호출 로그는 구조화된 데이터이므로, 고객 현장에서 가장 먼저 자동화할 평가는 도구 선택과 인자 정확성입니다.
8.3.5 계획 평가
계획 평가는 에이전트가 행동하기 전에 세우는 계획의 품질을 봅니다. 많은 에이전트가 먼저 계획을 쓰고 그 계획을 단계별로 따르는데(6.5 참조), 계획이 나쁘면 도구가 아무리 좋아도 실패합니다. 여행 계획의 좋은 예는 이렇습니다: 날짜에 맞는 항공편을 찾고, 사용자 일정에 맞는 최저가를 고르고, 목적지 근처 호텔을 찾고, 예산 안에서 평점이 가장 높은 곳을 고른 뒤, 전체 일정을 사용자에게 보냅니다.
점검 기준은 네 가지입니다.
- 완전성(Completeness): 계획이 작업을 끝내는 데 필요한 모든 단계를 덮는가.
- 정확성(Correctness): 단계 순서가 올바른가.
- 실행 가능성(Feasibility): 가용한 도구로 각 단계를 실제로 할 수 있는가.
- 효율성(Efficiency): 계획이 짧고 깔끔한가, 낭비되는 단계가 있는가.
장점은 에이전트가 나쁜 계획으로 시간을 낭비하기 전에 실수를 일찍 잡고, 에이전트가 어떻게 생각하는지 이해하게 해 준다는 점입니다. 한계는 계획을 미리 만드는 에이전트에만 적용되고, 좋은 계획도 여럿이라 하나의 정답 계획을 정의하기 어렵다는 점입니다. 행동 전에 생각해야 하는 복잡한 작업에서 특히 유용합니다. 반응형으로 즉석에서 행동하는 에이전트를 만난 고객이라면 계획 평가 대신 궤적 평가를 쓰도록 안내합니다.
8.3.6 핵심 지표와 벤치마크
실무에서 추적하는 핵심 지표는 여덟 가지이며 모두 함께 봅니다. 성공률이 높아도 작업마다 큰돈이 들거나 오래 걸리면 쓸모가 없습니다.
| 지표 | 의미 | 비고 |
|---|---|---|
| 작업 성공률(Task Success Rate) | 올바르게 끝낸 작업의 비율 | 가장 중요. 낮으면 나머지는 의미가 없음 |
| 도구 호출 정확도(Tool Call Accuracy) | 올바르고 유용했던 도구 호출의 비율 | |
| 작업당 단계 수(Number of Steps per Task) | 작업을 끝내는 데 쓴 단계 | 적을수록 대체로 좋은 에이전트 |
| 작업당 비용(Cost per Task) | LLM 호출과 도구 호출에 쓴 돈 | 운영 에이전트에 결정적 |
| 작업당 지연(Latency per Task) | 작업 완료 시간 | 사용자는 무한히 기다리지 않음 |
| 복구율(Recovery Rate) | 도구 호출이 실패해도 회복하여 끝내는 비율 | |
| 안전 점수(Safety Score) | 하지 말아야 할 해롭거나 위험한 행동을 했는가 | |
| 루프 감지(Loop Detection) | 같은 도구를 반복 호출하며 무한 루프에 빠졌는가 | 에이전트 루프 설계(6.3, 7.2 참조) |
이 숫자 대부분은 사실상 에이전트 루프에 대한 판정입니다. 같은 지표를 서비스 운영 중 관측하는 방법은 8.4.4에 있습니다.
에이전트도 LLM처럼 비교용 벤치마크가 있고, 시험하는 능력이 다릅니다.
| 범주 | 벤치마크 | 내용 |
|---|---|---|
| 함수 호출 | BFCL | 알맞은 함수 선택과 올바른 인자 전달. 도구 사용에서 가장 많이 인용 |
| 고객 서비스 | τ-bench / τ²-bench | 도구를 쓰고 회사 정책을 따라야 하는 현실적 환경. 원래 τ-bench는 에이전트만 환경에 작용하는 단일 제어이고, τ²-bench는 에이전트와 시뮬레이션된 사용자가 각자 도구를 가지고 같은 세계에서 행동하는 이중 제어를 추가 |
| 코딩 에이전트 | SWE-bench Verified | 오픈소스의 실제 GitHub 이슈 |
| 코딩 에이전트 | Terminal-Bench | 샌드박스 명령줄에서 머신러닝 모델 학습, 리눅스 소스 빌드, 바이너리 리버스 엔지니어링 같은 실제 작업. diff 패치가 아니라 셸 명령을 실행하므로 진정한 에이전트형 |
| 코딩 에이전트 | MLE-bench | Kaggle 대회의 머신러닝 엔지니어링 작업 |
| 범용 비서 | GAIA | 추론, 도구 사용, 웹 브라우징을 결합한 작업 |
| 웹 브라우징 | WebArena, VisualWebArena, BrowseComp | 현실적 웹사이트(6.17 참조), 페이지의 시각 이해가 필요한 웹 작업, 열린 웹에서의 정보 탐색 |
| 컴퓨터 사용 | OSWorld, AppWorld | 에이전트가 컴퓨터 전체를 제어하는 실제 데스크톱 환경(6.16 참조), 일상 앱을 API로 다루는 에이전트 |
에이전트 벤치마크에도 두 가지 주의가 있습니다.
- 포화: 모델이 발전하며 상위 에이전트가 점수 상한에 가까워지고 에이전트 간 격차가 의미 없을 만큼 작아집니다. 원문은 SWE-bench Verified가 더 어려운 Terminal-Bench로 보완되고 있다고 설명합니다. 이 서술은 2026년 5월 시점의 판단입니다.
- 현실과의 간극(Real world gap): 공개 벤치마크 점수가 높다고 우리 제품에서 잘 작동한다는 뜻이 아니며 공개 벤치마크는 우리 작업과 거의 일치하지 않으므로, 우리 용도에 맞는 평가를 직접 만들어야 합니다.
고객이 벤치마크 순위를 근거로 에이전트 프레임워크를 고르려 하면, 자기 업무에서 작업 성공률, 작업당 비용, 지연을 같은 표에 놓고 비교하도록 안내합니다.
8.3.7 프레임워크와 도구
대규모로 평가를 돌리는 방법은 세 가지이며, 각 방법의 틀과 한계는 8.1, 8.2에서 본 것과 같습니다.
| 방법 | 방식 | 장점 | 한계 |
|---|---|---|---|
| 자동 평가 | 테스트 작업 세트로 에이전트를 돌리고 출력과 궤적을 기대값과 코드로 비교. 항공편 번호를 비교하고 도구 호출 로그를 점검 | 빠르고 싸고 재현 가능 | 명확한 기준 답이 있을 때만 가능 |
| LLM 판정 | 사용자 요청, 궤적 전체, 최종 답을 강한 LLM에게 주고 작업 완수, 올바른 도구, 효율적 경로, 정답 여부를 1~5점으로 이유와 함께 채점시킴 (8.2 참조) | 확장되고 개방형 작업에 통함 | 판정자 편향이 있으므로 사람 평점과 대조 검증 필요 |
| 사람 평가 | 사람이 궤적과 최종 답을 보고 채점 | 복잡한 작업에서 자동 지표와 판정자가 놓치는 미묘한 문제까지 잡음, 최고 품질 | 느리고 비싸며 확장 어려움 |
실제 제품에서는 셋을 조합합니다. 빠른 피드백은 자동 평가, 일상 모니터링은 LLM 판정, 출시 전 최종 점검은 사람 평가가 맡습니다.
평가 프레임워크는 테스트 작업 정의, 에이전트 실행, 전체 궤적 포착, 실행별 채점, 대시보드 표시를 구조화해 줍니다. 원문이 소개하는 대표 도구는 두 가지입니다.
- LangSmith: LangChain과 LangGraph 에이전트의 추적과 평가를 위해 만들어졌고 궤적 검사를 강하게 지원합니다(7.4, 7.5 참조).
- DeepEval: 에이전트, 도구 사용, RAG용 기성 지표가 많은 오픈소스 라이브러리입니다.
이 도구를 모두 배울 필요는 없고, 직접 평가 체계를 만들 때 무엇을 검색해야 하는지 알면 충분합니다.
에이전트 평가에는 고유한 어려움이 있고 각각에 대한 대응이 있습니다.
| 도전 과제 | 내용 | 대응 |
|---|---|---|
| 여러 개의 올바른 경로 | 정답 궤적이 하나가 아니라 궤적 비교가 까다로움 | 순서 일치 등 느슨한 방식 사용 |
| 비결정성 | LLM이 결정적이지 않아 같은 입력에도 답이 다름(2.11 참조) | 각 테스트를 여러 번 실행 |
| 긴 궤적 | 20, 50, 100 단계에 달해 직접 검토하기 고단함 | 소량 표본 검토와 LLM 판정 병행 |
| 환경 변화 | 검색 엔진이나 데이터베이스 같은 실제 시스템 결과가 매일 바뀌어 재현이 어려움 | 가짜 도구와 데이터의 샌드박스 |
| 연쇄 실패 | 2단계의 작은 실수가 10단계의 큰 실패가 됨 | 근본 원인까지 추적 |
| 안전 위험 | 잘못된 행동이 실제 돈을 쓰거나 실제 사용자에게 잘못된 메일을 보냄 | 사전에 포착 |
| 평가 비용 | 작업마다 LLM과 도구 호출이 많아 비쌈 | 비용도 지표로 추적 |
모범 사례 아홉 가지는 다음과 같습니다.
- 탄탄한 테스트 세트: 실제 사용자 작업에 맞는 쉬운 것, 어려운 것, 극단 사례, 적대적 사례를 포함합니다.
- 결과와 궤적을 함께 평가: 결과는 완료 여부를, 궤적은 실패 이유를 알려 줍니다.
- 각 테스트를 여러 번 실행: 비결정성 때문에 작업마다 최소 3~5회 돌리고 한 번의 결과가 아니라 평균과 최악의 경우를 봅니다. 예를 들어 5회 중 4회 성공하면 평균 성공률은 4/5 = 80%이지만 최악의 경우는 실패이며, 고객의 작업이 한 번의 실패도 허용하지 않는다면 80%는 합격이 아닙니다.
- 샌드박스 환경: 운영 환경에서 에이전트를 시험하지 않고 가짜 도구와 가짜 데이터로 안전하게 시험합니다.
- 비용과 지연을 처음부터 추적: 작업당 5분이 걸리고 호출 비용이 높은 완벽한 에이전트는 운영에서 살아남지 못합니다.
- 판정 검증: 판정 점수를 작은 표본의 사람 점수와 비교합니다.
- 회귀 테스트: 프롬프트, 도구, 모델을 바꿀 때마다 전체 세트를 돌려 나빠진 것이 없는지 확인합니다.
- 루프와 타임아웃 감시: 최대 단계 수와 최대 시간을 항상 설정하여 나쁜 에이전트가 끝없이 돌며 돈을 쓰는 일을 막습니다.
- 사람 개입 유지: 자동화해도 매주 소량의 궤적을 직접 검토합니다.
FDE는 평가 체계를 인도할 때 테스트 세트, 반복 실행 횟수, 샌드박스, 최대 단계 수 설정이 고객 환경에 갖춰졌는지부터 체크리스트로 확인합니다.
8.4 에이전트 관측성(Observability)
원문: What is AI Agent Observability? Traces, Spans, and Metrics Explained
에이전트는 최종 답 뒤에서 수많은 단계를 밟으므로, 고객이 "엉뚱한 항공편이 예약됐다"고 신고했을 때 어느 단계가 틀렸는지 기록이 없으면 추측밖에 할 수 없습니다. 관측성은 그 기록을 남기고 읽는 방법입니다. 이하 내용은 2026년 5월 글 기준입니다.
8.4.1 관측성의 세 기둥
**관측성(Observability)**은 "관찰(Observe) + 능력(Ability)"으로, 시스템이 내놓는 데이터를 보고 내부에서 무슨 일이 일어나는지 알아내는 능력입니다. "지금 시스템 안에서 무슨 일이 왜 일어나고 있는가"에 답할 수 있다는 뜻입니다. 자동차가 이상한 소리를 낼 때 엔진을 뜯지 않고 계기판의 속도, 연료, 엔진 온도로 내부를 짐작하는 것이 그 예이며, 의사가 몸속을 직접 보지 못하고 X선, 혈액 검사, 심박 모니터 신호로 상태를 파악하는 것도 같습니다.
AI 에이전트 관측성은 에이전트가 내부에서 하는 모든 일을 단계별로 기록하고 이해하여, 에이전트가 왜 그렇게 행동했는지 볼 수 있게 하는 실천입니다. 항공편 예약 에이전트는 겉으로는 "항공편이 예약되었습니다"라는 메시지만 보이지만, 안에서는 작업을 생각하고, 검색 도구를 입력과 함께 부르고, 도구가 항공편 목록을 돌려주고, 에이전트가 하나를 고르고, 예약 도구를 부르고, 확인을 받는 일이 일어납니다. 비행기의 블랙박스처럼 문제가 생기면 기록을 열어 정확히 무슨 일이 있었는지 확인할 수 있습니다.
필요한 이유는 에이전트가 예측하기 어렵기 때문입니다. 같은 작업에도 경로가 달라지고, 실제 도구를 호출하고, 실제 돈을 쓰고, 실제 이메일을 보냅니다. 사용자가 "에이전트가 엉뚱한 항공편을 예약했다"고 불평할 때 가능한 원인은 다섯 가지입니다.
- LLM이 사용자의 요청을 오해했는가.
- 검색 도구를 잘못된 날짜로 호출했는가.
- 검색 도구가 잘못된 데이터를 돌려주었는가.
- 올바른 목록에서 잘못된 항공편을 골랐는가.
- 예약 도구가 실패했는데 에이전트가 무시했는가.
관측성이 없으면 어느 것도 답할 수 없습니다. 필요한 이유를 모으면 다음과 같습니다.
- 시작부터 끝까지 에이전트가 밟은 모든 단계를 봅니다.
- 에이전트가 틀린 정확한 단계를 찾습니다.
- 작업당 돈과 토큰 소모를 추적합니다.
- 속도를 추적합니다.
- 오류, 재시도, 실패한 도구 호출을 포착합니다.
- 에이전트가 특정 결정을 내린 이유를 이해합니다.
- 운영 환경에서 실시간으로 감시하고 장애 알림을 받습니다.
- 에이전트를 개선하는 데 쓸 실제 데이터를 모읍니다.
모든 잘못된 단계가 사고는 아닙니다. 공격자가 에이전트가 읽는 페이지나 이메일에 지시문을 숨겨 놓았다면 트레이스가 무슨 일이 있었는지 보여 주는 거의 유일한 곳입니다(9.2 참조).
일반 소프트웨어 관측성과의 차이는 에이전트가 **비결정적(non-deterministic)**이라는 데 있습니다. 일반 소프트웨어는 2 + 2를 부르면 항상 4가 나오고 경로가 고정됩니다. 에이전트는 같은 작업에 오늘은 3단계, 내일은 6단계를 밟을 수 있고, 한 번은 도구를 부르고 다음엔 건너뛸 수 있습니다. 또한 일반 소프트웨어의 오류는 대체로 명확한 충돌이지만, 에이전트는 조용히 실패하여 완벽해 보이지만 완전히 틀린 답을 내면서도 충돌이나 붉은 오류가 없을 수 있습니다.
| 전통적 관측성 | AI 에이전트 관측성 |
|---|---|
| 같은 입력에 같은 출력 | 같은 입력에 다른 출력 가능 |
| 고정된 실행 경로 | 실행마다 경로가 바뀜 |
| 오류는 명확한 충돌 | 조용히 실패하며 맞아 보일 수 있음 |
| CPU, 메모리, 요청을 추적 | 토큰, 비용, 도구 호출, 추론도 추적 |
| 주로 "실행되었나" 확인 | "답이 좋았나"도 확인 |
| 로그는 단순 텍스트 줄 | 프롬프트, 응답, 결정도 포착 |
그래서 에이전트 관측성은 전통적 관측성 전체에 에이전트 고유의 새로운 것들을 더한 것입니다.
관측성은 고전적인 세 기둥 위에 서 있고, 이는 에이전트에도 적용됩니다.
| 기둥 | 정의 | 에이전트에서의 예 |
|---|---|---|
| 로그(Logs) | 일어난 사건의 단순 텍스트 기록 | "에이전트가 델리에서 방갈로르행 금요일로 항공편 검색 도구를 호출했다" |
| 메트릭(Metrics) | 시간에 따라 측정하는 숫자 | 사용한 토큰 수, 작업당 비용, 평균 소요 시간 |
| 트레이스(Traces) | 한 요청이 시스템을 지나는 전체 여정을 단계별로 보여 줌 | 한 작업의 모든 생각, 도구 호출, LLM 호출 |
에이전트는 내부에서 너무 많은 단계를 밟으므로 행동을 이해하려면 전체 여정이 필요하기에, 에이전트에서는 트레이스가 가장 중요한 기둥입니다. 고객이 기존 APM 대시보드(CPU, 메모리, 요청 수)만 갖고 있다면 "답이 좋았는가"를 볼 수 없다는 점이 그 공백입니다.
8.4.2 트레이스(Trace)와 스팬(Span)
**스팬(span)**은 에이전트 안의 하나의 단계나 작업에 대한 기록이고, **트레이스(trace)**는 에이전트의 한 번 전체 실행에 대한 기록으로 여러 스팬으로 이루어집니다. 스팬은 한 단계, 트레이스는 여러 단계로 된 전체 이야기입니다. 병원 진료에 비유하면 트레이스는 한 번 방문한 진료 보고서 전체이고, 스팬은 그 안의 개별 검사입니다.
항공편 예약 에이전트에서 사용자가 항공편을 요청하면 한 번 전체 실행이 일어나며 이것이 하나의 트레이스입니다. 그 안에 일곱 개의 스팬이 있습니다.
- 에이전트가 사용자 요청을 받음.
- LLM이 생각하고 항공편 검색을 결정.
- 에이전트가 항공편 검색 도구를 호출.
- 에이전트가 검색 결과를 읽음.
- LLM이 최저가 항공편을 고름.
- 에이전트가 예약 도구를 호출.
- 에이전트가 최종 확인을 돌려줌.
각 스팬은 입력, 출력, 걸린 시간, 오류 같은 유용한 세부를 기록합니다. 스팬은 서로 안에 중첩될 수 있습니다. 예를 들어 "계획" 스팬 안에 "LLM 호출" 스팬이 들어가며, 이 중첩이 트리를 이루어 에이전트 작업의 전체 구조를 보여 줍니다. 에이전트를 처음부터 작은 단계의 그래프로 설계하면 노드 하나마다 깔끔한 스팬이 공짜로 생깁니다(7.3 참조).
flowchart TD
T["TRACE: 델리-방갈로르 항공편 예약"] --> S1["SPAN: 사용자 요청 수신"]
T --> S2["SPAN: 작업 계획"]
S2 --> S2a["SPAN: LLM 호출 (항공편 검색 결정)"]
T --> S3["SPAN: 도구 호출 (항공편 검색)<br/>입력: 델리 → 방갈로르, 금요일<br/>출력: 항공편 12건 목록"]
T --> S4["SPAN: 최저가 항공편 선택"]
S4 --> S4a["SPAN: LLM 호출 (항공편 선택)"]
T --> S5["SPAN: 도구 호출 (예약)<br/>출력: 예약 확정"]
T --> S6["SPAN: 최종 확인 반환"]
그림 8.4.2 — 하나의 트레이스는 스팬의 트리이며, 일부 스팬은 더 작은 스팬을 품습니다.
한 사용자가 에이전트와 길게 대화하면 요청마다 트레이스가 하나씩 생깁니다. 이 트레이스를 모두 묶은 것이 **세션(session)**입니다. 세션은 여러 트레이스를, 트레이스는 여러 스팬을 포함합니다.
| 계층 | 의미 | 예 |
|---|---|---|
| 세션 | 한 사용자의 한 번 전체 대화 | 항공편 상담 대화 |
| 트레이스 | 요청 하나의 실행 | 트레이스 1: "항공편을 찾아 줘", 트레이스 2: "첫 번째 항공편을 예약해 줘" |
| 스팬 | 트레이스 안의 한 단계 | LLM 호출, 검색 도구 호출, 예약 도구 호출 |
고객 현장에서는 신고된 대화의 세션 ID로 문제의 트레이스를 찾고, 그 안의 스팬에서 입력과 출력을 하나씩 따라가는 순서로 디버깅합니다.
8.4.3 에이전트 내부에서 관측할 것
스팬마다 무엇을 포착해야 하는지는 에이전트의 구성 요소 여섯 가지로 나뉩니다.
| 구성 요소 | 포착할 것 | 이유 |
|---|---|---|
| 1. LLM 호출 | 보낸 전체 프롬프트, 받은 전체 응답, 모델명, 답의 창의성을 조절하는 온도 설정(2.11 참조), 입력 토큰 수, 출력 토큰 수, 비용 | 가장 중요. 에이전트의 생각과 비용을 이해 |
| 2. 도구 호출 | 어떤 도구를 불렀는가, 어떤 입력을 넘겼는가, 어떤 출력이 돌아왔는가, 성공했는가 실패했는가 | 에이전트는 대부분 잘못된 도구를 부르거나 잘못된 입력을 넘겨 실패하므로 가치가 큼 |
| 3. 추론과 계획 단계 | 행동 전 생각 | 에이전트가 특정 행동을 고른 이유를 이해 |
| 4. 메모리와 컨텍스트 | 메모리에서 읽은 것, 메모리에 쓴 것(6.7 참조) | 과거 단계나 대화를 기억하는 에이전트의 상태 파악 |
| 5. 재시도와 오류 | 모든 재시도와 오류 | 에이전트가 어디서 고전하는지 파악 |
| 6. 최종 출력 | 사용자에게 준 최종 답 | 맞고 유용했는지 확인 |
이 여섯을 모두 포착하면 에이전트의 전체 모습을 얻고 숨는 것이 없습니다. "LLM을 호출했다"는 한 줄 로그로는 나중에 디버깅할 수 없으므로 실제 입력과 출력을 남깁니다. 다만 프롬프트와 도구 입력에는 사용자의 개인 정보가 들어 있을 수 있으므로, 저장하기 전에 민감 정보를 가리는 처리가 포착과 함께 설계되어야 합니다(8.4.5 참조).
8.4.4 핵심 지표
트레이스는 한 번 실행의 전체 이야기를 알려 주고, 시간에 따라 추적하려면 숫자인 메트릭이 필요합니다. 핵심 지표는 일곱 가지입니다.
| 지표 | 의미 | 주의점 |
|---|---|---|
| 지연(Latency) | 작업을 끝내는 데 걸리는 시간 | 전체 시간과 단계별 시간 모두 추적. 느린 도구나 느린 LLM 호출이 전체를 느리게 함 |
| 토큰 사용량(Token Usage) | 작업당 LLM이 읽고 쓰는 텍스트 조각의 수 | 토큰이 많을수록 비용이 큼 |
| 비용(Cost) | 작업당 쓴 돈 | 에이전트는 LLM을 여러 번 호출하므로 빠르게 불어남 |
| 단계 수(Number of Steps) | 작업을 끝내는 데 밟은 단계 | 지나치게 많으면 시간과 돈을 낭비하거나 루프에 빠진 것(6.3 참조) |
| 도구 호출 성공률(Tool Call Success Rate) | 성공한 도구 호출의 비율 | 낮으면 도구나 에이전트의 어딘가가 고장 |
| 오류율(Error Rate) | 에이전트가 오류를 만나는 빈도 | 오르면 무언가 잘못되고 있다는 조기 경보 |
| 작업 성공률(Task Success Rate) | 작업을 올바르게 끝내는 빈도 | 가장 중요 |
이 숫자를 시간에 따라 지켜보면 에이전트가 나빠지기 시작하는 시점을 빠르게 알아챌 수 있습니다. 작업 성공률은 평가 쪽 지표와 겹치므로 8.3.6의 정의를 그대로 씁니다. 고객과는 비용, 지연, 오류율에 알림 임계값을 정하는 것으로 시작하는 것이 현실적입니다.
8.4.5 도구와 프레임워크
관측성이 실제로 작동하는 방식은 다섯 단계입니다.
- 계측(Instrumentation): 에이전트에 각 단계에서 입력, 출력, 시간, 오류를 기록하는 작은 코드를 추가합니다. 중요한 지점마다 작은 센서를 다는 것과 같으며, 원문은 최신 에이전트 프레임워크가 대체로 계측을 내장하고 있어 직접 쓸 코드가 적다고 설명합니다. 외부 출처로는 확인하지 못했으며 프레임워크마다 다를 수 있습니다.
- 데이터 수집: 실행 중에 계측이 트레이스, 스팬, 메트릭을 만들고 관측성 플랫폼으로 보냅니다.
- 저장과 연결: 플랫폼이 스팬을 저장하고 전체 트레이스로 연결하여 한 번 실행의 모든 단계를 하나의 이야기로 묶습니다.
- 시각화: 대시보드에서 트레이스를 스팬의 트리로 보고, 스팬을 눌러 정확한 프롬프트, 응답, 도구 입력과 출력을 확인합니다.
- 알림: 비용이 갑자기 오르거나 오류율이 높아지거나 에이전트가 느려지면 즉시 통지를 받습니다.
flowchart TD
A["AI 에이전트 (계측 포함)<br/>각 단계를 기록"] --> B["트레이스, 스팬, 메트릭"]
B --> C["관측성 플랫폼<br/>스팬을 저장하고 전체 트레이스로 연결"]
C --> D["대시보드: 모든 단계 확인"]
C --> E["알림: 비용, 오류, 지연 통지"]
그림 8.4.5 — 에이전트가 남긴 기록이 플랫폼을 거쳐 대시보드와 알림으로 나뉩니다.
중요한 표준은 OpenTelemetry입니다. 트레이스, 메트릭, 로그를 수집하는 공통 형식을 정의한 오픈소스 표준이므로, 데이터를 한 번 수집해 여러 도구로 보낼 수 있고 대부분의 관측성 도구가 이를 지원합니다. OpenTelemetry에는 모델명, 토큰 수 같은 AI 고유 항목에 표준 이름을 주는 **GenAI 규약(GenAI conventions)**이 있어(2026년 현재 개발 단계 규약이라 항목 이름이 바뀔 수 있습니다), 도구마다 같은 것을 다른 이름으로 부르는 문제가 없습니다.
대표 도구는 다음과 같습니다(2026년 5월 글 기준).
| 도구 | 특징 |
|---|---|
| LangSmith | LangChain 팀이 만든 관측성과 평가 플랫폼. 에이전트 단계별 상세 트레이스(7.4 참조) |
| Langfuse | LLM 앱과 에이전트용 오픈소스 관측성 플랫폼. 트레이스, 비용, 메트릭 포착 |
| Arize Phoenix | OpenTelemetry 위에 만든 LLM 애플리케이션 추적과 평가용 오픈소스 도구 |
| OpenTelemetry | 트레이스, 메트릭, 로그를 공통 형식으로 수집하는 개방 표준 |
| Laminar | 단일 LLM 호출이 아니라 오래 걸리는 에이전트의 추적을 위해 만든 오픈소스, OpenTelemetry 네이티브 플랫폼 |
| Datadog, Grafana | LLM과 에이전트 모니터링도 지원하게 된 전통적 관측성 플랫폼 |
많은 도구가 OpenTelemetry를 지원하므로 하나의 도구에 묶이지 않습니다.
관측성에도 어려움이 있고 대응이 필요합니다.
| 도전 과제 | 내용 |
|---|---|
| 방대한 데이터 | 에이전트는 단계가 많아 트레이스 데이터가 막대하며, 저장과 검색이 비싸질 수 있음 |
| 민감 데이터 | 프롬프트와 도구 입력에 개인 정보가 있을 수 있으므로 가리거나 마스킹해야 함 |
| 비결정적 행동 | 매번 경로가 달라 두 실행을 직접 비교하기 어려움 |
| 관측 자체의 비용 | 모두 기록하면 시간과 비용이 늘어나므로 기록량의 균형이 필요 |
| 단계 연결 | 서브에이전트가 많은 복잡한 에이전트에서는 스팬을 하나의 깔끔한 트레이스로 잇기 어려워 좋은 계측이 필요(6.13 참조) |
모범 사례는 여덟 가지입니다.
- 처음부터 모든 것을 트레이스: 문제가 생기길 기다리지 말고 에이전트를 만들 때 넣습니다.
- 전체 프롬프트와 응답 포착: "LLM 호출됨"이 아니라 실제 입력과 출력을 남깁니다.
- OpenTelemetry 같은 공통 표준 사용: 유연성을 유지하고 특정 도구 종속을 피합니다.
- 모든 실행의 비용과 토큰 추적: 에이전트 비용은 빠르게 늘어납니다.
- 민감 데이터 마스킹: 저장 전에 사용자의 개인 정보를 가립니다.
- 알림 설정: 무언가 고장 나면 알림이 알려 줍니다.
- 관측성과 평가의 연결: 모은 트레이스로 에이전트를 채점하고 개선합니다.
- 과거 실행의 트레이스 보관: 패턴을 찾고 시간에 따라 개선하는 데 씁니다.
FDE가 고객 에이전트를 배포할 때는 OpenTelemetry 호환 도구를 고르고, 마스킹 규칙과 보관 기간을 개인정보 담당자와 함께 정해 둡니다.
8.4.6 관측성 vs 평가
관측성과 평가는 자주 혼동되지만 다르고, 함께 일합니다. 관측성은 에이전트가 무엇을 했는지 알려 주고, 평가는 그것이 얼마나 좋았는지 알려 줍니다. 관측성은 매 실행의 전체 이야기를 기록하고, 평가는 그 이야기가 좋은 이야기였는지 판단합니다.
항공편을 예약한 에이전트의 예에서, 관측성은 예약까지 밟은 모든 단계를 보여 주고, 평가는 최저가 항공편을 골랐는지, 올바른 날짜를 썼는지, 작업을 올바르게 끝냈는지를 확인합니다.
| 구분 | 관측성 | 평가 |
|---|---|---|
| 답하는 질문 | 무엇을 했는가 | 얼마나 좋았는가 |
| 산출물 | 트레이스, 스팬, 메트릭 (원시 데이터) | 점수와 판정 |
| 의존 관계 | 먼저 있어야 함 | 관측성 데이터를 사용 |
관측성이 먼저 원시 데이터를 주고, 평가가 그 데이터로 에이전트를 채점합니다. 관측성이 없으면 평가할 것이 없고(8.3.3 참조), 평가가 없으면 관측성 데이터에는 품질에 대한 판단이 없습니다. 고객에게는 "트레이스는 모으고 있지만 그 점수는 누가 매깁니까"와 "점수는 있지만 문제 실행을 열어 볼 수 있습니까"를 함께 물어 두 쪽 중 빠진 쪽을 확인합니다.
8.5 고객이 내일 묻는다면
각 질문에 소리 내어 답해보고, 막히면 표시된 절로 돌아가십시오. 통과 기준은 "내일 고객이 물어도 설명하고 결정할 수 있는가"입니다.
- "이 챗봇이 좋은지 어떻게 알 수 있나요?" 평가 방법 네 가지 중 무엇을 어떻게 조합해 답합니까? (8.1.1, 8.1.6)
- "번역 품질을 BLEU 점수로 보고하려 합니다." 이 지표가 맞는 작업과 맞지 않는 작업을 어떻게 가릅니까? (8.1.2)
- "벤치마크 1위 모델이니 그걸로 가죠." 무엇을 되묻고 무엇을 대신 제안합니까? (8.1.3)
- "사람이 전부 읽어 볼 수는 없는데, 사람 평가는 언제 쓰나요?" 어디에 쓰도록 설계합니까? (8.1.4)
- "두 달 전에 평가했고 점수가 좋았는데 다시 해야 하나요?" 무엇 때문에 다시 해야 합니까? (8.1.5)
- "챗봇의 검색 품질과 답변 품질을 따로 보고 싶어요." 어떤 지표들로 나눕니까? (8.1.6)
- "다른 LLM에게 채점시키면 믿을 수 있나요?" 구축 단계에서 무엇을 검증합니까? (8.2.2, 8.2.5)
- "생성도 평가도 같은 벤더 모델로 하면 편하겠죠?" 어떤 편향이 생기고 어떻게 막습니까? (8.2.4)
- "에이전트 데모에서 최종 답이 맞았으니 합격 아닌가요?" 결과 평가만으로 놓치는 것은 무엇입니까? (8.3.1, 8.3.2, 8.3.3)
- "에이전트가 같은 도구를 계속 부르는 것 같아요." 무엇으로 재고 어떤 지표를 봅니까? (8.3.4, 8.3.6)
- "엉뚱한 항공편이 예약됐다는 신고가 들어왔습니다." 어떤 순서로 원인을 추적합니까? (8.4.1, 8.4.2)
- "대시보드에 CPU와 요청 수는 있는데 에이전트는 따로 볼 게 있나요?" 무엇을 더 기록합니까? (8.4.3, 8.4.4)
- "트레이스는 모으는데 품질은 누가 판단하나요?" 관측성과 평가의 관계를 설명해 보십시오. (8.4.6, 8.3.3)
위 질문에 막힌 곳이 없다면 이 장은 통과입니다. 막힌 곳은 표시된 절을 다시 읽고 같은 질문에 답해 보십시오.