임상시험 프로토콜 → Statistical Analysis Plan (SAP) 초안 자동생성 파이프라인
KCL(King’s College London) 오픈소스 sap-kcl를 기반으로, 유한양행 SAP 양식에 맞는 초안을 자동생성합니다.
| 기능 | 설명 |
|---|---|
| 46개 SAP 섹션 자동생성 | 프로토콜(PDF/DOCX)에서 모든 SAP 섹션을 한 번에 생성 |
| Targeted-Context | 프로토콜을 126개 섹션으로 분할, 태그별 관련 부분만 주입 (88% 컨텍스트 축소) |
| JSON 구조화 출력 | LLM이 JSON으로 응답 → python-docx가 paragraph 단위 서식 적용 |
| 프로토콜 테이블 자동 삽입 | Objectives, Schedule of Activities, PK Parameters 등 12개 테이블 추출·삽입 |
| SKIP 마커 + 노란 하이라이트 | 프로토콜에 정보 없는 섹션은 억지로 쓰지 않고 노란색으로 표시 |
| Instruction 박스 자동 제거 | 양식의 회색 가이드 박스 37개를 최종 SAP에서 제거 |
| PK/PD 일반화 | Phase 1 시험도 지원 (efficacy 대신 PK/PD 분석 자동 전환) |
| 재시도 로직 | LLM 빈 응답 시 최대 2회 자동 재시도 |
Protocol (PDF/DOCX)
│
├─ ProtocolSegmenter ──── heading 기반 126개 섹션 분할
│
├─ ProtocolTableExtractor ─ 핵심 테이블 12개 추출 (DOCX만)
│
▼
ContextAssembler ──── SAP 태그별 관련 섹션 조립
│ + 공통 컨텍스트 (Protocol Synopsis)
▼
LLM (Claude Opus / Sonnet / Haiku)
│ ┌─ 일반 섹션: 1단계 JSON 생성
│ └─ 고복잡도 섹션: 2단계 (근거 추출 → 생성)
▼
JsonSapRenderer
│ ┌─ JSON → paragraph 단위 docx 렌더링
│ ├─ 프로토콜 테이블 삽입
│ ├─ [SKIP] → 노란 하이라이트 변환
│ ├─ 파란색 텍스트 → 검정 변환
│ └─ Instruction 박스 제거
▼
SAP.docx
5회 반복 실행, 9개 검증 기준 — 45/45 ALL PASS
| Run | 시간 | Paragraphs | Tables | DOCX | SKIP 마커 |
|---|---|---|---|---|---|
| 1 | 84s | 359 | 19 | 384KB | 21 |
| 2 | 69s | 348 | 19 | 385KB | 25 |
| 3 | 79s | 334 | 19 | 384KB | 21 |
| 4 | 86s | 381 | 19 | 385KB | 22 |
| 5 | 78s | 385 | 19 | 386KB | 28 |
상세 보고서: 검증 보고서
git clone https://github.com/minpark0427/YH-SAP.git
cd YH-SAP
python3 -m venv YH-SAP-venv && source YH-SAP-venv/bin/activate
pip install -r sap-kcl/requirements.txt
pip install python-docx docxtpl PyPDF2 anthropic python-dotenv
cd sap-kcl
python -m WriteSAPs.yuhan_sap_json ../프로토콜.docx --test
자세한 설치 방법은 설치 가이드를 참고하세요.