본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 05:12

외부 LLM API 없이 작동하는 3B 임대차 리스크 스캐너를 구축했습니다

요약

외부 LLM API 호출 없이 로컬에서 작동하는 3B 파라미터 규모의 계약서 리스크 스캐너 'Lease Lens'를 소개합니다. 개인정보 보호를 위해 소형 모델을 활용하며, 계약서 내 위험 조항 탐지, 근거 인용, 협상 이메일 초안 작성 기능을 제공합니다.

핵심 포인트

  • 외부 API 없이 로컬/폐쇄형 환경에서 작동하여 개인정보 보호 강화
  • 3B 소형 모델을 활용해 제한된 환경에서도 효율적인 실행 가능
  • 자동 갱신, 위약금, 보증금 등 주요 계약 리스크 카테고리 자동 점검
  • 정확한 문구 인용 및 근거 제시를 통한 신뢰성 확보

저는 Hugging Face Build Small Hackathon을 위해 Lease Lens를 구축했습니다.

아이디어는 간단합니다. 대부분의 사람들은 실제로 읽지 않은 채 계약서에 서명한다는 것입니다.

이는 아파트 임대차 계약, 프리랜서 계약, 체육관 멤버십, SaaS 약관, 그리고 소규모 비즈니스 사무실 임대차 계약 모두에 해당합니다. 리스크는 모든 계약이 악의적이라는 점이 아닙니다. 리스크는 일반인이 갱신 조항 (renewal clause), 연체료 누적 (late-fee stack), 보증금 조건 (deposit condition), 면책 조항 (indemnity clause), 수리 부담 (repair burden), 또는 중재 포기 (arbitration waiver) 등을 너무 늦기 전까지 놓칠 수 있다는 점입니다.

Lease Lens는 소형 모델 (small-model) 계약 검토 어시스턴트입니다. 이 도구는 임대차 계약서나 계약서를 읽고, 위험한 조항을 찾아내며, 정확한 문구를 인용하고, 원문에서 해당 부분을 강조하며, 계약 점수를 매기고, 쉬운 영어로 작성된 협상 이메일 초안을 작성합니다.

데모: https://youtu.be/M-v3OAKO5-k

Space: https://huggingface.co/spaces/build-small-hackathon/lease-lens

GitHub: https://github.com/bO-05/lease-lens

Model: https://huggingface.co/giladam01/lease-lens-legal-3b

GGUF: https://huggingface.co/giladam01/lease-lens-legal-3b-gguf

왜 소형 모델로 이것을 구축했나요?

이 문제에 있어 소형 모델 (small-model) 제약은 단순한 해커톤 규칙이 아닙니다. 그것은 제품의 일부입니다.

계약서에는 개인 주소, 결제 정보, 비즈니스 조건 및 개인 정보가 포함될 수 있습니다. 사용자는 임대차 계약에 명백한 리스크가 있는지 이해하기 위해 그 텍스트를 폐쇄적인 외부 LLM API로 보낼 필요가 없어야 합니다.

Lease Lens는 Hugging Face Space 내부에서 모델을 실행하며, 로컬 llama.cpp / Ollama 사용을 위한 GGUF 빌드도 제공합니다. 이 앱은 외부 LLM API를 호출하지 않습니다.

이는 프로젝트에 명확한 목표를 부여합니다:

  • 1차 계약 리스크 검토용으로 충분히 유용할 것
  • 제한된 환경에서도 실행 가능할 만큼 작을 것
  • 정확한 근거를 제시할 수 있을 만큼 근거가 확실할 것 (grounded)
  • 확인하지 않은 부분은 솔직하게 말할 수 있을 것

기능 (What it does)

이 앱은 다음과 같은 일반적인 계약 리스크 카테고리를 점검합니다:

  • 자동 갱신 (automatic renewal)
  • 조기 종료 위약금 (early termination penalties)
  • 임대료 또는 가격 인상 (rent or price increases)
  • 연체료 및 벌금 (late fees and penalties)
  • 보증금 또는 선납 조건 (deposit or prepayment terms)
  • 경업 금지 또는 독점권 조항 (non-compete or exclusivity language)
  • 지식재산권 양도 (IP assignment)
  • 책임 및 면책 (liability and indemnification)
  • 유지보수 또는 수리 부담 (maintenance or repair burden)
  • 중재, 배심원 재판 포기, 집단 소송 포기 또는 준거법 (arbitration, jury waiver, class-action waiver, or governing law)

