Jev 조례 인용 검증 게이트
September 20, 2026 · View on GitHub
AI가 조례에 대해 답한 문장이 인용한 조문에 실제로 근거하는지를 Jev(TypeSafe AI System One 모델)에게 판정시키는 실험입니다. 생성 모델을 대체하는 게 아니라, 생성된 답의 근거를 별도 모델이 채점하는 "게이트" 한 칸을 시험합니다.
- 1차 20쌍(조례 1건): 20/20 →
결과_20260920.md - 2차 100쌍(조례 5건·6유형): 97/100, 모순 31/31, 통과시키면 안 될 것을 통과시킨 건 0 →
결과100_20260920.md - 지방자치혁신연구원, 2026-09-20. 1회 관찰이며 성능 주장이 아닙니다.
무엇이 들어 있나
| 파일 | 내용 |
|---|---|
dataset.json | 1차 20쌍. 광진구 주민참여예산제 운영 조례 6개 조문 + 답변 20문장 + 정답 |
dataset100.json | 2차 100쌍. 서울시·경기도·강남구·수원시·순천시 조례 17개 조문 + 답변 100문장 + 정답·유형 |
build100.py | dataset100.json을 만든 스크립트(조문 원문 포함). 문장을 바꿔 다시 만들 때 |
run.mjs | 실행기. 쌍마다 Choice{지지·모순·무관} + Boolean{조문만으로 성립하는가}를 묻고 집계 |
result.json / result100.json | 실측 원자료(확률 분포·토큰) |
조문은 법제처 국가법령정보센터 자치법규를 그대로 옮겼고, 실험용으로 일부 항·호만 발췌했습니다. 개인정보·비공개 자료는 없습니다.
돌리는 법
npm install
인증은 둘 중 하나:
- Vercel AI Gateway:
AI_GATEWAY_API_KEY=vck_...(대시보드 → AI Gateway → API Keys). 2026-09-25까지 Jev 무료 프로모션. Vercel 프로젝트가 있으면vercel env pull .env로 받은VERCEL_OIDC_TOKEN도 됩니다(12시간 유효). - (준비 중) TypeSafe 직접 키는 이 스크립트가 아직 지원하지 않습니다.
@typesafe-ai/sdk로 바꾸려면evaluate호출부만 교체하면 됩니다.
node --env-file=.env run.mjs # 1차 20쌍
node --env-file=.env run.mjs dataset100.json result100.json # 2차 100쌍
게이트웨이 한도가 30요청/분이라 쌍당 2.1초 간격을 두고, 429가 오면 20초 단위로 재시도합니다. 100쌍 약 6분, 입력 8만 토큰(약 $0.0035).
결과 읽는 법
콘솔 한 줄 = 한 쌍: ID 유형 정답 → Jev판정 grounded=근거성 OK|MISS. 마지막 줄이 집계입니다.
jev_choice: 지지/모순/무관 중 최댓값.jev_probs가 분포.grounded: "이 답변은 인용된 조문만으로 성립하는가"의 참 확률. 우리 실측에서는 0.5 미만이면 사람 검토가 맞았습니다(모순·무관은 전부 0.1 이하, 지지는 대부분 0.8 이상).confidence필드는 분포 집중도이지 정확도가 아닙니다. 확률 분포를 보십시오.
알려진 한계·주의
- 답변에 기관명·조례명을 쓰면 조문 발췌에 그 이름이 없어 근거성이 떨어집니다. 실제로 쓸 때는 state에 조례명·기관명을 함께 넣으십시오.
- Jev의 주 학습 언어는 영어입니다. 한국어 품질은 이 실험 범위(조례 5건, 합성 문장) 안에서만 관찰된 것입니다.
- 국외 API입니다. 민원 원문·개인정보를 state에 넣지 마십시오. 공개 조문과 합성 문장만.
- 확률은 보정된 정답률이 아닙니다. 업무별로 정답과 대조해 임계를 정해야 합니다.
자기 조례로 해보려면
build100.py의 A(조문 사전)와 add(...) 줄을 바꾸고 python build100.py를 돌리면 새 데이터셋이 나옵니다. add(유형, 조문키 또는 [조문키, 조문키], 정답, 답변문장). 정답은 지지/모순/무관 셋 중 하나입니다.
문의: 지방자치혁신연구원 원성묵 (jachinews.kr)