LangChain 없이 AI 오케스트레이션 엔진을 직접 만들어본 경험과 배운 점
I bulit an AI Orchestration engine without using LangChain - Here's what i learned
핵심 요약
LLM을 신뢰하지 않는다는 전제하에 결정론적 검증 레이어를 도입한 AI 오케스트레이션 엔진 RUX 개발기.
- 신뢰 경계 설정 — LLM의 출력을 검증하는 결정론적 Executor 레이어를 도입하여 할루시네이션 방지.
- 신뢰도 엔진 — LLM의 자가 평가 대신 실제 SQL 기록 기반의 데이터로 신뢰도 측정.
- 비판 모델 분리 — 동일 모델의 자기 검열 문제를 해결하기 위해 별도의 Mistral 7B 모델을 비판자로 활용.
- 3단계 플래너 — 인사말 등을 필터링하여 불필요한 LLM 호출을 줄이고 신뢰도 점수 무결성 유지.
대부분의 AI 에이전트는 다음과 같은 패턴을 따름:
LLM -> tool -> response
여기에는 검증이 없음. 신뢰성 측정도 없음. 만약 LLM이 액션 이름을 할루시네이션하면 시스템은 조용히 실패함. 그래서 나는 이걸 고치기 위해 RUX를 만들었음.
핵심 아이디어는 LLM을 신뢰하지 않는 상태로 유지하는 것임.
Executor 이전의 모든 것은 확률적이고, 이후의 모든 것은 결정론적임. Executor 내부의 스키마는 이 두 세계를 분리하는 계약임.
전체 흐름:
Planner -> Executor (trust boundary) -> Tool -> Service -> PostgreSQL -> Observability -> Confidence Engine -> Critic LLM -> Response
내가 가장 자랑스러워하는 세 가지 결정:
-
LLM에게 스스로 얼마나 확신하는지 묻는 대신, 실제 결과 기록에 대한 SQL 집계를 통해 신뢰도를 도출함.
-
동일한 플래너 모델에게 자기 평가를 요청하는 것은 무의미하므로, 비판 서비스는 별도의 모델(Mistral 7B)에서 비동기적으로 실행됨.
-
3계층 플래너 — 인사말은 LLM에 도달하지 않도록 하여 신뢰도 점수의 무결성을 보호함.
아직 고쳐야 할 점:
아직 리플렉션 레이어가 포함되지 않았음. 한 가지 도메인만 구현되어 있어 아키텍처가 일반화될 수 있을지는 검증되지 않음. LM Studio를 통해 로컬에서 실행 중이라 규모 테스트는 이루어지지 않음.
현재 작업 중인 것:
시스템의 모듈식 도메인 리팩토링을 시작했음.
리팩토링이 완료되면 비용(expense) 외에 새로운 지식 도메인을 통합하는 작업을 할 예정임.