탐지된 모든 플래그(flag)에 대해 Lease Lens는 다음을 보여줍니다:

  • 조항 카테고리
  • 리스크 수준
  • 정확한 인용 텍스트
  • 해당 내용이 중요한 이유
  • 쉬운 영어로 작성된 반박 제안 (pushback suggestion)
  • 원본 계약 텍스트 내 하이라이트

그 후, 근거가 확보된 플래그들을 바탕으로 협상 이메일 초안을 작성할 수 있습니다.

이는 법률 자문이 아닙니다. 이는 검토 보조 도구입니다: 근거가 우선이며, 사용자의 판단이 그다음입니다.

모델 (The model)

출시된 모델은 미세 조정(fine-tuned)된 Llama 3.2 3B 법률 추출 모델입니다.

저는 CUAD 스타일의 법률 조항 추출 데이터로 미세 조정을 진행했으며, 동일한 설정 하에 100개의 CUAD 추출 테스트 항목(held-out items)으로 평가를 수행했습니다.

주요 결과는 다음과 같습니다:

모델F1Exact match
Llama 3.2 3B base0.1190.010
...

3B 미세 조정 모델은 기본 3B 모델 대비 F1 점수를 약 +242% 향상시켰으며, 동일한 테스트 항목에서 제가 직접 만든 8B 미세 조정 모델마저 능가했습니다.

이것이 제가 이 프로젝트에서 가장 좋아하는 부분입니다: 크기가 작다고 해서 기본적으로 성능이 떨어지는 것은 아니었습니다. 특정 추출 작업에 있어서는, 튜닝된 3B 모델만으로도 충분히 유용해질 수 있었습니다.

똑똑해 보이는 것보다 근거(Grounding)가 더 중요합니다

첫 번째 버전에는 중요한 실패 모드(failure mode)가 있었습니다: 주로 긍정적인 예시(positive examples)로 학습되었을 때, 모델이 존재하지 않는 조항 유형까지 과도하게 추출하는 현상이 발생했습니다. 즉, 무언가를 찾아내려는 의욕이 너무 앞섰던 것입니다.

따라서 이 앱은 생성(generation) 결과만을 신뢰하지 않습니다.

Lease Lens는 모델을 결정론적 가드레일(deterministic guards)로 감싸 보호합니다:

  1. 인용문은 계약서에 있는 그대로(verbatim) 나타나야 합니다.
  2. 중복되거나 거의 동일한 인용문은 제거됩니다.
  3. 인용문은 해당 조항 카테고리와 관련된 용어를 포함해야 합니다.
  4. UI는 커버리지(coverage)를 명시합니다: 얼마나 많은 조항 그룹이 확인되었고, 얼마나 많은 텍스트가 읽혔는지 보여줍니다.

긴 계약서의 경우, 앱은 처음 80k(8만) 자를 읽고, 텍스트를 중첩되는 윈도우(overlapping windows)로 분할하며, 각 조항 카테고리를 관련 키워드가 포함된 윈도우로만 라우팅(routing)한 뒤, 배치 생성 호출(batched generation call)로서 검사를 실행합니다.

이를 통해 출력 결과는 덜 마법 같아지지만, 훨씬 더 조사 가능(inspectable)해집니다. 사용자는 인용문을 확인하고, 하이라이트된 원문 텍스트를 보며, 그것이 중요한지 여부를 결정할 수 있습니다.

단순한 장난감 예시가 아닌 실제 계약서

Space에는 SEC EDGAR 공시 자료에서 가져온 실제 체결된 상업용 임대차 계약서가 포함되어 있습니다.

벤치마크 점수만으로는 충분하지 않기 때문에 이는 매우 중요합니다. 데모는 짧은 합성 예시(synthetic examples)에서는 좋아 보일 수 있지만, 실제 법률 문서에서는 무너질 수 있습니다.

내장된 예시에는 다음이 포함됩니다:

  • 조지아(GA)주 알파레타(Alpharetta)의 사무실 임대차 계약서
  • 매사추세츠(MA)주 보스턴(Boston)의 사무실 임대차 수정 계약서
  • 텍사스(TX)주 애디슨(Addison)의 긴 사무실 임대차 계약서

보스턴 예시는 빠른 데모를 보여주기에 좋습니다. Lease Lens는 3개의 근거 있는 플래그(grounded flags)를 찾아내고, 정확히 $125,301.33 보안 보증금 조항을 포착합니다.

