76 lines
3.2 KiB
Markdown
76 lines
3.2 KiB
Markdown
# GPT 판례 판단 연동
|
|
|
|
## 동작 구조
|
|
|
|
`POST /v1/plagiarism/detect`는 다음 순서로 법적 검토 보조 신호를 만든다.
|
|
|
|
1. 등록 코퍼스에서 유사 문서와 증거 구간을 찾는다.
|
|
2. `LegalRiskEngine`이 저작물 유형과 법적 태그로 등록 판례 Top 5를 고른다.
|
|
3. GPT Judge가 탐지 증거와 Top 5 판례만 비교한다.
|
|
4. 서버가 Structured Outputs 스키마와 판례 ID를 검증하고, 사람 검토가 해제되지 않도록 `review_required=true`를 강제한다.
|
|
5. 호출 실패·형식 오류·미등록 판례 ID가 있으면 규칙 기반 결과로 복귀한다.
|
|
|
|
GPT는 전체 판례 545건을 한 번에 받지 않으며 법률상 침해를 확정하지 않는다.
|
|
|
|
## 설정
|
|
|
|
기본값은 비활성이다. 원고의 증거 구간이 외부 API로 전송되는 것을 승인한 환경에서만
|
|
다음 값을 설정한다.
|
|
|
|
```dotenv
|
|
OPENAI_API_KEY=...
|
|
USE_LLM_LEGAL_JUDGE=true
|
|
OPENAI_JUDGE_MODEL=gpt-4o-mini
|
|
LLM_JUDGE_TIMEOUT_SECONDS=20
|
|
LLM_JUDGE_MAX_EVIDENCE_CHARS=4000
|
|
```
|
|
|
|
OpenAI 응답 저장은 `store=false`로 요청한다. 전송되는 원고 인용문의 총 길이는
|
|
`LLM_JUDGE_MAX_EVIDENCE_CHARS`로 제한된다. API 키가 없으면 판례 Judge는 활성화되지 않는다.
|
|
|
|
## 응답 필드
|
|
|
|
```json
|
|
{
|
|
"legal_risk": {
|
|
"status": "review_required",
|
|
"judgment_method": "llm",
|
|
"llm_verdict": "likely",
|
|
"llm_confidence": 0.82,
|
|
"llm_review_required": true,
|
|
"precedent_ids": ["2012다73493"],
|
|
"llm_matched_precedent_ids": ["2012다73493"],
|
|
"supporting_reasons": ["..."],
|
|
"counter_reasons": ["..."],
|
|
"missing_factors": ["..."],
|
|
"judge_model": "gpt-4o-mini",
|
|
"judge_prompt_version": "legal-judge-v2",
|
|
"judgment_summary": "2012다73493 판례의 판단 기준과 탐지 증거를 비교한 결과, 표현 일치 범위가 크다는 사유로 저작권 침해가 의심되어 추가 검토가 필요합니다."
|
|
}
|
|
}
|
|
```
|
|
|
|
- `judgment_method=llm`: GPT 판단과 서버 검증이 완료됨
|
|
- `judgment_method=rule_based`: 기능이 비활성 또는 판단할 매칭·판례가 없음
|
|
- `judgment_method=rule_fallback`: GPT 호출 또는 검증 실패로 규칙 결과 사용
|
|
- `precedent_ids`: 규칙 엔진이 검색한 판례 Top 5
|
|
- `llm_matched_precedent_ids`: GPT가 실제 근거로 선택한 판례. Top 5 밖의 ID는 거부됨
|
|
- `llm_verdict`: `likely`, `unlikely`, `insufficient_evidence` 중 하나
|
|
- `judgment_summary`: 검증된 사건번호와 핵심 사유를 결합한 사용자 표시용 판례 의견
|
|
|
|
사용자 화면에는 모델명이나 `judgment_method`를 주 문구로 표시하지 않는다. 먼저
|
|
`judgment_summary`를 보여주고 관련 사건번호, 지지·반대 근거, 추가 확인사항을 함께 표시한다.
|
|
|
|
`llm_confidence`는 GPT 응답의 자기평가 값이며 법적 침해 확률이나 통계적으로 보정된
|
|
확률이 아니다. 운영 감사 시에는 모델명, 프롬프트 버전, 입력 판례 ID와 결과를 함께
|
|
보관해야 한다.
|
|
|
|
## 검증
|
|
|
|
```bash
|
|
python3 -m pytest tests/test_legal_risk.py -q
|
|
```
|
|
|
|
실제 OpenAI 호출은 테스트에서 수행하지 않는다. 운영 전 별도 검증 세트에서 모델별
|
|
일치율, `insufficient_evidence` 비율, 사람 검토자와의 불일치를 측정한다.
|