📝 한줄 요약
한국 판례를 입력하면 8개의 전문 에이전트가 실무용 해설보고서를 만드는 KorLawChestra를 로컬 모델로 실제 실행했다. 판례 분석과 PDF 생성까지는 끝났지만, 같은 실행에서 검증기가 passed:false를 반환했는데도 초기 집계 영수증이 PASS_WITH_LIMITATIONS로 표시되는 모순이 드러났다. 그래서 “에이전트가 모두 끝남”과 “법률보고서로 의존 가능함”을 분리하고, 검증 실패 시 BLOCKED / DRAFT_NOT_FOR_RELIANCE로 멈추는 헤드리스 실행기·영수증·회귀 테스트를 덧붙였다.
이 사례의 공개 상태
로컬 실행 가능한 프로토타입: 확인
샘플 판례 분석·Markdown·PDF 생성: 확인
샘플 보고서의 실무 의존 가능 상태: 아님 —
BLOCKED변호사 등 사람의 최종 법률 검토: 미실시
프로덕션 배포·외부 웹/커뮤니티 발행: 미실시
현재 발행 범위: 로컬 Lecture Recap Library 사례게시글
바쁘다면 이것만 읽어도 된다.
멀티에이전트의
8/8 done은 법률 품질 판정이 아니라 실행 상태다.PDF 파일이 생겼다는 사실보다 검증 영수증의
reliance_status가 우선해야 한다.VerifyAgent passed:false를 별도 gate로 읽지 않으면, 교정 뒤findings가 비었다는 이유만으로 결과가 잘못 통과할 수 있다.판결문 데이터셋을 쓸 때는 공식 원문과 사건번호·전문·해시를 다시 닫아야 한다.
E0/E1/I1/H1/U0처럼 원문, 재현, 추론, 가설, 미확인을 분리해야 보고서의 문장마다 사용 범위를 정할 수 있다.이 작업은 업스트림 코드를 상업 제품에 편입한 것이 아니다.
CC BY-NC 4.0조건 아래 로컬 비상업 평가를 수행했고, 수정 패치는 이 게시글에 배포하지 않는다.
🎯 이런 분께 도움이 된다
법률 문서 생성 에이전트에서 “완료”와 “의존 가능”을 구분하려는 사람
판례 RAG·요약·보고서 시스템에 출처와 검증 영수증을 붙이려는 개발자
Streamlit 데모를 배치 실행·회귀 테스트 가능한 도구로 바꾸려는 팀
로컬 LLM으로 한국어 법률 파이프라인의 구조를 검증하려는 연구자
생성물의 오류뿐 아니라 잘못된 PASS 자체를 테스트하려는 법률 AI 운영자
😫 시작점: 보고서는 만들어졌지만, 무엇을 믿어야 할지 닫히지 않았다
KorLawChestra는 판례 JSON을 입력하면 PlanningAgent가 계획을 세우고, 8개 워커가 판결문을 섹션·세그먼트·Claim·쟁점·법령·보고서로 변환하는 오픈소스 프로젝트다. Streamlit 화면에는 다음 흐름이 이미 구현돼 있었다.
판례 입력
→ PlanningAgent가 DAG 작성
→ section / segment / claim / provenance
→ issue_map / legal_ref / report_planner / report
→ VerifyAgent 검토와 부분 교정
→ 보고서·쟁점 지도·Claim·법령 탭
그림 1. 로컬에서 실제 실행한 Streamlit 입력 화면이다. 공개 판결의 사건번호·선고일·당사자 표기와 원문 일부가 보인다. 로컬 경로, API 키, 개인 비밀정보는 포함하지 않았다.
화면의 구조는 좋았다. 판례를 고르고 보고서 목표를 선택한 뒤, 계획만 수립하거나 계획과 실행을 한 번에 시작할 수 있었다.
그림 2. 실제 PlanningAgent 오케스트레이션 화면이다. 입력·목표·실행을 분리하고 보고서, 쟁점 지도, Claim·Provenance, 법령·선례 탭을 제공한다.
문제는 화면 다음이었다.
기본 문서가 대규모 OpenAI 호환 추론 서버 중심이라, 보유한 로컬 Ollama 모델로 재현하는 경로가 분명하지 않았다.
UI 실행 결과를 다른 사건에도 반복하거나 CI에서 검증할 헤드리스 영수증이 없었다.
판결문 입력만 있는 상태에서 실제 소송기록·행위시법·조문 원문까지 확인한 것처럼 읽힐 위험이 있었다.
무엇보다 에이전트 완료, 검증기 결과, 보고 서의 실무 의존 상태가 하나의 완료 신호로 뭉칠 수 있었다.
🔒 첫 번째 전환점: 모델보다 먼저 판례 원문을 닫았다
샘플 사건은 대법원 2022. 6. 30. 선고 2022다212594 판결로 정했다. 공개 데이터셋의 한 행을 바로 신뢰하지 않고 대한민국 법원 사법정보공개포털의 공식 PDF와 대조했다.
검증 결과는 다음과 같았다.
항목
결과
공개 데이터셋 행
joonhok-exo-ai/korean_law_open_data_precedents, row 85003
공식 원문
대한민국 법원 사법정보공개포털 PDF
정규화 데이터셋 전문
2,317자
공식 PDF 전문 대응 구 간
2,324자
데이터셋 coverage
0.997410
sequence ratio
0.995906
실질적 내용 차이
관찰되지 않음
관찰된 형식 차이
PDF 표지·페이지 번호·따옴표 모양
여기서 99% 이상 비슷함을 공식성으로 바꾸지 않았다. 데이터셋은 분석 입력 후보이고, 공식 판결 PDF와 그 해시는 별도 근거로 보존했다.
공개 데이터셋 행
→ 사건번호 exact match
→ 공식 판결 PDF 확보
→ NFKC·공백·페이지 표지 정규화 비교
→ 원본·정규화본 SHA-256 기록
→ 분석 입력 승인
🛠️ 두 번째 전환점: UI 데모를 재현 가능한 실행으로 바꿨다
로컬 보강판에서는 Ollama의 OpenAI 호환 /v1 엔드포인트를 사용할 수 있게 하고, 판례 1건을 선택해 명령행에서 전체 파이프라인을 실행하도록 구성했다.
실행 조건은 다음과 같이 고정했다.
model: gemma4:e4b
api_base: http://127.0.0.1:11434/v1
temperature: 0.0
seed: 7
case_number: 2022다212594
workers: 8
헤드리스 실행 결과는 한 파일이 아니라 묶음으로 저장했다.
plan.json
artifacts.json
report.json
report.md
report.pdf
verify_report.json
receipt.json
보강한 실행기는 이후 실행부터 검증 직전에 plan.pre_review.json과 artifacts.pre_review.json