애디슨 예시는 스트레스 테스트(stress test)입니다. 긴 텍스트, 부분적인 커버리지, 그리고 왜 UI가 단순히 챗봇의 답변이 아닌 증거 우선(evidence-first) 방식이어야 하는지를 보여줄 만큼의 충분한 복잡성을 갖추고 있습니다.

UI

처음에는 Gradio 앱으로 시작했지만, 최종 제출물은 일반적인 데모처럼 보이기보다 집중된 도구처럼 느껴져야 했습니다.

현재 UI는 "레드라인 법률 증거 데스크(redline legal evidence desk)" 역할을 합니다:

  • 실행 시 기본적으로 실제 SEC 임대차 계약서가 로드됩니다.
  • 공시 자료 로드, 분석, 반박 초안 작성(draft pushback)으로 이어지는 명확한 3단계 경로를 제공합니다.
  • GPU 호출이 시작되기 전 명시적인 분석 중 표시기(analyzing indicator)를 보여줍니다.
  • 점수 인장이 포함된 리스크 사건 기록부(risk docket)를 제공합니다.
  • 그룹화된 증거 카드(evidence cards)를 제공합니다.
  • 플래그 옆에 하이라이트된 계약서 텍스트를 표시합니다.
  • 협상 서신 패널을 제공합니다.

목표는 판사가 1분 이내에 제품의 전체 경로를 이해할 수 있도록 하는 것입니다:

  1. Space를 엽니다.
  2. 'Analyze contract'를 누릅니다.
  3. 리스크 사건 목록(risk docket)을 확인합니다.
  4. 강조된 인용구를 검증합니다.
  5. 반박(pushback) 이메일 초안을 작성합니다.

Modal, GGUF, 그리고 Codex

v2.5 학습 경로와 스모크 테스트(smoke verification)를 위해 Modal을 사용했습니다.

스모크 테스트(smoke run)에는 A100-40GB를 사용하였으며, 400개의 양성(positives) 사례와 100개의 합성된 NONE 사례로 구성된 CUAD 스모크 분할 데이터셋을 로드하여 60 스텝(steps) 동안 학습을 진행했고, 약 160초 만에 깔끔하게 완료되었습니다. 저는 게시된 모델을 덮어쓰지 않고 Modal 경로를 검증할 수 있도록 해당 실행을 --no-push 증거로 남겨두었습니다.

저장소(repo)에는 학습 스크립트도 포함되어 있습니다:

https://github.com/bO-05/lease-lens/blob/main/training/finetune_legal_3b_modal_v2.py

로컬 사용을 위해 GGUF 빌드를 게시했습니다:

ollama pull hf.co/giladam01/lease-lens-legal-3b-gguf

또한 코딩 에이전트(coding agent)로 OpenAI Codex를 사용하여 제출물을 구축 및 마무리했습니다. 공개된 GitHub 히스토리에는 Codex가 기여한 커밋(commits)이 포함되어 있으며, 저장소에는 Codex 빌드 로그가 포함되어 있습니다:

https://github.com/bO-05/lease-lens/blob/main/docs/codex-build-log.md

다음에 개선하고 싶은 점

여전히 명확한 다음 단계들이 남아 있습니다:

  • 더 나은 PDF 인제스션 (PDF ingestion)
  • 출시된 모델의 더 강력한 기권 (abstention) 동작
  • 더 많은 홀드아웃 (held-out) 실제 계약서
  • 조항별 캘리브레이션 레이어 (clause-specific calibration layer)
  • 리스크 허용 범위에 대한 더 명확한 사용자 제어 기능
  • GGUF 경로를 중심으로 한 더 풍부한 오프라인 패키징

저에게 얻은 큰 교훈은, 제품이 모델에게 변호사가 되어달라고 요구하지 않는다면 작은 법률 모델도 유용할 수 있다는 점입니다.

추출(extract)하도록 요청하세요. 인용구를 근거(ground)로 제시하세요. 증거를 강조하세요. 한계를 보여주세요. 결정은 인간이 내리게 하세요.

그것이 Lease Lens의 형태입니다.

데모(Demo): [https://youtu.be/M-v3OAKO5-k]

라이브 스페이스(Live Space): [https://huggingface.co/spaces/build-small-hackathon/lease-lens]

GitHub: [https://github.com/bO-05/lease-lens]

모델(Model): [https://huggingface.co/giladam01/lease-lens-legal-3b]

필드 노트(Field notes): [https://huggingface.co/blog/giladam01/lease-lens-article]

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0