---
id: adr-0009-deterministic-always-llm-conditional
title: "ADR-0009 결정론 항상, LLM 검증 조건부"
category: "Architecture_Decision"
status: "draft"
verification_status: "applied"
canonical_id: ""
aliases: ["ADR verification", "왜 조건부 critic", "결정론 우선 검증", "확신도 결정론"]
duplicate_of: ""
source_trust_level: "A"
confidence_score: 0.9
created_at: 2026-06-13
updated_at: 2026-06-13
review_reason: ""
merge_history: []
tags: ["adr", "verification", "intelligence", "decision", "astraai"]
raw_sources: ["AstraAI/src/intelligence/confidenceEngine.ts", "AstraAI/src/intelligence/criticAgent.ts", "AstraAI/src/intelligence/epistemicGuardBlock.ts"]
applied_in: ["AstraAI"]
github_commit: ""
---

# [[ADR-0009 결정론 항상, LLM 검증 조건부]]

## 🎯 한 줄 통찰 (One-line insight)
답변 검증에서 **저렴한 결정론적 검사(정규식/카운트/그라운딩 신호)는 매 턴 실행**하고, **비싼 LLM 검수(Critic)는 결정론 검사가 문제를 신호할 때만** 돌리기로 결정했다 — 로컬 모델의 latency 비용 안에서 신뢰를 확보하기 위해 [S1][S2].

## 🧠 핵심 개념 (Core concepts)
- **결정:** Epistemic Guard(사전, 무비용) + Confidence Engine(결정론, 무LLM) 항상 / Critic(LLM) 조건부 1-pass.
- 구현은 [[Intelligence 검증 레이어]] 참조.

## 📖 세부 내용 (Details · ADR)
### Problem
작은 로컬 모델은 환각이 잦다. 매 답변을 LLM 으로 재검수하면 정확하지만 latency·비용이 2배 이상으로 사용성이 무너진다.

### Context
로컬 Gemma 류, 단일 GPU. 매 턴 추가 LLM 호출은 체감 지연이 큼. 그러나 사실오류/근거누락은 잡아야 함.

### Options Considered
1. **항상 LLM 재검수(full debate)** — 가장 정확, 그러나 latency·비용 폭증.
2. **검증 없음** — 빠르나 환각 방치.
3. **결정론 항상 + LLM 조건부** — 비용 통제 + 위험 신호 시 정밀 검수.

### Chosen Solution
3번. 매 턴 Epistemic Guard 주입 + 결정론 Confidence(0~100) 산출. "커버리지 누락 또는 확신도 <70" 일 때만 Critic LLM 1회 호출, 보완 카드 표시. 다회전 debate 는 knob 만 준비 [S1][S2].

### Why It Was Chosen
대부분의 답변은 결정론 신호로 충분히 걸러지고, 진짜 위험할 때만 비싼 검수를 써 비용 대비 신뢰를 극대화. "모름 인정이 오답보다 낫다" 를 사전 가드로 구조화.

### Benefits
낮은 평균 latency, 위험 시 정밀 검수, 설명가능한 확신도, 사용자 검토 유도(에스컬레이션).

### Drawbacks
조건 임계가 잘못되면 위험 답변을 놓치거나 불필요 검수. 확신도 가중치가 휴리스틱(보정 필요). 1-pass 는 다회전보다 약함.

### Future Risks
임계/가중치가 데이터 없이 고정되면 오탐/미탐. 모델 교체 시 신호 분포가 바뀌어 재보정 필요.

### Alternative Approaches
골든셋으로 가중치 학습, 위험 도메인만 다회전 debate, 또는 작은 전용 검증 모델 상시 가동.

## ⚖️ 모순 및 업데이트 (Contradictions & updates)
"항상 검증해야 안전" 과 "검증은 비싸다" 의 균형점 — 환경(로컬 latency)이 임계를 정한다. 서버/대형 모델이면 더 자주 LLM 검수가 합리적.

## 🛠️ 적용 사례 (Applied in summary)
`confidenceEngine.ts`(결정론), `criticAgent.ts`(조건부), `epistemicGuardBlock.ts`(사전) [S1][S2][S3].

## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[AstraAI 아키텍처 개요]]
- **관련 개념:** [[Intelligence 검증 레이어]], [[Critic Pattern]], [[Reflection Pattern]], [[엔지니어링 트레이드오프 분석]]
- **참조 맥락:** 로컬 LLM 이 자기검증 비용/정확도 균형을 설계할 때 참조.

## 📚 출처 (Sources)
- [S1] AstraAI/src/intelligence/confidenceEngine.ts — 결정론 확신도(매 턴)
- [S2] AstraAI/src/intelligence/criticAgent.ts — 조건부 1-pass 검수
- [S3] AstraAI/src/intelligence/epistemicGuardBlock.ts — 사전 가드

## 📝 변경 이력 (Change history)
- 2026-06-13: AstraAI 코드 분석 기반 ADR 작성.
