혼란은 끝, 오직 통제뿐: 지시대로 움직이는 AI
No chaos, only control AI that does what it’s told
핵심 요약
LLM의 비결정성을 제어하기 위해 결정론적 가상 머신(nano-vm)을 도입하여 AI 워크플로우의 신뢰성을 보장하려는 시도.
- 결정론적 워크플로우 — LLM을 상태 없는 작업자로 제한하고 DSL을 통해 실행 순서를 강제함.
- 비즈니스 신뢰성 — 결제 실패, 주문 누락 등 에이전트의 비결정성으로 발생하는 문제를 해결함.
- 상태 머신 도입 — 유한 상태 머신(FSM)을 사용하여 명확한 종료 상태와 실행 제한을 보장함.
- 실패 사례 방지 — 멱등성 키와 재시도 로직을 통해 에이전트의 중복 실행이나 단계 건너뛰기를 방지함.
결제는 완료되었는데 주문이 생성되지 않았습니다. 토요일 늦은 밤 Zap이 고장 났습니다. 고객은 만료된 카드에 대한 알림을 한 번도 받지 못했습니다. 익숙한 상황인가요?
70% 이상의 장바구니 이탈, 결제 실패로 인해 MRR의 5~10%가 누수되고, Stripe가 고객에게 알리지 않고 구독을 취소하는 등 조용한 이탈은 단순한 '성장통'이 아닙니다. 이는 제거할 수 있고 제거해야 하는 기술적 마찰입니다.
하지만 일반적인 AI 에이전트(LangChain, 커스텀 GPT 체인)는 이 문제를 해결하지 못하며, 오히려 상황을 악화시키는 경우가 많습니다. 모델은 단계를 건너뛰거나, 순서를 뒤섞거나, 중요한 가드레일이 실행되지 않았는데도 워크플로우가 완료되었다고 판단할 수 있습니다. 바로 여기서 nano-vm이 등장합니다. LLM이 예측 불가능한 팀원이 아닌 예측 가능한 도구가 되는 런타임입니다.
nondeterminism ∈ Planner (1 LLM call, optional)
determinism ∈ ExecutionVM (FSM)
세 단어가 모든 것을 바꿉니다: 결정론, 재현성, 보장
nano-vm은 또 다른 에이전트 프레임워크가 아닙니다. AI 파이프라인을 실행하기 위한 결정론적 가상 머신입니다. 선언적 DSL(JSON/YAML/Python)로 워크플로우를 설명하면, VM은 모든 단계가 엄격하게 정의된 순서대로 실행됨을 보장합니다.
여기서 LLM은 상태 없는 작업자일 뿐입니다. 프롬프트를 받고 문자열을 반환하는 것이 전부입니다. 모델은 검증을 건너뛰거나, 가드레일을 우회하거나, '조기 종료'할 수 없습니다.
책임의 명확한 분리:
|LLM 결정 사항|DSL (VM) 결정 사항|
|:-|:-|
|무엇을 말할지, 어떻게 추론할지, 어떤 콘텐츠를 생성할지|다음 단계 실행, 분기 시점, 종료 시점|
LangChain은 실행 순서를 보장할 수 없지만, nano-vm은 가능합니다.
실제 사례: 우회할 수 없는 가드레일
program = Program.from_dict({
"name": "customer_refund",
"steps": [
{"id": "analyze", "type": "llm", "prompt": "Is this a valid refund request? ..."},
{"id": "guardrail",
"type": "condition",
"condition": "'yes' in '$decision'.lower()",
"then": "process_refund",
"otherwise": "reject"},
{"id": "process_refund", "type": "tool", "tool": "issue_refund"},
{"id": "reject", "type": "tool", "tool": "send_rejection"},
]
})


