HITL 개입과 도구 호출 보존의 무결성 설계
인간 개입(HITL)에 의한 도구 인자 수정 시 원본 모델 호출 기록을 보존하고 상태 불일치를 차단하는 아키텍처를 분석합니다.
초록 본 칼럼에서는 법률 특화 자율 에이전트 시스템에서 인간 개입(Human-In-The-Loop, HITL)이 발생할 때 수반되는 상태 무결성 파괴 문제를 학술적 관점에서 정밀하게 규명합니다. 최근 오픈소스 에이전트 프레임워크인 LangChain 1.4.2 릴리스에서 다루어진 핵심 패치는 사용자가 도구 호출(Tool Call) 인자를 수정한 경우에도 모델이 원래 생성했던 원본 도구 호출 객체를 컨텍스트 내에 보존하고, 실행 결과 메시지(ToolMessage)에 수정 사실을 명시적으로 고지하는 구조적 전환을 보여줍니다. 기존 시스템들은 인간 검수자가 도구 인자를 변경하면 모델의 원본 호출 객체를 직접 덮어쓰거나 파기함으로써, 후속 자기회귀 디코딩 단계에서 모델이 자신이 생성하지 않은 토큰 시퀀스를 스스로 출력했다고 오인하는 인과적 문맥 왜곡 현상을 야기했습니다. 본고는 이러한 섀도우 변조가 법률 추론의 논리적 연속성과 책임 소재 감사 가능성에 미치는 부정적 영향을 수리적·구조적으로 분석합니다. 나아가 불변 상태 전이 모델과 타입 세이프 미들웨어를 결합하여 원본 호출-수정 개입-실행 피드백 간의 무결성을 보장하는 다층 거버넌스 아키텍처를 제시합니다. 최종적으로 법마디 OS의 정밀 소송 지원 파이프라인에 이를 이식하여 전문가 개입 하에서도 추론 투명성과 감사 추적성을 손실 없이 달성하는 구체적인 실무 엔지니어링 방안을 도출합니다.
법률 AI 시스템이 복잡한 소송 전략 수립이나 판례 분석을 자율적으로 수행할 때, 치명적인 오류를 방지하기 위한 인간 변호사의 중간 검수(HITL)는 필수적인 안전장치로 인식되어 왔습니다. 그러나 실무 현장에서 에이전트가 생성한 검색 쿼리나 조문 조회 매개변수를 변호사가 수정한 뒤 파이프라인을 재개할 때, 시스템이 기이한 환각을 일으키거나 앞선 자신의 판단을 완전히 부정하는 현상이 빈번하게 목격됩니다. 이는 다수의 에이전트 런타임이 인간의 수정을 반영하는 과정에서 모델이 직전에 생성했던 원본 도구 호출(Tool Call) 메타데이터를 메모리 상에서 직접 치환하거나 덮어쓰도록 설계되어 있었기 때문입니다. 거대언어모델(LLM)은 자신이 출력한 이전 턴의 토큰 시퀀스를 조건부 확률의 토대로 삼아 다음 추론을 전개하므로, 컨텍스트 내에서 자신이 생성하지 않은 수정된 호출부가 주입되면 모델 내부의 주의집중(Attention) 메커니즘은 원인과 결과의 인과적 결합을 상실하게 됩니다. 최근 릴리스된 LangChain 1.4.2의 변경점은 바로 이 치명적인 런타임 결함을 해결하기 위해 원본 도구 호출을 온전히 보존하고, 실행 메시지에 인간의 개입 고지(Notice)를 명시적으로 분리 주입하는 방식을 채택했습니다. 기술은 정확해야 하며, 특히 고도의 법적 판단을 중계하는 AI라면 인간의 감독 행위 자체가 모델의 논리 회로를 교란하는 부작용을 원천 차단해야 합니다. 우리는 오늘 오픈소스 릴리스의 심층 코드를 통하여 상태 불변성과 인간 개입이 공존하는 법률 에이전트의 무결성 아키텍처를 깊이 있게 해부하고자 합니다.
핵심 기술 개념
HITL(Human-In-The-Loop) 도구 편집
에이전트가 외부 도구를 실행하기 직전에 인간 전문가가 중간에 개입하여 실행 여부를 승인하거나 매개변수를 직접 수정하는 감독 제어 기법입니다.
도구 호출 불변성(Tool Call Immutability)
모델이 자율적으로 생성한 도구 호출의 원본 식별자, 함수명, 인자 값을 사후 개입이나 실행 수정에도 불구하고 변경하지 않고 영구 보존하는 상태 관리 원칙입니다.
상태 전이 고지(Notice Injection)
인간의 수정이나 외부 정책에 의해 도구 인자가 변경되어 실행되었음을 실행 결과 객체에 명시적 메타데이터로 첨부하여 후속 LLM 추론에 알리는 프로토콜입니다.
기술 심층 분석
HITL 상태 덮어쓰기의 인과적 단절과 주의집중 붕괴 메커니즘
전통적인 에이전트 아키텍처는 인간 검수자가 도구 호출 인자를 수정할 경우, 대화 상태 그래프(State Graph) 내의 직전 AI 메시지(AIMessage)에 포함된 tool_calls 속성을 직접 변경하는 방식을 취해 왔습니다. 예컨대 모델이 민법 제750조 불법행위 책임을 검색하기 위해 search_statute(article='750')을 호출했을 때, 변호사가 이를 계약책임인 제390조로 수정한 후 실행 버튼을 누르면 기존 런타임은 AIMessage의 인자를 article='390'으로 완전히 덮어썼습니다. 그러나 이 순간 자기회귀적 언어모델의 인과적 언어 모델링(Causal Language Modeling) 가정은 심각하게 훼손됩니다. 모델의 잠재적 추론 흔적(Thought Chain)은 여전히 불법행위의 고의·과실 요건을 논증하고 있는데, 바로 뒤이어 출력된 것으로 기록된 도구 호출은 채무불이행 조항을 가리키고 있기 때문입니다. 이는 모델의 셀프 어텐션 층에서 쿼리-키-밸류(Q-K-V) 간의 의미론적 결합을 교란하여, 후속 턴에서 모델이 자신의 논리적 모순을 정당화하기 위해 억지 가교 논리를 지어내는 '합리화 환각(Rationalization Hallucination)'을 촉발합니다. 원본 출력을 파괴하는 가변적 상태 변조는 에이전트의 자기인식적 정합성을 무너뜨리는 근본적 원인이 됩니다.
LangChain 1.4.2의 구조적 해법: 불변 원본 보존과 ToolMessage 분리 고지
최근 공개된 LangChain 1.4.2 패치(#40463)는 이 문제를 해결하기 위해 상태 전이의 불변성 원칙을 런타임 수준에서 공식화했습니다. 모델이 생성한 원본 tool_calls 페이로드는 AIMessage 내에 읽기 전용 상태로 영구 보존되며, 인간 사용자가 수정한 매개변수는 별도의 실행 인터셉터 레이어로 격리되어 실행 엔진으로만 전달됩니다. 그리고 실제 도구가 실행된 후 반환되는 ToolMessage의 페이로드에는 실행 결과값과 더불어 원본 도구 호출이 인간 감독자에 의해 어떻게 수정되었는지를 설명하는 정형화된 시스템 공지(Notice)가 함께 캡슐화됩니다. 구체적으로는 'Notice: The arguments for tool call [ID] were modified by the user from {original_args} to {modified_args}'와 같은 제어 신호가 ToolMessage의 최상단에 주입됩니다. 이 설계를 통해 LLM은 다음 추론 턴에서 자신이 당초 왜 특정 도구를 호출했는지를 온전히 기억하면서도, 왜 다른 결과값이 반환되었는지를 외부 관찰자(인간 전문가)의 명시적 개입 행위로 인지하게 됩니다. 즉 모델 내부의 인과적 연속성을 깨뜨리지 않고도 환경 변화를 수용할 수 있는 신경-상징적 인터페이스가 완성되는 것입니다.
타입 안전 미들웨어(TypeSafe Middleware)와의 연계를 통한 정적 검증 결합
이러한 도구 호출 보존 메커니즘은 최근 병행 릴리스된 langchain-typesafe 계열의 미들웨어(AutoModeMiddleware 및 ModelRouterMiddleware)와 결합될 때 더욱 강력한 무결성을 발휘합니다. 법률 도메인에서 변호사의 HITL 수정은 단순한 텍스트 편집이 아니라, 법률 온톨로지 및 스키마에 정의된 엄격한 유효성 검증을 통과해야 합니다. 사용자가 인자를 수정할 때 타입 세이프 분류기(TypeSafeClassifier)와 정적 타입 검증 레이어가 개입하여, 수정된 인자가 법률 검색 API의 Pydantic 스키마를 준수하는지 실시간으로 검사합니다. 만약 변호사가 존재하지 않는 법령 조항 번호나 잘못된 형식의 사건번호를 입력하면, 런타임은 도구 실행 자체를 거부하고 불변 상태 그래프의 분기를 롤백합니다. 이 과정에서 도구 호출의 고유 식별자(tool_call_id)는 암호학적 해시 체인으로 묶여 원본 모델 출력, 사용자 개입 diff 로그, 스키마 검증 결과, 최종 ToolMessage 응답이 단일 트랜잭션 단위로 묶이게 됩니다. 이는 동적 에이전트 실행 환경에 정적 타입 안전성을 부여하는 핵심적인 진화입니다.
다중 에이전트 환경에서의 감사 추적성(Audit Trail)과 책임 소재 한계 분석
법률 AI가 작성한 준비서면이나 자문 의견서에 오류가 발생했을 때, 그 오류가 AI의 자체적 환각에서 비롯된 것인지 아니면 인간 변호사의 부적절한 개입에서 비롯된 것인지를 사후에 판별하는 감사 추적성은 법적 책임 소재를 규명하는 절대적 기준입니다. 원본 tool_calls를 덮어쓰는 기존 방식에서는 모든 실행 결과가 AI의 단독 출력물처럼 왜곡되어 기록되므로, 소송법적 책임 귀속이 불가능해집니다. 반면 LangChain 1.4.2 스타일의 원본 보존 및 분리 통지 체계는 상태 전이 원장(Ledger)에 AI의 원본 제안과 변호사의 수정 행위를 완벽히 분리된 노드로 기록합니다. 그러나 이러한 접근법 역시 컨텍스트 윈도우 비용의 선형 증가와 긴 문맥에서의 주의집중 분산이라는 명확한 트레이드오프를 수반합니다. HITL 개입이 10회 이상 누적되는 복잡한 소송 검토 워크플로우에서는 시스템 공지 텍스트 자체가 수천 토큰을 차지하게 되며, 모델이 원본 의도와 수정된 결과 사이에서 주의집중 가중치를 적절히 배분하지 못하고 최신 공지에만 과도하게 쏠리는 '최신 편향(Recency Bias)' 문제가 발생할 수 있습니다.
기술적 트레이드오프
긴장 관계 원본 도구 호출과 인간의 수정 이력을 컨텍스트 내에 모두 보존하는 방식은 추론의 인과적 투명성과 법적 감사 가능성을 완벽히 보장하지만, 대화 컨텍스트 토큰 소비량을 급증시키고 다단계 추론 시 모델의 어텐션을 산만하게 만듭니다.
실무적 해소 법마디 OS는 전체 수정 이력을 불변 감사 데이터베이스(Audit DB)에 완벽히 동기화하되, 실시간 LLM 컨텍스트 윈도우에는 최근 2회의 원본-수정 diff만을 압축 주입하고 이전 개입 이력은 정형화된 요약 토큰(State Summary Token)으로 대체하여 토큰 효율성과 주의집중 집중도를 동시에 달성합니다.
이 주장이 틀리는 조건
반증 조건 인간 변호사가 도구 호출 인자를 5회 이상 수정한 복합 법률 질의 100건에 대하여, 원본 도구 호출을 보존하고 Notice를 주입한 실험군과 원본을 덮어쓴 대조군을 동일 모델(vLLM 기반 분산 서빙)로 비교 평가합니다. 이때 후속 추론에서 발생하는 논리적 모순율(Logical Inconsistency Rate)과 환각 발생률이 대조군 대비 유의미하게 감소하지 않거나(p > 0.05), 오히려 Notice 토큰으로 인한 어텐션 분산으로 인해 최종 판례 인용 정확도(Citation Accuracy)가 5% 포인트 이상 하락하는 현상이 통계적으로 재현된다면, 불변 도구 호출 보존과 Notice 주입이 에이전트 무결성을 향상시킨다는 본 칼럼의 아키텍처적 가설은 기각됩니다.
법마디 OS에 적용한다면
법마디 OS의 '전문가 검수형 법률 소송 에이전트 파이프라인'에 LangChain 1.4.2의 불변 도구 호출 보존 원리와 타입 세이프 미들웨어를 즉각 통합합니다. 첫째, 당사의 MCP(Model Context Protocol) 클라이언트 레이어에 'Immutability Interceptor'를 구축하여, 변호사가 플랫폼 UI에서 법령 및 판례 검색 쿼리를 수정할 때 백엔드 상태 그래프 내의 AIMessage.tool_calls 객체에 대한 쓰기 권한을 원천 차단합니다. 둘째, 사용자가 수정한 인자는 암호학적 서명이 첨부된 'HITLModificationEvent' 객체로 별도 캡슐화되어 실행 엔진으로 전달되며, 검색 실행 후 생성되는 ToolMessage에는 한국 법률 용어 체계에 맞춤화된 정형화 고지문([변호사 개입: 인자 '{original}' -> '{modified}' 변경 실행됨])이 자동 주입되도록 시스템 프롬프팅과 메시지 팩토리를 개편합니다. 셋째, langchain-typesafe의 아키텍처를 계승하여 대법원 판례 일련번호, 조문 식별자, 법원 코드 등의 법률 고유 도메인 엔티티를 정적 검증하는 'LexTypeValidator'를 미들웨어로 배치함으로써 변호사의 오입력으로 인한 런타임 패닉을 사전 차단합니다. 넷째, vLLM v0.30 기반의 고성능 서빙 환경에서 FlashInfer 및 접두사 캐싱(Prefix Caching)을 활용할 때, 원본 tool_calls가 유지됨으로써 고정된 시스템 프롬프트 및 초기 추론 궤적의 KV 캐시 재사용률을 극대화하여 인퍼런스 레이턴시를 대폭 절감합니다. 다섯째, 모든 상태 전이 로그는 WORM(Write Once, Read Many) 형태의 무결성 감사 원장에 기록되어 향후 법적 분쟁이나 AI 산출물 검증 요구 시 완벽한 인과적 증거력을 제공하도록 배포 환경을 고도화합니다.
기술적 함의
- 인간의 검수 개입은 모델의 상태를 덮어쓰는 방식이 아니라, 모델의 인과적 기억을 보존한 채 별도의 관찰 신호로 주입되어야만 에이전트의 자기모순 환각을 차단할 수 있습니다.
- 정적 타입 검증 미들웨어와 동적 런타임의 결합은 법률 AI의 도구 실행 안정성을 엔지니어링 수준에서 보장하는 필수적 안전망입니다.
- 모델 원본 출력과 인간 개입 내역의 명시적 분리는 리걸테크 시스템의 법적 책임 귀속과 감사 추적성을 성립시키는 전제 조건입니다.
"진정한 법률 AI의 무결성은 모델의 자율성만을 맹신하거나 인간의 개입으로 기록을 훼손하는 것이 아니라, 기계의 추론 궤적과 인간의 교정 행위를 투명하고 정직하게 상태 원장에 새겨 넣는 엄격한 아키텍처에서 완성됩니다."
참고 자료
- github.com langchain==1.4.2
- github.com langchain-typesafe==0.0.1a2
- github.com v0.30.0rc2
- github.com langchain-typesafe==0.0.1a1
- github.com v0.30.0rc1: [Bugfix] Isolate supplemental FlashInfer BF16 autotuning (#57285)
- github.com langchain==1.4.1
- github.com proto-v0.3.0
- github.com proto-v0.2.0: vllm-proto 0.2.0
- github.com langchain-anthropic==1.7.1
- github.com v0.29.0rc5