
변호사처럼 계약서를 읽고, 모를 때는 '모른다'고 말할 줄 아는 AI를 만들었습니다
요약
계약서의 불리한 조항이나 불법 요소를 식별하여 사용자에게 알리는 AI 에이전트 'Legal Guard'를 소개합니다. Qwen 모델을 활용하여 고난도 추론과 단순 확인 작업을 분리하는 효율적인 에이전트 설계 방식을 제안합니다.
핵심 포인트
- 계약서 내 불리한 조항 및 법적 무효 조항 식별 기능 제공
- 대형 모델(Reasoning)과 경량 모델(Verification)의 역할 분담을 통한 효율성 최적화
- 사용자가 최종 승인하는 Human-in-the-loop 구조 채택
- Qwen Cloud Hackathon Autopilot Agent 트랙 프로젝트 결과물
베트남의 작은 가구 수출업체를 상상해 보세요. 독일 구매자가 영어로 된 12페이지 분량의 계약서를 보냅니다. 7페이지 어딘가에 다음과 같은 문구가 있습니다: "지연 배송 위약금: 계약 금액의 15%."
업체 대표는 이에 서명합니다. 베트남 법은 해당 위약금을 **8%**로 제한하며, 그 이상의 금액은 법원에서 무효라는 사실을 아무도 그녀에게 말해주지 않았습니다. 그녀는 법적으로 유효하지도 않은 조건에 동의해 버렸고, 자신에게 그런 카드가 있다는 사실조차 모른 채 향후 세 번의 계약을 협상하게 될 것입니다.
이것이 바로 제가 Qwen Cloud Hackathon (Autopilot Agent 트랙) 기간 동안 Legal Guard를 만든 이유입니다. 이는 계약서를 읽고, 어떤 조항이 단순히 귀하에게 불리한지 그리고 어떤 조항이 _실제로 불법인지_를 알려주며, 메시지가 발송되기 전 사람이 모든 내용을 승인하는 가운데 귀하가 대응할 수 있도록 돕는 AI 에이전트(AI agent)입니다.
직접 체험해 보세요: https://legalguard.duckdns.org · 코드 (오픈 소스): https://github.com/trungnguyen1618033/legal-guard-PH
제가 배운 점들을 쉬운 언어로 정리해 보았습니다.
레슨 1: 복사 업무를 시키기 위해 시니어 파트너를 보내지 마세요
AI 모델은 법률 사무소의 직원과 같습니다. 시니어 파트너(qwen3.7-max)는 명석하지만 느립니다. 법률 보조원(qwen-flash)은 빠르고 단순하며 명확하게 정의된 확인 작업에 탁월합니다.
저의 첫 번째 버전은 _모든 것_을 시니어 파트너에게 보냈습니다. 계약서 하나를 분석하는 데 몇 분이 걸렸고, 그 시간의 대부분은 _"이 법 조항이 실제로 우리가 주장하는 내용을 담고 있는가 — 예 또는 아니오?"_와 같이 아주 단순한 질문에 소비되었습니다.
그래서 저는 실제 로펌이 일하는 방식대로 업무를 분리했습니다:
- 고난도 추론 (Hard reasoning) (계약서 분석, 협상 전략 수립) → 대형 모델 (big model).
- 예/아니오 이중 확인 (Yes/no double-checks) → 빠른 모델 (fast model): 23초 대신 0.5초 — 동일한 답변을 내놓으면서도 약 46배 더 빠릅니다.
- 빠른 법률 질의응답 (Quick legal Q&A) → 중간 크기 모델 (mid-size model): 약 48초 대신 4~6초.
파이프라인의 한 단계가 약 4분에서 약 7초로 단축되었습니다. 모델이 더 똑똑해진 것이 아니라, 업무가 적절한 담당자(desk)에게 배정된 것뿐입니다.
교훈 2: 가장 위험한 AI의 답변은 확신에 찬 오답이다
모두가 AI의 "환각 (hallucinating)" — 즉, 내용을 지어내는 것을 걱정합니다. 법률 업무에서 발생하는 실패는 더 교묘합니다. AI가 실제 법 조항을 인용하지만, 정작 그 조항은 AI가 주장하는 내용을 담고 있지 않은 경우입니다. 인용된 조항 자체는 맞지만, 그 의미가 틀린 것입니다. 바쁜 독자라면 이를 절대 잡아낼 수 없을 것입니다.
세 가지 가드레일 (guardrails)이 이 문제를 해결했습니다:
- 제2의 눈 (A second pair of eyes). 에이전트가 리스크를 감지한 후, 별도의 AI 검사기가 단 하나의 작업만을 수행합니다: "이 법 조항을 읽으세요. 이 조항이 실제로 이 주장을 뒷받침합니까 — 예 또는 아니오?" 만약 답변이 모호하다면, 우리는 이를 **아니오 (no)**로 간주합니다. 법률 분야에서는 "이 조항은 불법입니다!"라고 잘못 소리치는 것이, 조용히 사람에게 검토를 요청하는 것보다 더 나쁩니다.
- 좀비 법률 금지 (No zombie laws). 법은 끊임없이 개정됩니다. Legal Guard는 오직 현재 시행 중인 법만을 인용합니다. 만약 "2020년에는 규칙이 어떠했나요?"라고 묻는다면, _2020년 당시_의 법률 상태로 답변합니다.
- "모른다"라고 말할 때를 아는 것. 지식 베이스 (knowledge base)를 벗어난 질문을 하면 AI는 _"답변할 수 있는 충분한 법적 근거가 없습니다"_라고 말합니다. 이는 추측하는 대신 "확인해 보겠습니다"라고 말하는 유능한 변호사와 같습니다. 우리는 테스트에서 이러한 올바른 거절을 올바른 답변으로 간주합니다.
우리는 베트남 법률의 12개 분야에 걸쳐, 변호사가 알고 있는 정답이 포함된 54개의 질문을 통해 이 모든 것을 테스트합니다. 현재 점수는 다수결 방식(사례당 3회 실행) 기준 54/54로, 시작 당시의 87%에서 크게 향상되었습니다. 경계선에 있는 사례 하나가 실행 시마다 결과가 바뀌고 있는데(호스팅된 모델의 문구 일치 문제), 이로 인해 단일 실행 시에는 53/54로 읽힐 수 있습니다. 우리는 이를 단순히 100%로 반올림하는 대신 투명하게 공개합니다. 전체 방법론은 https://legalguard.duckdns.org/trust에 게시되어 있습니다. 법적 리스크를 다루는 AI라면 마땅히 자신의 성적표를 보여주어야 하기 때문입니다.
레슨 3: 저렴한 모델이 문을 지킨다면, 그 경비원을 테스트하라
예/아니오(yes/no) 체크를 수행하던 빠른 "법률 보조원 (paralegal)" 모델을 기억하시나요? 이 모델은 어떤 인용문이 살아남을지를 결정하는 게이트 역할을 하므로, 안전에 매우 중요한 부분이 됩니다. 따라서 이 모델에게도 자체 시험을 치르게 했습니다. 실제 법령 텍스트와 결합된 16개의 까다로운 문장들을 제시했는데, 여기에는 "이 조항에 따라 10%의 벌금이 유효하다"라는 문장을 8%라고 명시된 조항 옆에 배치하는 것과 같은 함정들이 포함되어 있습니다. 우리는 빠른 모델을 정답 및 대형 모델(big model)의 답변과 대조하여 점수를 매깁니다. 결과는 다음과 같습니다: 16/16 정답, 플래그십(flagship) 모델과 100% 일치하며, 지연 시간(latency)은 극히 일부에 불과함 (테스트 보고서). 이 테스트 덕분에 우리는 양심의 가책 없이 더 빠른 모델을 선택하는 트레이드오프(trade-off)를 단행할 수 있었습니다.
레슨 4: "오토파일럿 (Autopilot)"은 당신이 자는 동안에도 작동한다는 의미입니다
이 트랙의 이름은 _Autopilot Agent_이며, 저는 그 의미를 문자 그대로 받아들였습니다. 프로덕션 서버(Docker에서 모든 것을 실행하는 하나의 작은 Alibaba Cloud 머신)에서 스케줄러가 매일 새벽 5시에 에이전트를 깨웁니다. 에이전트는 어떤 법률이 효력을 발생했는지 확인한 다음, 지금까지 검토한 모든 계약서와 교차 참조합니다. 즉, 새로운 시행령이 귀하의 계약서가 의존하고 있는 조항을 방금 변경했는지 확인하는 것입니다.
또한 매우 정밀합니다. 제9조를 개정하는 시행령이 나오면 제9조를 인용하고 있는 계약서에만 알림을 보냅니다. 스팸이 아닙니다. 그리고 만약 한 번 잘못된 경보(false alarm)를 무시하면, 그 상태로 계속 무시됩니다. 테스트 중에 실제 데이터에서 이 기능이 작동했습니다. 중재(arbitration)에 관한 한 시행령이 외국 중재 조항이 포함된 저장된 계약서 8건을 찾아냈습니다. 아무도 요청하지 않았습니다. 그것이 핵심입니다.
레슨 5: 계약서 스캐너는 무엇이 잘못되었는지 알려주지만, 코파일럿(copilot)은 무엇을 해야 하는지 알려줍니다
모든 계약서 AI는 위험한 조항을 표시합니다. 소규모 기업들을 위해 아무도 채워주지 못했던 공백은 바로 이것입니다: "나의 실제 협상력(bargaining position)을 고려할 때, 이에 대해 무엇을 해야 하는가?"
따라서 Legal Guard는 분석에서 멈추지 않고, **상태 유지형 다회차 협상 (stateful, multi-round negotiation)**을 수행합니다.
사용자는 자신의 협상력(leverage)과 대안적 협상안(BATNA)이 있는지 여부를 시스템에 알려줍니다. 그러면 시스템은 매 회차마다 다음과 같은 작업을 수행합니다:
- 이미 합의된 내용을 기억합니다 — 지속적인 "양보 장부 (concession ledger)"를 통해 사용자가 이미 쟁취한 사항을 다시 재협상하는 일이 없도록 합니다 (초기 버전은 이를 계속 잊어버리고 양보를 되돌려주는 문제가 있었습니다).
- 굴복이 아닌 거래를 제안합니다 — _"베트남에서의 중재를 확정 짓기 위해 보증금을 양보하십시오"_와 같이 제안하며, 모든 제안을 검토하여 결코 마지노선(red-line)을 넘어서는 제안을 하지 않도록 필터링합니다.
- 언제 물러나야 할지를 압니다 — 상대방이 반드시 수정해야 할 마지노선(red-line)을 차단하고 동시에 사용자에게 실제 대안이 있는 순간, 결정론적 가드레일(deterministic guardrail)이 작동하여 _"협상 결렬(walk-away) 권고"_로 전환됩니다. 이 규칙은 모델의 기분에 맡겨지는 것이 아니라, 코드로 강제됩니다.
- 결과로부터 학습합니다 — 실제 계약을 성사시킨 전략들에 더 높은 가중치를 두어 다음번에 활용합니다.
이것이 문서 스캐너와 협상 코파일럿(copilot) 사이의 경계이며, 제가 진정한 해자(moat)라고 주장하고 싶은 부분입니다.
무엇이 실패했는가 (성공만큼이나 가치 있는 내용)
- 화려한 트리 탐색 검색 (tree-search retrieval) 방식이 우리의 테스트에서 지루한 하이브리드 (hybrid) 방식에 패배했습니다. 지루한 방식이 승리했습니다.
- 그래프 기반 재순위화 (graph-based reranking) 아이디어는 측정 가능한 차이를 전혀 만들어내지 못했습니다. 코드는 남아 있지만, 꺼두었습니다.
- 실패하는 각 테스트를 수정하기 위해 임계값 (thresholds)을 수동으로 조정하는 것은 매번 다른 테스트를 망가뜨렸습니다 — 마치 두더지 잡기 게임 같았습니다. 결국 마지막에 버틴 것은 구조적인 해결책 (수동 조정이 없는 자동 차단 방식)이었습니다.
한 줄 요약
속도 예산은 추론 (reasoning)에 쓰고, 안전 예산은 검증 (verification)에 쓰세요. 그리고 보기 좋은 숫자가 아니라, 실제로 측정한 숫자를 공개하세요.
*Qwen 모델을 사용하여 Qwen Cloud (DashScope)에서 구축되었으며, Alibaba Cloud ECS에 배포되었습니다. 오픈 소스
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기


