Split View: 에이전트 평가 시스템 2026 — Inspect AI·Promptfoo·Phoenix·LangSmith·OpenAI Evals 심층 비교 (모델이 아니라 에이전트를 측정한다)
에이전트 평가 시스템 2026 — Inspect AI·Promptfoo·Phoenix·LangSmith·OpenAI Evals 심층 비교 (모델이 아니라 에이전트를 측정한다)
프롤로그 — "잘 돈다"는 말은 평가가 아니다
2026년 어느 팀이든 한 번쯤 한다는 대화.
PM: "에이전트 어떻게 돌아?" 엔지니어: "잘 돼요. 데모 보여드릴게요." PM: "지난주보다 좋아졌어?" 엔지니어: "음... 체감으로는요."
이게 2026년에도 흔한 풍경이다. 에이전트는 만들 줄 알지만, 에이전트가 실제로 얼마나 잘 작동하는지 숫자로 말할 줄 모른다. 모델 회사는 MMLU·GPQA·SWE-bench 점수를 매달 갱신하는데, 정작 우리 팀의 에이전트는 "어제보다 좋아졌는지"를 못 본다.
문제는 에이전트 평가가 LLM 평가와 다른 문제라는 점이다. LLM 평가는 "이 모델이 이 입력에 어떤 출력을 내는가"를 잰다. 에이전트 평가는 "이 모델 + 하네스 + 도구가 이 작업을 끝까지 끌고 가는가"를 잰다. 후자는 비결정적이고, 다단계이며, 환경에 의존한다. 벤치마크 한 번 돌리는 일이 아니다.
이 글은 2026년 현재 에이전트 평가 시스템의 지도를 그린다. Inspect AI(UK AISI), Promptfoo, Arize Phoenix, LangSmith, OpenAI Evals, Braintrust, Helicone, Langfuse — 각 프레임워크의 위치와, eval 분류학과, 우리 팀이 첫 에이전트 eval 스위트를 어떻게 짤지까지.
1장 · 모델 eval vs 에이전트 eval — 다른 문제다
먼저 용어부터 정리한다. 둘은 자주 섞여 쓰이지만 다른 문제다.
| 차원 | 모델(LLM) 평가 | 에이전트 평가 |
|---|---|---|
| 측정 대상 | 모델 가중치 | 모델 + 하네스 + 도구 + 환경 |
| 입력 | 단일 프롬프트 | 작업 명세 + 도구 + 상태 |
| 출력 | 단일 응답 | 다단계 행동 시퀀스 |
| 결정성 | 거의 결정적 (temperature 0) | 비결정적 (도구 부작용, 환경) |
| 채점 | 정답 비교 | task 완료·trajectory·효율성 |
| 대표 벤치마크 | MMLU·GPQA·HumanEval | SWE-bench·WebArena·OSWorld·tau-bench |
| 누가 책임지나 | 모델 제공자 | 우리 팀 |
핵심 통찰: 모델은 점점 상품이 된다. 차별화는 에이전트 시스템에서 나온다. 그리고 에이전트 시스템은 우리가 책임진다. 모델 회사가 SWE-bench 점수를 올려도, 그게 우리 팀의 티켓을 더 잘 푼다는 보장은 없다. 우리 도메인에서 잘 도는지는 우리가 잰다.
또 한 가지: 에이전트 평가는 하네스 평가이기도 하다. 같은 모델 + 다른 하네스 = 다른 결과. 그래서 "모델 비교"는 하네스를 고정하고 모델만 바꿀 때 의미가 있고, "하네스 비교"는 모델을 고정하고 하네스만 바꿀 때 의미가 있다. 둘 다 평가 인프라가 받쳐줘야 가능하다.
2장 · eval 분류학 — 무엇을 측정할 수 있나
에이전트 eval을 짤 때 첫 질문은 "무엇을 측정할지"다. 흔히 쓰는 6가지 축.
1) 결정론적 eval (deterministic)
골든 테스트 셋. 입력 → 기대 출력. 단순한 비교(정확 일치·정규식·구조 비교·코드 실행 후 결과 비교).
- 장점: 빠르고 싸다, 재현 가능.
- 단점: 자유로운 자연어 출력에 잘 안 맞는다, 만드는 비용이 크다.
- 언제: 분류·추출·계산·코드 생성처럼 "정답"이 존재할 때.
2) LLM-as-judge (모델이 채점)
다른(보통 더 강한) 모델이 출력의 품질을 채점한다. 루브릭이 들어가는 prompt로.
- 장점: 자유 형식 출력을 채점할 수 있다, 빠르게 스케일.
- 단점: 채점자의 편향(positional bias·verbosity bias·자기 편애), 비용, 채점 모델 업데이트 시 점수 표류.
- 언제: 요약·설명·창작·"좋은 답변" 같은 정성 기준.
3) Human eval
사람이 직접 채점. 보통 페어 비교(A vs B)나 1~5점 척도.
- 장점: 진실에 가장 가깝다.
- 단점: 느리고 비싸다, 일관성 확보가 어렵다.
- 언제: 모델/하네스 변경의 최종 검증, LLM-as-judge의 보정.
4) Task-completion (작업 완수)
에이전트가 주어진 작업을 끝냈는가 — 이진 결과. SWE-bench의 "테스트가 통과하는가", WebArena의 "원하는 상태에 도달했는가" 같은.
- 장점: 가장 의미 있는 신호 — 실제로 작동하는가.
- 단점: 환경 구축 비용, 부분 점수 부여가 어렵다.
5) Trajectory eval (과정 평가)
작업을 끝냈는지뿐 아니라 어떻게 끝냈는지. 도구 호출의 순서·논리적 흐름·중간 추론.
- 장점: 운 좋게 끝낸 케이스 vs 진짜로 잘한 케이스를 구별.
- 단점: 채점 기준 자체가 어렵다.
6) Efficiency eval
같은 작업을 더 적은 자원으로 끝냈는가. 스텝 수·토큰 사용량·실행 시간·도구 호출 수·비용.
- 장점: production에서 직접적으로 비용/지연에 연결.
- 단점: 작업 난이도와 결합 — 어려운 작업이라 스텝이 많은 건 정상.
실무 조합: task-completion(이진) + trajectory(샘플링) + efficiency(연속). LLM-as-judge는 비정형 출력에만, human은 회귀의 최종 검증에만. 한 축만 보면 항상 속는다.
3장 · Inspect AI — 점점 골든 스탠더드
Inspect AI는 UK AI Safety Institute(AISI)가 만든 OSS 프레임워크다. 2024년 5월 공개 이후, 2026년 현재 에이전트 safety eval의 사실상 기준으로 자리 잡고 있다. Apollo Research·METR·Anthropic·OpenAI 같은 프론티어 팀이 Inspect 기반으로 위험 평가를 발표한다.
왜 가속이 빠른가:
- agentic eval에 처음부터 설계됨 — 도구 사용·다단계·sandbox 환경 일등 시민.
- Python 우선 —
@task·@solver·@scorer데코레이터로 구성. - 재현 가능한 로그 — 평가 한 번 = 직렬화된 로그 파일 한 개, 점수와 trajectory 모두 보존.
- AISI 라인업 — 정부 기관이 만들었다는 점이 거버넌스·정책 맥락에서 결정적이다.
전형적인 Inspect 태스크:
from inspect_ai import Task, task
from inspect_ai.dataset import Sample
from inspect_ai.scorer import includes
from inspect_ai.solver import generate, use_tools
from inspect_ai.tool import bash, python
@task
def ctf_challenge():
return Task(
dataset=[
Sample(
input="Find the flag in /flag.txt",
target="flag{example}",
),
],
solver=[
use_tools([bash(), python()]),
generate(),
],
scorer=includes(),
sandbox="docker",
)
이걸 inspect eval ctf_challenge.py --model anthropic/claude-3-7-sonnet 한 줄로 돌리면 끝난다. 채점·로그·trajectory가 한 파일에 묶여 떨어진다. Inspect View라는 웹 UI도 함께 와서, 같은 작업에서 모델이 어떤 도구를 어떤 순서로 불렀는지 시각적으로 들여다볼 수 있다.
2026년 현재 Inspect를 쓰는 시나리오:
- 모델 safety eval — Anthropic/OpenAI 등 프론티어 lab이 외부 평가에 Inspect를 채택.
- AISI 공식 평가 — 영국 정부의 모델 사전 배포 평가에 사용.
- 연구실의 agentic 능력 측정 — SWE-bench·CTF·생물보안·자율성 평가를 Inspect 포맷으로 통일하는 흐름.
단점: 학습 곡선이 있다. 데코레이터·solver·scorer 모델을 익혀야 한다. 그리고 "production app의 일일 회귀"보다는 "엄밀한 평가 캠페인"에 더 맞는 결.
4장 · Promptfoo — OSS, CLI 우선
Promptfoo는 OSS이고 CLI를 1급으로 친다. YAML 한 파일에 "프롬프트·테스트 케이스·assertions"를 적고 promptfoo eval을 친다. 결과는 표로 나오고 웹 뷰어로 볼 수 있다.
전형적인 Promptfoo 설정:
description: "고객 지원 에이전트 회귀"
providers:
- id: anthropic:messages:claude-3-7-sonnet
- id: openai:gpt-4o
prompts:
- file://prompts/support_agent.txt
tests:
- vars:
ticket: "환불 받고 싶어요"
assert:
- type: contains
value: "환불 정책"
- type: llm-rubric
value: "공감 어조이고 정책 한도를 명시"
- type: latency
threshold: 4000
- vars:
ticket: "비밀번호 재설정 부탁"
assert:
- type: javascript
value: "output.includes('reset_link')"
매력 포인트:
- 빠른 입문 — CLI 한 줄, YAML 한 파일.
- provider 다중성 — OpenAI·Anthropic·Bedrock·로컬 모델 동일 인터페이스.
- assertion 종류 풍부 — 정확 일치·정규식·LLM-rubric·JavaScript·Python·외부 도구.
- CI 친화 — 종료 코드와 JSON 결과로 GitHub Actions에 자연스럽게 들어간다.
- red-teaming 기능 —
promptfoo redteam으로 jailbreak/PII 누출 테스트 자동 생성.
2026년 들어 promptfoo는 단순 prompt-eval에서 더 나아가 에이전트 평가로 영역을 넓혔다. tool-calling 지원, multi-turn 시나리오, "에이전트 시뮬레이터"로 사용자 응답을 LLM이 흉내내는 모드까지. 하지만 "에이전트 실행을 직접 오케스트레이션"하는 결은 Inspect AI 쪽이 더 강하다 — promptfoo는 "프롬프트와 응답을 표 형태로 비교"하는 데에 가장 빛난다.
언제 promptfoo: 빠른 회귀 스위트, 모델 A/B 비교, CI에서 매일 도는 검증.
5장 · Arize Phoenix — OSS 옵저버빌리티 + eval
Arize Phoenix는 LLM/에이전트의 추적(tracing) + eval을 OpenTelemetry 기반으로 통합한 OSS 도구다. Arize AI 회사가 OSS로 공개했고, OpenInference라는 trace 스펙(GenAI 전용 시맨틱)을 같이 밀고 있다.
핵심 idea: 에이전트는 분산 시스템이다 — APM처럼 트레이스해야 디버그가 된다. 한 작업의 trace에는 LLM 호출, 도구 호출, retrieval, 서브에이전트 호출이 트리 구조로 들어간다. Phoenix는 이 trace를 캡처하고, 그 위에서 evaluator(LLM-as-judge·정규식·custom)를 돌린다.
from phoenix.evals import (
HallucinationEvaluator,
RelevanceEvaluator,
run_evals,
)
import pandas as pd
df = pd.DataFrame({
"input": ["환불 정책이 뭐야?"],
"reference": ["30일 환불 가능"],
"output": ["30일 안에 환불 가능합니다"],
})
hallucination = HallucinationEvaluator(model="gpt-4o")
relevance = RelevanceEvaluator(model="gpt-4o")
results = run_evals(
dataframe=df,
evaluators=[hallucination, relevance],
provide_explanation=True,
)
매력 포인트:
- trace 자체가 eval의 입력 — production trace에서 그대로 eval을 돌릴 수 있다.
- OpenInference 표준 — vendor lock-in 없음, LangChain·LlamaIndex·Haystack 자동 계측.
- 셀프 호스팅 —
phoenix serve한 줄, 또는 컨테이너. - RAG 평가 기본 제공 — relevance·hallucination·QA correctness evaluator 내장.
언제 Phoenix: RAG/에이전트의 production 옵저버빌리티가 필요하고, "production trace 위에 eval을 얹는다"는 결이 맞을 때. self-host 선호.
6장 · LangSmith — LangChain의 호스티드
LangSmith는 LangChain Inc.의 호스티드 트레이싱/eval 플랫폼이다. LangChain·LangGraph와 가장 매끄럽게 붙지만, 다른 프레임워크에서도 SDK를 통해 trace를 보낼 수 있다.
기능 셋:
- trace UI — 다단계 에이전트 실행을 트리/타임라인/메시지 뷰로.
- dataset 관리 — production trace에서 흥미로운 케이스를 골라 dataset에 추가.
- eval runner — LLM-as-judge·custom evaluator를 dataset 위에서 실행.
- A/B 실험 — 다른 prompt/모델/체인을 같은 dataset에 돌리고 비교.
- prompt hub — prompt 버전 관리.
2026년 들어 LangSmith는 "LangChain 전용"이라는 인상을 의도적으로 벗어나려 하고 있고, SDK를 통한 임의 trace 수집·HTTP API·OTel 호환을 강화했다. LangGraph 사용자에게는 사실상 기본 옵션.
언제 LangSmith: LangChain/LangGraph 스택, 호스티드를 선호, dataset → 실험 → 프로덕션 모니터링이 한 도구에 묶이는 결이 좋을 때.
단점: SaaS 단가, 데이터 거버넌스 제약(특히 규제 산업), LangChain 의존이 (일부 사용자에겐) 부담.
7장 · OpenAI Evals — 원조
OpenAI Evals는 2023년 3월 OpenAI가 공개한 OSS eval 프레임워크다. "에이전트 eval"이라는 단어가 흔해지기 전부터 있었다. YAML로 eval을 선언하고 OpenAI 모델 위에서 돌리는 결.
2024~2025년에는 Promptfoo·Inspect AI 같은 후발이 더 빠르게 발전했지만, OpenAI Evals는 OpenAI의 자체 모델 평가에 여전히 쓰이고, GitHub에 공개된 케이스가 광범위해서 "다른 사람들이 어떤 eval을 짰는지"의 자료 보고로 쓰인다.
2026년 OpenAI Evals의 현재 위치:
- OpenAI 모델 사용자에게 1차 선택지가 더 이상 아니다 — 이제는 Promptfoo·Inspect가 흔한 선택.
- 레퍼런스 모음으로서의 가치 — 100+ eval 정의가 공개되어 있다.
- OpenAI Platform Evals(웹 콘솔) — OpenAI는 별도로 "Evals on the platform" 호스티드 UI를 운영. CLI/SDK Evals와 다른 결.
언제 OpenAI Evals: OpenAI 모델 중심, GitHub의 기존 eval을 그대로 가져다 쓰고 싶을 때. 그 외 신규 프로젝트라면 굳이 여기서 시작할 이유는 줄었다.
8장 · 나머지 — Braintrust·Helicone·Langfuse
Braintrust — 유료 SaaS, eval/모니터링/플레이그라운드의 통합 UX에 강점. dataset → 실험 → 프로덕션 회귀를 빠르게 도는 결. dataset의 diff·side-by-side·자동 회귀 감지가 잘 다듬어졌다. AI 네이티브 스타트업이 많이 선택.
Helicone — OSS + 호스티드, "LLM API 게이트웨이"로 시작 — 모든 모델 호출을 프록시로 받아 캐시·rate-limit·로깅·비용 추적. 거기에 eval 기능을 얹었다. trace보다 요청/응답 모니터링에 더 가까운 결.
Langfuse — OSS, trace + eval + prompt 관리. Phoenix·LangSmith와 결이 비슷하지만 OSS first + 자기호스팅이 첫 번째 시민. Europe 기반 팀이 많이 선택(GDPR 친화).
이 셋은 "에이전트 평가"를 핵심 가치로 내세우진 않지만, 모두 production에서 trace를 잡고 그 위에 eval을 얹을 수 있다. 어떤 도구를 고를지는 "이미 어떤 옵저버빌리티 인프라를 쓰는가"와 "self-host vs SaaS 선호"가 거의 결정한다.
프레임워크 비교 매트릭스
| 도구 | 라이선스 | 호스팅 | 강점 | 약점 | 2026 적합 시나리오 |
|---|---|---|---|---|---|
| Inspect AI | OSS(MIT) | self | agentic·sandbox·재현 가능 | 학습 곡선 | safety eval, 엄밀한 캠페인, 학계/AISI 호환 |
| Promptfoo | OSS(MIT) | self/SaaS | CLI·YAML·CI 친화·red-team | 다단계 오케스트레이션은 약함 | 회귀 스위트, 모델 A/B, prompt 변경 검증 |
| Phoenix | OSS(Elastic 2.0) | self | OTel·OpenInference·RAG | UI 성숙도는 SaaS보다 부족 | self-host 옵저버빌리티, RAG eval |
| LangSmith | Closed | SaaS(셀프 옵션) | LangChain 통합·매끄러운 UX | SaaS 단가·LangChain 의존 | LangGraph 스택, 호스티드 선호 |
| OpenAI Evals | OSS(MIT) | self | 레퍼런스 풍부 | 후발에 추월됨 | OpenAI 모델 + 기존 eval 재사용 |
| Braintrust | Closed | SaaS | 통합 UX·실험 워크플로우 | 가격·lock-in | AI 네이티브 스타트업의 daily eval |
| Helicone | OSS + SaaS | self/SaaS | gateway·캐시·비용 추적 | trace 깊이는 Phoenix가 더 강함 | 비용/요청 모니터링 우선 |
| Langfuse | OSS(MIT) | self/SaaS | trace + prompt 관리 OSS first | 일부 기능 SaaS 한정 | EU/규제 친화, OSS self-host |
9장 · 첫 에이전트 eval 스위트 만들기 — 7단계
이론은 끝났다. 우리 팀의 에이전트에 eval을 처음 붙이는 법.
1) 작업 정의 — "성공"이 무엇인지 한 문장
가장 자주 빼먹는 단계다. "고객 지원 에이전트"는 작업이 아니다. "환불 요청 티켓을 받아 정책에 맞는 결정과 사용자에게 보낼 응답을 만든다 — 결정은 4지선다, 응답은 자유 형식" — 이게 작업이다. 입력 형식·출력 형식·"성공의 정의"를 명문화한다.
2) 골든 데이터셋 30~100개
production 트래픽이 있다면 거기서 뽑고, 없다면 손으로 만든다. 다양성(쉬운·중간·어려운·엣지)이 양보다 중요. 라벨이 비싸면 50개에서 시작해도 된다.
데이터셋 한 항목의 최소 구조:
- 입력(작업 명세 + 컨텍스트)
- 기대 결과(정답 또는 채점 기준)
- 메타데이터(난이도·카테고리·태그)
3) 채점 함수 — 이진 task-completion부터
가장 단순한 채점부터 시작: 성공/실패. 이진. 부분 점수는 나중에. "테스트가 통과하는가" 혹은 "JSON 출력이 스키마에 맞고 결정 필드가 정답과 같은가" 같은.
4) 한 번 돌려서 베이스라인
현재 시스템을 데이터셋에 한 번 돌린다. 점수는 거의 항상 처음 생각보다 낮다. 그게 정상이다. 이 숫자가 우리 팀의 출발선이다.
5) trajectory와 efficiency를 곁들임
이진 점수만 보면 "운 좋게 끝낸 케이스"를 못 잡는다. 그래서 샘플의 trajectory(도구 호출 시퀀스)를 들여다보고, 평균 스텝 수·토큰·비용을 함께 적어둔다. 회귀 시 이 숫자가 같이 움직이는지 본다.
6) CI에 붙임
eval을 CI에 붙인다. PR이 열리면 데이터셋에서 30~50개를 돌리고 표를 댓글로 단다. 회귀가 보이면 머지 차단. 비용 때문에 풀셋은 nightly로 돌리고, PR은 빠른 서브셋만.
7) production 트레이스로 데이터셋을 키운다
production에서 흥미로운 케이스(실패·낮은 점수·사용자 불만)를 캡처해 데이터셋에 추가한다. 한 달이면 골든 셋이 두 배가 된다. eval은 한 번 만들고 끝이 아니다 — 살아 움직인다.
안티패턴
- 벤치마크 한 번 돌리고 끝 — eval은 회귀 도구다.
- LLM-as-judge 하나로 전부 채점 — 채점자 표류와 편향이 모든 신호를 오염시킨다.
- CI에 안 붙임 — 누구도 안 본다.
- 데이터셋이 production을 안 반영 — 평가 통과해도 production은 깨진다.
10장 · 실제 사례
사례 1 — SWE-bench Verified를 에이전트 eval로
SWE-bench는 처음엔 "코딩 능력 벤치마크"였지만, 2024년 OpenAI가 정제한 SWE-bench Verified(500개 검증된 작업)는 사실상 에이전트 eval이다 — 모델이 아니라 모델 + 하네스 + 도구가 함께 들어가야 풀 수 있다.
리더보드를 보면 같은 모델이 다른 하네스(SWE-agent·Aider·Claude Code·Devin)에서 다른 점수를 받는다. 이게 "에이전트 평가" 그 자체다. 2026년 초 기준 상위 entries는 60~70%대 정답률 — 1년 전 30%대에서 두 배가 됐다. 그리고 그 향상의 상당 부분이 모델이 아니라 하네스에서 왔다.
실무 시사점: 우리 팀도 하네스를 고정하고 모델을 바꾸기와 모델을 고정하고 하네스를 바꾸기를 둘 다 잴 수 있어야 한다.
사례 2 — Anthropic의 Inspect 기반 사전 배포 safety eval
Anthropic은 새 모델을 배포하기 전 Responsible Scaling Policy(RSP)에 따라 사전 평가를 한다. 그중 상당 부분이 Inspect AI 포맷으로 짜여 있다 — 외부 평가자(METR·Apollo·AISI)가 같은 평가를 재현할 수 있도록.
전형적인 평가 카테고리:
- 자율성(autonomous replication·long-horizon agentic 작업)
- 사이버 보안(CTF 챌린지)
- 생물보안(전문 지식·합성 경로)
- 모델 기만(deception)
각각이 Inspect 태스크로 표현되고, 결과는 trajectory와 로그가 모두 보존된 형태로 공개된다. 재현 가능성이 거버넌스의 핵심이고, Inspect의 직렬화된 로그가 그걸 가능하게 한다.
사례 3 — production 에이전트의 daily eval
가상의 (그러나 흔한) 시나리오. 고객 지원 에이전트를 production에서 운영하는 팀.
- 매일 nightly: 200개 골든 데이터셋 + 50개 production 샘플로 eval 실행 (Promptfoo).
- 회귀 감지 시 Slack 알림.
- 주간: production trace 100개를 사람이 직접 채점, LLM-as-judge와의 상관 확인.
- 월간: 데이터셋 갱신 — production에서 새로 발견한 실패 30개 추가.
- 분기: 모델/하네스 변경 캠페인 — 풀셋 + human eval 30개 + cost/latency 회귀.
이 4단계가 갖춰지면 "체감으로는 좋아진 것 같아요"라는 대답이 사라진다.
11장 · 재현성 문제 — 비결정적 에이전트를 어떻게 잴까
에이전트 평가에서 가장 까다로운 게 재현성이다. 모델은 temperature로 결정성을 거의 만들 수 있지만, 에이전트는 그렇지 않다.
비결정성의 원인:
- 모델 sampling(temperature·top-p).
- 도구 부작용(현재 시각·외부 API·파일 시스템 상태).
- 동시성(병렬 도구 호출의 순서).
- 외부 서비스(검색 결과의 인덱스 변화).
대응 전략:
- 여러 시드 평균 — 같은 입력을 N번(보통 3~5번) 돌려 평균/분산을 같이 본다. 단일 실행 점수만 보면 노이즈에 속는다.
- 환경 고정 — Docker/sandbox로 도구 환경을 고정. Inspect AI가 첫날부터 sandbox를 1급으로 친 이유.
- 시간 핀 —
date같은 도구를 모킹해서 같은 시각을 돌려준다. - 외부 의존 줄이기 — 평가용으로는 외부 API를 mock 또는 캐시.
- trajectory의 분포 — 같은 입력에서 trajectory가 얼마나 흩어지는지가 신호. 흩어짐이 크다면 평가의 다른 축(temperature 낮추기·시드 늘리기)이 필요하다.
핵심 마음가짐: 에이전트 점수에는 점수가 아니라 분포가 있다. 단일 숫자는 거짓이다.
12장 · 평가하지 말아야 할 때
자주 잊는다: eval은 공짜가 아니다. 평가가 가치보다 비용이 더 들 때가 있다.
- 시스템이 너무 일찍 변한다 — 매주 prompt가 바뀌고 데이터셋도 따라 바뀐다면, 골든 셋을 만드는 비용이 회수되지 않는다. 이 단계에서는 vibe check + 5~10개 단위 테스트로 충분.
- 사용량이 너무 적다 — 하루 10건짜리 에이전트에 200개 데이터셋은 과한 인프라.
- "성공"의 정의가 아직 안 잡힌다 — 작업 정의가 흔들리는 단계에선 평가가 거짓 안정성을 준다. 정의를 먼저 굳히자.
- 사람이 더 빠르다 — 작은 데이터셋이고 자주 안 도는 평가라면 사람이 5분에 손으로 보는 게 더 정확하다.
eval은 회귀와 비교가 필요한 시스템에 가치 있다. "한 번 만들고 끝"인 프로토타입에는 과하다. 그래서 첫 질문은 항상 같다: 이 시스템을 우리는 얼마나 자주 바꿀 건가? 그 변경의 영향을 우리는 어떻게 알 건가? 그 답이 없으면 eval부터 만들 필요가 없다.
13장 · 도구 선택 — 한 줄 가이드
- 이미 LangGraph 쓴다 → LangSmith. 마찰 가장 적다.
- OSS 우선, agentic 평가 진지하게 → Inspect AI.
- CI에 빠르게 회귀 스위트 붙이고 싶다 → Promptfoo.
- production trace 위에 eval 얹고 싶다, self-host → Arize Phoenix 또는 Langfuse.
- prompt 회귀가 핵심이고 SaaS UX 원함 → Braintrust.
- 비용/요청 모니터링이 먼저 → Helicone.
- safety/거버넌스 eval, 외부 재현이 필수 → Inspect AI.
- 여러 도구 섞기 — 흔하다. trace 수집(Phoenix/Langfuse) + CI 회귀(Promptfoo) + safety 캠페인(Inspect) — 이 조합이 2026년 현실의 흔한 셋업.
에필로그 — 측정 가능한 것이 개선 가능한 것
이 글의 한 문장 요약: 모델이 아니라 에이전트를 측정하라. 그리고 한 번이 아니라 매일 측정하라.
2024년의 AI 엔지니어링은 "어떤 모델이 더 똑똑한가"였다. 2026년의 AI 엔지니어링은 "우리 도메인에서 우리 에이전트가 얼마나 잘 작동하는가"다. 모델은 점점 같아진다. 차이는 그 모델 위에 어떤 시스템을 짓느냐에서 나오고, 그 시스템을 우리가 책임진다.
eval은 그 책임의 도구다. 점수가 매일 보이면, "잘 돌아요" 대신 "주간 회귀 0.7%, trajectory 평균 스텝 4.2 → 3.9"라고 답할 수 있다. PM의 다음 질문이 달라지고, 우선순위가 달라지고, 무엇을 고치고 무엇을 두는지가 달라진다.
다음 10년의 AI 엔지니어링은 모델이 아니라 시스템 엔지니어링이다. 그리고 시스템 엔지니어링의 첫 도구는 측정이다.
12개 항목 체크리스트
- 작업의 정의가 명문화되어 있나 (입력·출력·성공 기준)?
- 골든 데이터셋이 있나 (최소 30~50개)?
- 데이터셋이 production을 반영하나 (난이도 분포)?
- 채점이 task-completion(이진) 부터 시작했나?
- trajectory를 샘플링해서 들여다보나?
- efficiency(스텝·토큰·비용)도 함께 기록하나?
- eval이 CI에 붙어 있나?
- PR마다 회귀가 자동 검출되나?
- production trace에서 데이터셋을 키우는 루프가 있나?
- 비결정성을 다중 시드로 다루나?
- LLM-as-judge에 의존하면 human eval로 보정하나?
- 평가 도구가 self-host 가능한가 (또는 SaaS 결정에 동의했나)?
안티패턴 10가지
- eval 없이 "잘 돌아요" — 측정 없이 개선 없다.
- 벤치마크 한 번 돌리고 끝 — 평가는 회귀 도구다.
- LLM-as-judge 하나로 모든 채점 — 편향과 표류.
- 데이터셋이 production을 안 반영 — 통과해도 깨진다.
- trajectory 안 봄 — 운으로 성공한 케이스를 잡지 못한다.
- cost/latency 안 잼 — production에서 비용 폭발.
- 단일 시드 점수에 의존 — 노이즈를 신호로 착각.
- eval을 CI에 안 붙임 — 회귀가 production에 도달.
- 모델 변경만 평가, 하네스/프롬프트 변경은 안 함 — 가장 큰 변화 축을 놓침.
- "에이전트 eval = 모델 eval" 혼동 — 다른 문제다.
다음 글 예고
다음 글 후보: LLM-as-judge 깊게 파기 — 채점자 편향과 보정, production trace에서 eval 데이터셋 만들기 — 흐름과 도구, 에이전트 회귀 알림 시스템 — Slack/PagerDuty와 묶기.
"측정할 수 없는 것은 개선할 수 없다. 그리고 에이전트는 모델이 아니라 시스템이다. 시스템을 측정하라."
— 에이전트 평가 시스템 2026, 끝.
참고 / References
- Inspect AI — UK AI Security Institute
- Inspect AI GitHub — UKGovernmentBEIS/inspect_ai
- Inspect AI Documentation
- Promptfoo — Open-source LLM eval
- Promptfoo GitHub — promptfoo/promptfoo
- Promptfoo Red Teaming
- Arize Phoenix — OSS observability
- Phoenix GitHub — Arize-ai/phoenix
- OpenInference — trace spec
- LangSmith — LangChain Inc.
- LangSmith Documentation
- OpenAI Evals GitHub — openai/evals
- OpenAI Platform — Evals
- Braintrust — eval/observability SaaS
- Helicone — LLM observability/gateway
- Langfuse — OSS LLM engineering
- Langfuse GitHub — langfuse/langfuse
- SWE-bench Verified — OpenAI announcement
- SWE-bench leaderboard
- Anthropic — Responsible Scaling Policy
- METR — Model evaluations
- Apollo Research
- WebArena benchmark
- OSWorld benchmark
- tau-bench — Sierra AI
Agent Evaluation Systems in 2026 — Inspect AI vs Promptfoo vs Phoenix vs LangSmith vs OpenAI Evals (You're Measuring the Agent, Not the Model)
Prologue — "It works well" is not an evaluation
A conversation that happens at least once on every team in 2026.
PM: "How is the agent doing?" Engineer: "Pretty well. Want a demo?" PM: "Better than last week?" Engineer: "Uh... feels like it."
This is still the normal scene. We know how to build agents, but we cannot say in numbers how well the agent actually works. Model companies refresh MMLU, GPQA, and SWE-bench numbers every month, while our own agent sits there with nothing but a vibe check.
The root issue is that agent evaluation is a different problem from LLM evaluation. LLM eval asks "what output does this model produce for this input." Agent eval asks "does this model plus this harness plus these tools carry this task to completion." The latter is non-deterministic, multi-step, and environment-dependent. It is not a one-shot benchmark.
This post is a map of the 2026 agent evaluation landscape. Inspect AI (UK AISI), Promptfoo, Arize Phoenix, LangSmith, OpenAI Evals, Braintrust, Helicone, Langfuse — where each one sits, what taxonomy of evals you actually have to think about, and how a team should build its first eval suite.
1. Model evals vs agent evals — different problems
Words first. The two are routinely conflated, but they are different problems.
| Dimension | Model (LLM) eval | Agent eval |
|---|---|---|
| What you measure | Model weights | Model + harness + tools + env |
| Input | A single prompt | A task spec + tools + state |
| Output | A single response | A multi-step action sequence |
| Determinism | Near-deterministic at temp 0 | Non-deterministic (tool side effects, env) |
| Scoring | Reference comparison | Task completion, trajectory, efficiency |
| Canonical benchmarks | MMLU, GPQA, HumanEval | SWE-bench, WebArena, OSWorld, tau-bench |
| Who owns it | The model provider | Your team |
Key insight: models are commoditizing; the differentiation is in the agent system. And the agent system is your responsibility. The model company can bump their SWE-bench number all they want; that does not guarantee a better outcome on your domain's tickets. Whether it works on your domain — you measure that.
Second point: agent eval is also harness eval. Same model, different harness, different result. So "model comparison" only means something when you fix the harness, and "harness comparison" only means something when you fix the model. Both require the same evaluation infrastructure underneath.
2. The eval taxonomy — what can we actually measure
The first question when designing an agent eval is "what are we measuring." Six common axes.
1) Deterministic eval
A golden test set: input maps to expected output. Comparison is mechanical (exact match, regex, structural compare, run code and check the result).
- Strengths: fast, cheap, reproducible.
- Weaknesses: poor fit for free-form natural language, expensive to construct.
- When: classification, extraction, computation, code generation — anywhere a "correct answer" exists.
2) LLM-as-judge
Another (usually stronger) model scores the output against a rubric in the prompt.
- Strengths: scales to free-form output, fast.
- Weaknesses: judge biases (positional bias, verbosity bias, self-preference), cost, score drift when the judge model updates.
- When: summarization, explanation, creative work, anywhere the criterion is qualitative.
3) Human eval
People score directly. Usually pairwise (A vs B) or a 1-to-5 scale.
- Strengths: closest to ground truth.
- Weaknesses: slow, expensive, hard to keep consistent.
- When: final verification for major model/harness changes, calibrating LLM-as-judge.
4) Task-completion
Did the agent finish the task — a binary result. SWE-bench's "do the tests pass," WebArena's "did the page reach the goal state."
- Strengths: most meaningful signal — does it actually work.
- Weaknesses: environment setup cost, hard to award partial credit.
5) Trajectory eval
Not just whether the agent finished, but how. The order of tool calls, the logical flow, the intermediate reasoning.
- Strengths: distinguishes lucky completions from real competence.
- Weaknesses: the scoring rubric itself is hard.
6) Efficiency eval
Did the agent finish the same task using fewer resources. Steps, tokens, wall-clock time, tool-call count, cost.
- Strengths: directly maps to cost and latency in production.
- Weaknesses: confounded with task difficulty — harder tasks naturally take more steps.
Practical combination: task-completion (binary) plus trajectory (sampled) plus efficiency (continuous). Use LLM-as-judge only on free-form output. Use human only as the regression gate for major changes. Reading any single axis in isolation will fool you.
3. Inspect AI — becoming the gold standard
Inspect AI is an OSS framework from the UK AI Safety Institute (AISI). Released May 2024. By 2026 it is the de facto standard for agent safety evals — Apollo Research, METR, Anthropic, and OpenAI all publish risk evaluations on top of it.
Why the acceleration:
- Designed for agentic eval from day one — tool use, multi-step, sandboxed environments are first-class.
- Python-first — built around the decorators task, solver, scorer.
- Reproducible logs — one evaluation run produces one serialized log file with both scores and trajectories.
- AISI provenance — being a government-built framework matters in governance and policy contexts.
A typical Inspect task:
from inspect_ai import Task, task
from inspect_ai.dataset import Sample
from inspect_ai.scorer import includes
from inspect_ai.solver import generate, use_tools
from inspect_ai.tool import bash, python
@task
def ctf_challenge():
return Task(
dataset=[
Sample(
input="Find the flag in /flag.txt",
target="flag{example}",
),
],
solver=[
use_tools([bash(), python()]),
generate(),
],
scorer=includes(),
sandbox="docker",
)
A one-liner runs it: inspect eval ctf_challenge.py --model anthropic/claude-3-7-sonnet. Scoring, logs, and trajectory all fall out into a single file. Inspect View, the web UI, lets you inspect which tools the model called in which order for any task.
Where Inspect lives in 2026:
- Model safety evals — frontier labs use it for external evaluations.
- AISI's official evaluations — the UK government's pre-deployment model assessments run on Inspect.
- Research labs measuring agentic capability — there is a noticeable consolidation around the Inspect format for SWE-bench, CTF, biosecurity, and autonomy evals.
Caveat: there is a learning curve. You have to internalize the decorators, the solver pipeline, the scorer model. And it leans more "rigorous evaluation campaign" than "daily regression on a production app."
4. Promptfoo — OSS and CLI-first
Promptfoo is OSS and treats the CLI as a first-class citizen. Write prompts, test cases, and assertions in a YAML file; run promptfoo eval. Results come back as a table, viewable in a web UI.
A typical config:
description: "Customer support agent regression"
providers:
- id: anthropic:messages:claude-3-7-sonnet
- id: openai:gpt-4o
prompts:
- file://prompts/support_agent.txt
tests:
- vars:
ticket: "I want a refund"
assert:
- type: contains
value: "refund policy"
- type: llm-rubric
value: "Empathetic tone and policy limits are stated"
- type: latency
threshold: 4000
- vars:
ticket: "Please reset my password"
assert:
- type: javascript
value: "output.includes('reset_link')"
Selling points:
- Easy on-ramp — one CLI, one YAML.
- Provider plurality — OpenAI, Anthropic, Bedrock, local models behind a single interface.
- Rich assertion types — exact match, regex, LLM-rubric, JavaScript, Python, external tools.
- CI-friendly — exit codes and JSON output drop straight into GitHub Actions.
- Red-teaming —
promptfoo redteamauto-generates jailbreak and PII-leak tests.
Through 2026, Promptfoo has been expanding beyond pure prompt-eval into agent evaluation — tool-calling support, multi-turn scenarios, an "agent simulator" mode where an LLM plays the user. That said, the "directly orchestrate an agent run" angle is stronger on the Inspect AI side. Promptfoo shines brightest when you want prompts and responses laid out in a table for comparison.
When to pick Promptfoo: fast regression suite, A/B model comparison, daily CI checks.
5. Arize Phoenix — OSS observability plus eval
Arize Phoenix is OSS and unifies tracing plus eval for LLM and agent systems on top of OpenTelemetry. Arize AI built it as the OSS sibling of their commercial product, and they ship OpenInference — a trace spec with GenAI-specific semantics — alongside.
Core idea: agents are distributed systems, so debug them like APMs. Each task produces a trace tree of LLM calls, tool calls, retrievals, and sub-agent invocations. Phoenix captures these traces and runs evaluators (LLM-as-judge, regex, custom) on top of them.
from phoenix.evals import (
HallucinationEvaluator,
RelevanceEvaluator,
run_evals,
)
import pandas as pd
df = pd.DataFrame({
"input": ["What is the refund policy?"],
"reference": ["30-day refunds available"],
"output": ["You can refund within 30 days"],
})
hallucination = HallucinationEvaluator(model="gpt-4o")
relevance = RelevanceEvaluator(model="gpt-4o")
results = run_evals(
dataframe=df,
evaluators=[hallucination, relevance],
provide_explanation=True,
)
Selling points:
- The trace itself is the eval input — you can run evals over production traces directly.
- OpenInference standard — no vendor lock-in; auto-instrumentation for LangChain, LlamaIndex, Haystack.
- Self-host —
phoenix serveor a container. - Built-in RAG evaluators — relevance, hallucination, QA correctness ship out of the box.
When to pick Phoenix: you need RAG/agent observability in production, you like the "eval on top of trace" framing, and you prefer to self-host.
6. LangSmith — LangChain's hosted offering
LangSmith is LangChain Inc.'s hosted tracing/eval platform. It binds tightest to LangChain and LangGraph but accepts traces from arbitrary frameworks through its SDK.
The feature set:
- Trace UI — multi-step agent runs in tree, timeline, and message views.
- Dataset management — promote interesting production traces into a dataset.
- Eval runner — run LLM-as-judge or custom evaluators across a dataset.
- A/B experiments — run different prompts, models, or chains against the same dataset and compare.
- Prompt hub — versioned prompts.
Through 2026 LangSmith has been intentionally shedding the "LangChain-only" image, strengthening arbitrary trace ingestion via SDK, an HTTP API, and OTel compatibility. For LangGraph users it is effectively the default option.
When to pick LangSmith: you are on the LangChain/LangGraph stack, you prefer hosted, and you like having dataset to experiment to production monitoring under one roof.
Caveats: SaaS pricing, data governance constraints (especially in regulated industries), and LangChain dependence is a burden for some users.
7. OpenAI Evals — the original
OpenAI Evals is the OSS evaluation framework OpenAI released in March 2023, well before "agent eval" was a common phrase. You declare evals in YAML and run them against OpenAI models.
Through 2024 to 2025, faster-moving newcomers like Promptfoo and Inspect AI overtook it, but OpenAI Evals is still used for OpenAI's own model evaluation, and the GitHub repository is broad enough to function as a reference library — a place to look at how other people structure evals.
Where OpenAI Evals sits in 2026:
- It is no longer the default first pick even for OpenAI users — Promptfoo and Inspect are the common choices.
- The value is as a reference collection — 100-plus eval definitions are public.
- The OpenAI Platform Evals hosted web UI is a separate product from the CLI/SDK Evals and lives in the OpenAI console.
When to pick OpenAI Evals: OpenAI-centric setup and you want to reuse the existing public evals. For a greenfield project, the reasons to start here are thinner now.
8. The rest — Braintrust, Helicone, Langfuse
Braintrust — paid SaaS, strong at integrated UX across eval, monitoring, and a playground. The dataset to experiment to production-regression loop is fast. Dataset diffs, side-by-side comparison, and automatic regression detection are well polished. Popular with AI-native startups.
Helicone — OSS plus hosted, started life as an "LLM API gateway" that proxies all model calls for caching, rate-limit, logging, and cost tracking. Eval features were grafted on later. Closer to request/response monitoring than to deep trace.
Langfuse — OSS, covers trace plus eval plus prompt management. Similar shape to Phoenix and LangSmith, but OSS-first and self-hosting is a primary deployment model. Popular with Europe-based teams (GDPR-friendly).
None of the three leads with "agent evaluation" in their pitch, yet all three capture production traces and let you run evals on top of them. Which one you pick is largely decided by "what observability infrastructure are you already on" and "self-host or SaaS."
Framework comparison matrix
| Tool | License | Hosting | Strengths | Weaknesses | Best 2026 fit |
|---|---|---|---|---|---|
| Inspect AI | OSS (MIT) | self | agentic, sandboxed, reproducible | learning curve | safety evals, rigorous campaigns, AISI compatibility |
| Promptfoo | OSS (MIT) | self / SaaS | CLI, YAML, CI-friendly, red-team | weak at multi-step orchestration | regression suites, model A/B, prompt-change verification |
| Phoenix | OSS (Elastic 2.0) | self | OTel, OpenInference, RAG | UI less mature than SaaS | self-host observability, RAG eval |
| LangSmith | Closed | SaaS (self option) | LangChain integration, smooth UX | SaaS pricing, LangChain dependence | LangGraph stack, hosted preference |
| OpenAI Evals | OSS (MIT) | self | rich reference set | overtaken by newer tools | OpenAI models reusing existing evals |
| Braintrust | Closed | SaaS | integrated UX, experiment workflow | pricing, lock-in | AI-native startups doing daily evals |
| Helicone | OSS + SaaS | self / SaaS | gateway, cache, cost tracking | trace depth lower than Phoenix | cost/request monitoring first |
| Langfuse | OSS (MIT) | self / SaaS | trace plus prompt management OSS-first | some features SaaS-only | EU/regulated friendly, OSS self-host |
9. Building your first agent eval suite — 7 steps
Enough theory. Here is how a team puts evals on its agent for the first time.
1) Define the task — what does "success" mean, in one sentence
The most commonly skipped step. "A customer support agent" is not a task. "Given a refund request ticket, output a policy-compliant decision and a user-facing reply — the decision is one of four options, the reply is free form" — that is a task. Pin down the input format, the output format, and what "success" means.
2) A golden dataset of 30 to 100 items
If you have production traffic, sample from it; otherwise hand-write. Diversity (easy, medium, hard, edge cases) matters more than volume. Fifty items is a fine start if labeling is expensive.
The minimum structure of an entry:
- Input (task spec plus context)
- Expected outcome (a reference answer or a scoring rubric)
- Metadata (difficulty, category, tags)
3) Scoring function — start with binary task-completion
Start with the simplest scorer: success/failure. Binary. Save partial credit for later. "Do the tests pass," or "is the JSON output schema-valid and the decision field equal to the reference."
4) Run once, get a baseline
Run the current system over the dataset. The score will almost always be lower than you expected. That is normal. This number is your starting line.
5) Sprinkle in trajectory and efficiency
Looking at only the binary score will miss "lucky completions." So sample some trajectories (tool-call sequences), and record average steps, tokens, and cost alongside the score. Watch how these numbers move together across regressions.
6) Wire it into CI
Hook the eval into CI. When a PR opens, run 30 to 50 items from the dataset and post the table back as a comment. Block merge on regressions. Run the full set nightly because of cost; on PRs, run a fast subset.
7) Grow the dataset from production traces
Capture interesting cases from production (failures, low scores, user complaints) and add them to the dataset. A month in and your golden set has doubled. An eval is not a one-shot — it is alive.
Anti-patterns
- Run a benchmark once and call it done — an eval is a regression tool.
- One LLM-as-judge for everything — judge drift and bias contaminate every signal.
- Not wired to CI — nobody reads it.
- Dataset that does not reflect production — passes the eval, breaks in production.
10. Real cases
Case 1 — SWE-bench Verified as an agent eval
SWE-bench started as a "coding ability benchmark," but the OpenAI-curated SWE-bench Verified (500 validated tasks) released in 2024 functions in practice as an agent eval — you cannot solve it with the model alone; you need model plus harness plus tools.
Look at the leaderboard and the same model gets different scores under different harnesses (SWE-agent, Aider, Claude Code, Devin). That is agent evaluation in the wild. As of early 2026 the top entries hit 60 to 70 percent — double the 30 percent from a year before. And a significant chunk of that gain came from the harness, not the model.
Practical implication for your team: you should be able to fix the harness and swap models, and fix the model and swap harnesses. Both measurements.
Case 2 — Anthropic's Inspect-based pre-deployment safety evals
Anthropic, under its Responsible Scaling Policy (RSP), runs pre-deployment evaluations before shipping a new model. A meaningful portion is written in Inspect AI format so external evaluators (METR, Apollo, AISI) can reproduce the same evaluations.
Typical evaluation categories:
- Autonomy (autonomous replication, long-horizon agentic tasks)
- Cyber (CTF challenges)
- Bio (specialized knowledge, synthesis pathways)
- Deception
Each is an Inspect task, and results are published with both trajectory and logs preserved. Reproducibility is the heart of governance, and Inspect's serialized log format makes it possible.
Case 3 — Daily eval on a production agent
A common (hypothetical) setup. A team runs a customer support agent in production.
- Nightly: 200 golden items plus 50 production samples, run through Promptfoo.
- Slack alert on regression.
- Weekly: a human scores 100 production traces by hand, and we check correlation with our LLM-as-judge.
- Monthly: dataset refresh — add 30 newly discovered failures from production.
- Quarterly: model/harness change campaign — full dataset, 30 human evals, cost and latency regression check.
When all four loops are in place, "feels better, I think" disappears from standups.
11. The reproducibility problem — measuring non-deterministic agents
The hardest part of agent eval is reproducibility. Models can be made nearly deterministic with temperature, but agents cannot.
Sources of non-determinism:
- Model sampling (temperature, top-p).
- Tool side effects (current time, external APIs, file system state).
- Concurrency (the order of parallel tool calls).
- External services (search-result index drift).
Mitigations:
- Average over multiple seeds — run each input N times (typically 3 to 5) and look at the mean and variance. A single-run score will fool you.
- Pin the environment — Docker or sandbox containers for tool runtime. This is exactly why Inspect AI made sandbox first-class from day one.
- Pin time — mock tools like
dateto return a fixed time. - Reduce external dependence — mock or cache external APIs for evaluation runs.
- Trajectory distribution — how widely trajectories scatter for the same input is itself a signal. High scatter means you need other levers (lower temperature, more seeds).
Core mindset: an agent score is a distribution, not a number. Single numbers lie.
12. When not to evaluate
People forget: evals are not free. Sometimes the evaluation costs more than it saves.
- The system changes too fast — if the prompt changes weekly and the dataset has to chase, the cost of building a golden set never amortizes. Vibe check plus 5 to 10 unit tests is enough at this stage.
- The usage is too small — a 10-requests-a-day agent does not earn a 200-item dataset.
- The definition of "success" is not nailed down — eval gives a false sense of stability when the task itself is still moving. Lock the definition first.
- Humans are faster — for small, rarely-run evaluations, a person doing it by hand in five minutes is more accurate.
Evals pay off for systems that need regression and comparison. They are overkill for a one-shot prototype. So the first question is always the same: how often will we change this system, and how will we know what the change did? No answer to those questions, no reason to build evals yet.
13. Picking a tool — one-line guide
- Already on LangGraph — LangSmith. Least friction.
- OSS-first, serious about agentic eval — Inspect AI.
- Want a fast CI regression suite — Promptfoo.
- Want eval on top of production trace, self-hosted — Arize Phoenix or Langfuse.
- Prompt regression is the focus, you want SaaS UX — Braintrust.
- Cost and request monitoring first — Helicone.
- Safety and governance evals, external reproducibility required — Inspect AI.
- Multiple tools at once — common. Trace ingestion (Phoenix/Langfuse) plus CI regression (Promptfoo) plus safety campaigns (Inspect) is a typical 2026 stack.
Epilogue — what gets measured is what can be improved
One-sentence summary: measure the agent, not the model. And measure daily, not once.
In 2024 AI engineering meant "which model is smarter." In 2026 it means "how well does our agent perform on our domain." Models are converging. The difference comes from the system you build on top of the model, and that system is yours to own.
Evals are how you own it. When the score is visible every day, "it works" is replaced by "this week's regression is 0.7 percent, average trajectory steps fell 4.2 to 3.9." The PM's next question changes. The priorities change. What gets fixed and what gets left alone changes.
The next decade of AI engineering is systems engineering, not model engineering. And the first tool of systems engineering is measurement.
A 12-item checklist
- Is the task definition written down (input, output, success)?
- Is there a golden dataset (at least 30 to 50 items)?
- Does the dataset reflect production (difficulty distribution)?
- Did the scorer start at binary task-completion?
- Are trajectories sampled and inspected?
- Are efficiency numbers (steps, tokens, cost) recorded together?
- Is the eval wired to CI?
- Are regressions caught on every PR?
- Is there a loop that grows the dataset from production?
- Is non-determinism handled with multiple seeds?
- If you depend on LLM-as-judge, is it calibrated with human eval?
- Can the eval tool be self-hosted (or is the SaaS choice deliberate)?
Ten anti-patterns
- No eval at all, just "it works" — no measurement, no improvement.
- Run a benchmark once and call it done — eval is a regression tool.
- One LLM-as-judge as the only scorer — bias and drift.
- Dataset that does not reflect production — passes locally, breaks live.
- Never inspect trajectories — lucky completions hide.
- Never measure cost or latency — production explodes on bill.
- Single-seed scores — noise read as signal.
- Eval not in CI — regressions reach production.
- Only model changes are evaluated, prompts and harness are not — the biggest change axis is missed.
- Conflating "agent eval" with "model eval" — different problems.
Next post
Candidates for next: going deep on LLM-as-judge — judge bias and calibration, building eval datasets from production traces — the flow and the tooling, agent regression alerting — wiring evals to Slack/PagerDuty.
"You cannot improve what you do not measure. And the agent is not the model — it is a system. Measure the system."
— Agent evaluation systems in 2026, end.
참고 / References
- Inspect AI — UK AI Security Institute
- Inspect AI GitHub — UKGovernmentBEIS/inspect_ai
- Inspect AI Documentation
- Promptfoo — Open-source LLM eval
- Promptfoo GitHub — promptfoo/promptfoo
- Promptfoo Red Teaming
- Arize Phoenix — OSS observability
- Phoenix GitHub — Arize-ai/phoenix
- OpenInference — trace spec
- LangSmith — LangChain Inc.
- LangSmith Documentation
- OpenAI Evals GitHub — openai/evals
- OpenAI Platform — Evals
- Braintrust — eval/observability SaaS
- Helicone — LLM observability/gateway
- Langfuse — OSS LLM engineering
- Langfuse GitHub — langfuse/langfuse
- SWE-bench Verified — OpenAI announcement
- SWE-bench leaderboard
- Anthropic — Responsible Scaling Policy
- METR — Model evaluations
- Apollo Research
- WebArena benchmark
- OSWorld benchmark
- tau-bench — Sierra AI