LLM은 센서다, 의사결정자가 아니다
LLM을 어디까지 믿을 것인가
자율주행차의 카메라는 “저건 보행자다”라고 인식하지만, 브레이크를 밟는 건 카메라가 아니라 제어 시스템이다. 카메라가 오인식해도 제어 시스템에 안전 장치가 있으면 차는 멈춘다. 이 분리가 없었다면? 카메라가 “사람 없음”이라고 판단하는 순간 사고가 난다.
Workflow Studio의 Discovery Agent를 만들면서 같은 질문에 부딪혔다. 5단계 인터뷰를 거쳐 업무를 분석하고 최종 제안까지 자동 생성하려면, LLM이 대화 → 추출 → 전이 전 과정을 관장해야 한다. 그런데 LLM은 환각을 일으킨다. “지금 L2 완료됐으니 L3로 가자”를 LLM이 말하면 그대로 믿어야 할까? 우리는 다른 길을 택했다. LLM은 센서, 상태머신은 컨트롤러.
한 줄로 말하면
LLM은 비정형 입력에서 구조화된 정보를 추출하는 센서다. 상태 전이는 결정론적 상태머신이 담당한다. 이 분리가 있으면 LLM이 환각을 일으켜도 시스템은 깨지지 않는다.
Workflow Studio에서의 경험
Discovery Agent의 아키텍처를 한 장으로 그리면 이렇다:
┌─────────────────────────────────────────────┐
│ 사용자 대화 │
│ "월말에 경비 정산해요. ERP에서 데이터 받아서 │
│ 비교하고 보고서 만들어요." │
└──────────────────┬──────────────────────────┘
│
┌───────▼────────┐
│ LLM (센서) │ reportExtraction 도구 호출
│ 정보 추출만 담당 │ → { trigger: "월말", dataSources: ["ERP"] }
└───────┬────────┘
│ 추출된 구조화 데이터
┌───────▼────────┐
│ 상태머신 (컨트롤러)│ "4개 필드 중 2개 채워짐 → 아직 L1"
│ 전이만 담당 │ "4개 이상 채워지면 → L2로 전이"
└───────┬────────┘
│ 전이 이벤트 (or 유지)
┌───────▼────────┐
│ 시스템 반응 │ 다음 질문 생성 / 레벨 전이 알림
└────────────────┘
핵심은 화살표의 방향이다. LLM은 위에서 아래로 데이터만 내려보낸다. 전이 판단은 상태머신의 영역이다. LLM이 “지금 L3로 넘어가야 해”라고 환각해도 상태머신은 무시한다 — 필드 채움 여부라는 결정론적 기준만 보기 때문이다.
실제 코드에서 이 분리가 어떻게 구현되는지는 짧게만 보자:
// LLM이 하는 일: 대화 → 구조화 추출
updatedInfo = mergeCollectedInfo(updatedInfo, part.input.extracted);
// 상태머신이 하는 일: 추출된 데이터 → 규칙 기반 판단
const transition = evaluate({ currentLevel, collectedInfo: updatedInfo });
LLM이 하는 일: 대화에서 “트리거: 월말 정산”, “데이터소스: ERP” 같은 정보 추출.
상태머신이 하는 일: l1.trigger, l1.dataSources, l1.logic, l1.outputs 4개 이상 채워졌는지 확인 → 전이.
LLM이 엉뚱한 필드를 채워도 괜찮다. 상태머신은 “4개 이상 채워졌나?”만 보니까. 환각은 센서 노이즈와 같다. 노이즈가 있어도 시스템 안정성에 영향을 주지 않는 설계가 핵심이다.
상태머신의 구체적 구현(전이 규칙, 피로도 감지, 도구 호출 기반 구조화)은 state-machine-plus-llm에서 자세히 다룬다.
더 큰 그림
Lilian Weng의 LLM Powered Autonomous Agents에서도 같은 결론에 도달한다: 신뢰할 수 있는 에이전트는 Planning + Perception + Action이 분리되어 있다. 이걸 제어공학 용어로 바꾸면:
| 역할 | 제어공학 비유 | Discovery Agent에서 |
|---|---|---|
| 센서 | 카메라, 라이다 | LLM (reportExtraction) |
| 컨트롤러 | PID 컨트롤러 | 상태머신 (evaluate) |
| 액추에이터 | 모터, 브레이크 | 도구 (proposeCatalog) |
이 패턴이 주는 가장 중요한 교훈은 이것이다: LLM의 환각은 버그가 아니라 노이즈다. 센서 노이즈를 전제하고 설계하는 것이 제어공학의 기본이듯, LLM 환각을 전제하고 설계하는 것이 에이전트 엔지니어링의 기본이다.
- 🌐 delegation-requires-decomposition — 다른 테마와의 연결: 센서/컨트롤러 분리도 분해 원리
- 🌐 ai-native-mindset — 다른 시각: LLM을 제대로 쓰려면 “전통 함수가 아니다”는 인식이 필요