CAR-bench: 실세계 불확실성 상황에서 LLM 에이전트의 일관성과 한계 인식 평가 벤치마크
CAR-bench: Evaluating the Consistency and Limit-Awareness of LLM Agents under Real-World Uncertainty
TL;DR Highlight
차량 내 음성 어시스턴트 시나리오로 LLM 에이전트가 '모른다'고 말할 수 있는지, 애매한 요청을 스스로 해결할 수 있는지를 평가하는 벤치마크.
Who Should Read
LLM 에이전트를 실제 서비스에 붙이려는 백엔드/AI 엔지니어, 특히 챗봇이나 도구 호출 에이전트의 신뢰성과 Hallucination 문제를 고민하는 개발자.
Core Mechanics
- 기존 벤치마크는 '한 번이라도 성공하면 통과'지만 CAR-bench는 3번 연속 성공(Pass^3)을 요구해 실제 배포 신뢰성을 측정함
- GPT-5조차 Disambiguation 태스크에서 Pass@3 68% → Pass^3 36%로 절반 가까이 떨어짐 — 가끔 잘하는 것과 항상 잘하는 건 다른 문제
- Hallucination 태스크: 필요한 툴/파라미터/결과가 없을 때 '모른다'고 해야 하는데, 비추론 모델(GPT-4.1 등)은 약 40%가 없는 기능을 있다고 거짓 응답함
- Disambiguation 태스크: '파리 가는 길'처럼 여러 옵션이 있을 때 먼저 정보를 수집해야 하는데 GPT-5도 ~90%의 실패가 정보 수집 없이 바로 실행해버리는 '조급한 행동(premature action)'
- Thinking 모델(추론 토큰을 쓰는 모델)이 Non-thinking 모델보다 전반적으로 우수하고 태스크 복잡도가 높을수록 격차가 벌어짐
- Claude-Opus-4.5는 Base/Disambiguation 강하고, GPT-5는 Hallucination 강함 — 같은 성능처럼 보여도 약점이 다름
Evidence
- 최고 모델인 GPT-5(thinking)도 전체 Pass^3 평균 54% — 절반 가까운 시나리오에서 3번 연속 성공 못 함
- Disambiguation Pass^3: 모든 모델이 50% 미만, GPT-5는 36%, 오픈소스 Qwen3-32B는 22%
- Hallucination Pass^3: Non-thinking GPT-4.1 39%, Thinking GPT-5 60% — 추론 능력이 Hallucination 억제에 부분적으로 효과 있음
- GPT-5 latency 22.7초/call vs Claude-Sonnet-4 5.3초/call vs Gemini-2.5-Flash 1.1초/call — 성능-속도-비용 트레이드오프 극명
How to Apply
- 에이전트에 'Hallucination 방어 레이어'를 추가할 때: 툴 결과가 'unknown'이거나 필수 파라미터가 없을 경우 명시적으로 '수행 불가'를 응답하도록 시스템 프롬프트에 규칙을 넣어보자
- 멀티턴 에이전트에서 애매한 요청 처리 시: 바로 실행하기 전에 (1)정책 확인 → (2)사용자 선호도 조회 → (3)컨텍스트 수집 → (4)그래도 모호하면 사용자에게 물어보는 우선순위 디스앰비규에이션 정책을 프롬프트에 명시하면 premature action을 줄일 수 있음
- 에이전트 신뢰성 평가 시: Pass@k(한 번이라도 성공)만 보지 말고 Pass^k(k번 연속 성공)를 함께 측정해야 실제 서비스 품질을 반영함 — 두 지표 간 갭이 클수록 배포 위험도 높음
Code Example
# 디스앰비규에이션 정책 프롬프트 예시 (CAR-bench 방식)
system_prompt = """
## 중의성 해소 정책
사용자 요청에 여러 선택지가 있을 경우 아래 우선순위로 해소하라:
1. 명시적 정책 규칙 (예: 선루프는 선쉐이드가 열려있어야만 열 수 있음)
2. 사용자의 명시적 요청
3. get_user_preferences()로 조회한 개인 선호도
4. 기본값/휴리스틱 (예: 경로 미지정 시 최단 경로)
5. 컨텍스트 정보 (현재 상태, 위치 등 get 툴로 수집)
6. 위 모두로 해소 불가 시에만 사용자에게 질문
## 한계 인식 정책
- 필요한 툴이 없거나 툴 결과가 불완전하면 반드시 명시적으로 알려야 한다
- '수행한 척' 또는 '무시하고 진행'은 절대 금지
- 예: "죄송합니다, 현재 해당 기능(X)을 수행할 수 없습니다"
"""
# Pass^k 측정 코드 예시
def pass_at_k(results: list[bool]) -> bool:
"""k번 모두 성공해야 True (일관성 지표)"""
return all(results)
def pass_k(results: list[bool]) -> bool:
"""한 번이라도 성공하면 True (잠재력 지표)"""
return any(results)
# 에이전트를 k=3번 실행하고 두 지표 모두 측정
k = 3
trial_results = [run_agent_task(task) for _ in range(k)]
consistency = pass_at_k(trial_results) # 배포 신뢰성
potential = pass_k(trial_results) # 최대 능력치
print(f"Pass^{k}: {consistency}, Pass@{k}: {potential}")Terminology
Related Resources
Original Abstract (Expand)
Existing benchmarks for Large Language Model (LLM) agents focus on task completion under idealistic settings but overlook reliability in real-world, user-facing applications. In domains, such as in-car voice assistants, users often issue incomplete or ambiguous requests, creating intrinsic uncertainty that agents must manage through dialogue, tool use, and policy adherence. We introduce CAR-bench, a benchmark for evaluating consistency, uncertainty handling, and capability awareness in multi-turn, tool-using LLM agents in an in-car assistant domain. The environment features an LLM-simulated user, domain policies, and 58 interconnected tools spanning navigation, productivity, charging, and vehicle control. Beyond standard task completion, CAR-bench introduces Hallucination tasks that test agents'limit-awareness under missing tools or information, and Disambiguation tasks that require resolving uncertainty through clarification or internal information gathering. Baseline results reveal large gaps between occasional and consistent success on all task types. Even frontier reasoning LLMs achieve less than 50% consistent pass rate on Disambiguation tasks due to premature actions, and frequently violate policies or fabricate information to satisfy user requests in Hallucination tasks, underscoring the need for more reliable and self-aware LLM agents in real-world settings.