Conversation
- pipeline/: 모델-불가지 chat() + 프롬프트파일 단계, generate(D1~3)→metrics(D4 구역별 ROUGE/BERTScore)→judge(D5 문장별 근거판정: 환각률·citation precision)→report(E1·4 격자). own_metrics(E2, C 함정셋 대기)·interrater(E3 kappa) 포함 - prompts/: baseline→improve1~3(자기검증)+soap(콜론 배너 S/O/A/P+세부헤더)+judge - scripts/serve_vllm.sh: 로컬 서빙 (flashinfer 샘플러 off 내장) - 2-환경 분리: 생성 .venv-vllm(GPU) / 평가 .venv(CPU), preds CSV 핸드오프 - E2E 스모크 통과 (ACI valid 3건 × Qwen2.5-7B, 5단계 전부) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- pipeline/translate.py: 배너·[T#]·헤더는 코드 고정, 순수 문장만 LLM 번역 (Llama-3.1-8B; Qwen-7B는 중국어 누출로 탈락). 입력 번역 금지 — gold 채점·[T#] 근거·환각검증이 전부 영어 기반
- docs/correspondence_aci-valid_qwen7b.{md,html}: 입력×gold×5단계 출력 대응집 (HTML은 S/O/A·P 색 그룹핑)
- docs/progress_report_2026-07-17.tex: 진행보고서 (PDF는 gitignore)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 대화 붙여넣기 → S/O/A/P 색 구역 렌더, [T#] 근거 하이라이트, EN/KO 토글, 샘플 로더 - 프롬프트 편집 박스로 즉석 A/B (승패 판정은 배치평가가 진실) - 실행: .venv/bin/uvicorn web.server:app --port 8000 (vLLM :8001 생성·:8002 번역 필요) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 3분할 보드: 진료 대화(의사/환자 채팅 버블) | 개선판 SOAP | Baseline 동시 표시 - 근거 추적: 노트 문장 호버/클릭 → 인용된 발화 버블과 SVG 곡선 연결(클릭=고정, 스크롤 추적), 발화 클릭 → 그 발화를 인용한 문장 역추적, [T#] 칩 클릭 → 원문 스크롤 - 목업 범례 구현: [미확인] 회색 박스, hedge(확신도 낮은 표현) 노란 표시, 환각(judge D5 연동 예정)은 자리만 - dialogue.py: 한글 화자 태그(의사:/환자:/보호자: 등) 파싱 지원 - server.py: 구조화 turns 반환 + 소형모델 노트 반복생성 감지·절단(truncated_repeat, UI 표시 전용 — 배치 평가는 원본 그대로) - E2E 확인: 한국어 대화 → soap(인용·미확인·한글번역) + baseline(비구조 U) 병렬 생성 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 인용전용 프래그먼트를 같은 줄 문장들에 재부착 + 다중 인용블록 병합 - 수정 전 cite_precision 0.21은 전부 이 아티팩트(수정 후 전 모델 0.96~0.99) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- /translate_turns: 발화별 한글 번역(표시 전용 — 모델 입력·채점·근거검증은 원문 유지,
입력번역 금지 원칙과 양립). 한국어 대화는 자동 스킵. 프론트는 비동기로 도착 시 버블 교체
- group_soap: 명시적 배너("S: SUBJECTIVE" 등) 있으면 배너 기준 분할로 4구역 전부 반환
(빈 구역은 "출력 없음" 카드) — 기존 tagger 추정은 O가 세부헤더 없으면 실종되고
A·P가 한 덩어리(assessment_and_plan)라 화면에서 AP 병합되던 문제 해결
- _split_ap: "P: PLAN" 배너 인식 추가 (tagger 폴백 경로용)
- 채점(pipeline.metrics)은 변경 없음 — 공식 tagger 기준 유지, 화면 분할만 배너 우선
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- /judge_note: D5와 동일 로직·프롬프트로 문장별 근거 판정. 노트가 뜬 뒤 비동기 도착
→ 환각 문장 빨강+⚠칩, 패널 헤더에 환각률·판정 문장수 표시(개선판·baseline 둘 다)
- 판정은 EN 노트 기준 → (구역키:줄번호) 좌표로 부착, KO 표시는 줄수 보존 번역이라
동일 좌표 재사용(줄수 불일치 구역은 표시 생략)
- judge.split_sentences: soap 콜론 배너("A: ASSESSMENT" 등)를 문장으로 오판정하던 것
스킵 — 환각률 노이즈 제거(기존 soap 단계 judge 수치는 재판정 필요)
- config.STAGES에 label: 개선1=프롬프트 엔지니어링(규칙 강화) / 개선2=컨텍스트
엔지니어링([T#] 구조화) / 개선3=Test-Time Scaling(자기검증) / soap=최종 규격.
키는 파일명·CLI 호환 위해 유지, 웹 드롭다운·패널 헤더는 라벨 표시
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
사용자 발견: 환자 버블에 환자가 말한 적 없는 내용 — 원본 태그는 깨끗(D2N068 doctor37/patient36), 범인은 표시용 번역기. Llama-8B가 "sure ." 같은 초단문에 혈압·흉통 임상 서사를 통째로 창작(T5), 임상문서용 지시문에 일상 대화를 넣으면 내용 발명(T2 "심장마비"), 반복 루프(T9 lately×15). - 백채널 사전(mm-hmm/okay/sure 등 → 고정 한글), 사전 밖 초단문(<12자)은 원문 유지 - 과대출력(원문 4배·60자 초과)·토큰 반복 루프 감지 → 원문 유지 - TR_TURN_SYS 분리: 대화 발화 전용(존댓말·정보 추가 금지) — 창작 클래스 제거 확인 - 버블 호버 시 영어 원문 툴팁(번역 검증 통로) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… 결과 문서·README 갱신 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 흰 카드+여백 확대, 시스템 한글 폰트 스택, 본문 13.3px/행간 1.6대로 상향
- SOAP 섹션: 목업처럼 전 섹션 통일 파란 타이틀("S — Subjective"), 색 채움 배지 제거
- 인용 칩: 목업의 동그란 번호(①풍) — 파란 원형 테두리 숫자, 호버 툴팁
- hedge=노란 밑줄(배경칠 제거), 미확인=점선 테두리 회색 박스, 환각=빨간 텍스트+⚠칩
- 채팅: 의사 버블 진파랑 채움→연블루(어두운 텍스트, 목업), 이름 볼드+T# 메타,
하이라이트는 목업의 연노랑
- 헤더: 남색 바→흰 바+파란 로고 마크, 범례는 가운데 점 스타일
- 기능 변화 없음(JS 훅 클래스 유지) — CSS·마크업만
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 런 토큰(RUN)으로 이전 실행의 늦은 judge/번역 응답이 새 결과를 덮어쓰던 레이스 차단 - 패널 헤더 단계 라벨을 생성 시점 단계로 고정(이후 드롭다운 변경과 무관) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- vLLM response_format(json_schema)로 S/O/A/P 7필드+문장별 citations(대화 턴 범위의 정수만 디코딩 가능)를 스키마 강제 → 배너 붕괴·반복 생성·범위 밖 인용이 디코딩 레벨에서 불가능 - pipeline/structured.py: 스키마 빌더(대화 길이 반영)+JSON→배너 텍스트 렌더러 (빈 필드=[미확인] 삽입도 코드 보장) → metrics/judge/웹 파서 그대로 소비 - 함정 실측 2건: legacy guided_json은 vLLM 0.25에서 무시됨(response_format만 강제됨) / json schema의 pattern 정규식은 문자열 내부 무한폭주 유발 → 미사용 - valid20 결과: qwen7b 20/20 형식성공·환각 2.5%·cite_prec 0.974, llama8b 20/20 (프롬프트 soap의 R1 0.419 붕괴 → 0.478 회복) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- pipeline/revise.py: judge RED 문장을 drop 또는 rewrite(재작성→재판정 통과 시에만 유지, 실패 시 drop). 배너·헤더·[미확인] 줄은 수술 대상에서 보호, 수술로 빈 구역엔 [미확인] 삽입. 전후 환각률 요약 출력 - 웹 /revise_note + 개선판 패널 '⚕ 환각 자동 교정' 버튼 → 원본/교정본 토글, 교정본도 judge 재판정 마킹·환각률 표시 - 자기검증(improve3, 무익 판정)과 대비: 분리된 검증기 신호 기반 교정 - 스모크: 환각률 0.38→0.13, 플랜 보일러플레이트가 근거 인용 달린 문장으로 재작성 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- pipeline/cheap_verifiers.py: 함정셋(정답 라벨) 동일 표본·동일 방법론에서 judge(32B) vs lexical(token-F1) vs embedding(MiniLM) vs 모델간 합의를 정면 비교 — gold 오탐율을 judge와 동일하게 보정한 운영점에서 교란 유형별 검출률 - docs/frontend_roadmap.md: 점검(수정 6건·보류 한계)+P0~P2 로드맵+React 승격 기준 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- A 구조강제: llama 붕괴 해소(커버리지 +84%·R1 +4.1pt), qwen O-results +17pt, 환각 무해 - B judge교정: 환각 1.58→0.20%(-87%), rewrite 모드 ROUGE 손실 ~0 - C ablation: 정밀 교란은 저비용 신호 검출 0%(쌍AUC≈0.5) → 32B judge 필요성 실증 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 컨텍스트: [patient_guest]가 patient로 뭉개지던 버그 수정 → guest 역할 분리 (transcript "guest:", 웹 보호자 버블) — '타인 정보 혼입' 노이즈의 구조적 원인 제거, 고은 noise100의 24%가 해당. 주의: 진행 중 스윕과 혼합 금지(문서 참고) - 프롬프트: soap_hard 단계 = soap v2 + RULE 5(거짓전제·자기진단·극성·조건부· 과거현재·타인정보·차트충돌 방어 7규칙) — 다연 8범주 노이즈 1:1 대응 - 검증기: judge_grounded_v2(극성 엄격+전제 배제) A/B 실측 — negation 검출 74.3→88.6%(+14.3pt), gold 오탐 +2pt. 현행 파일 교체는 보류(팀 평가 일관성) - TTS 재정의 제안 + 적용 가이드: docs/improvement_plan_day4.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…단·보호자) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 개선3 = 개선2 출력에 32B judge 교정(revise rewrite): 4모델×valid 전 지표 개선/유지 (R1 0.518→0.520, 환각 3.5→1.5%, 인용 0.976→0.987, 근거율 96.5→98.5%) - soap_fewshot_v2(고은 18예시 전체 삽입) 역효과 실측: 7B 노이즈 8→18%·32B 0.4→1.9%, R1 하락 — 예시는 실패모드 직격 소수 정예가 답, v1 유지·선별삽입 v3 권고 - 발표 그래프 5종(docs/figures/) + 결과 문서(docs/eval_ladder_day6.md) + 공유 PDF - config: soap_fewshot_v2 단계 추가 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 사다리(baseline/개선1/개선2/교정)·노이즈 3종(soap/hard/fewshot) 프롬프트 원문 수록 - 실험별 사용 데이터 정리(ACI valid 20 / 고은 형태노이즈 100 / 다연 의미노이즈 64쌍 / 고은 예시 18) - N_M12 실증: 화자 오태깅에서 7B fewshot이 A/P 발명+가짜 인용(0→55.6%), 32B는 개선 — 용량 문제 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- outputs/·reports/는 gitignore라 GPU 없이 재현되도록 그래프 수치 집계본만 -f로 커밋 - scripts/make_figures.py: --rebuild(outputs→집계) / 기본(집계본→5장 렌더) - notebooks/figures.ipynb: 실행 출력 포함 — GitHub에서 그래프 바로 확인 가능 - eval_ladder_day6.md 재현 절 갱신 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 그래프1: ACI valid+test, 사다리 4단계(soap 규격 통일) 프롬프트 전문 수록 - 그래프2: 김고은 형태노이즈 100건, 방어규칙·few-shot 전문, 7B 화자오태깅 역전 분석 - prompts/soap_nocite.txt(개선1'=규격+규칙, 인용 없음) + config 단계 등록 - revise CLI --dataset own/dysem 지원 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
실험1(ACI test 120건)·실험2(노이즈 100건) 모두 같은 5지표 × 4모델로 통일 - 실험1: 환각 4.5→1.1%, 구역정렬 0.16→0.37, 인용 0.976→0.990 단조 개선 ROUGE/BERT는 비단조 — llama의 SOAP 규격 붕괴(1593→779자)가 원인, 문서에 명시 - 실험2: few-shot이 전 지표 최선(환각 9.7→6.0%, R1 0.517→0.544), 방어규칙은 역효과 - CoT 판정 A/B: v2 규칙강화가 CoT를 지배(민감도 0.949>0.941, 오탐 0.113<0.133, 비용 1/5) - 사람 라벨 150문장: 평가자간 κ=0.154, judge는 사람보다 엄격(환각판정 과잉) - 구 그래프(fig1*·fig2*) 제거, exp1_*/exp2_* 11장으로 대체 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- docs/프롬프트전문_0723.pdf: baseline·개선1·개선2·개선3(CoT 판정)·노이즈강화·few-shot 전문 각 단계에 "직전 버전과 달라진 점" 한 문장 요약 + 상세 설명 - judge/revise/perturb에 --judge-prompt·--max-tokens·--tag, judge에 --note-workers(노트 병렬) - judge_grounded_cot2.txt(보수형 변형): 오탐 0.087로 최저지만 검출력 0.879로 하락 → 미채택 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- JUDGE_TAG 상수로 판정기별 결과 전환(생성물 scores는 공유, judge만 태그 분리) - 개선3은 교정본 자체가 판정기별로 다르므로 전체 stem에 태그 적용 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 판정기 기본값을 CoT로 교체(웹의 빨간 문장·교정이 발표와 같은 판정기 사용) - 단계 라벨을 최종 명명으로 정정: 개선1=soap_nocite, 개선2=soap, 노이즈 강화=soap_hard, Few-shot=soap_fewshot / 드롭다운 순서도 발표 순서로 - 폐기·미채택 단계(구 improve1~3, soap_strict, fewshot_v2)는 legacy 플래그로 데모에서 숨김 (CLI로는 그대로 사용 가능) - ⚕ 버튼 라벨을 "개선3 · 검증기 자동교정"으로 — 교정이 곧 개선3임을 화면에서 드러냄 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
팀원 피드백: "SOAP가 각각 더 잘 구분되게", "글씨가 조금 작다", "각각 배경색이 다르도록". - 구역별 색: 왼쪽 5px 색 띠 + 옅은 배경 + 색 배지(S/O/A/P 글자) S 파랑 / O 초록 / A 보라 / P 분홍 / 기타 회색, A·P 병합(AP)은 중간색 배경을 옅게 둔 이유 = 문장 단위 의미색(환각 빨강·인용 노랑·미확인 회색 점선)과 채도가 부딪히지 않게. 채도는 띠와 배지가 담당. - 글씨: 본문 13.3→14.6px, 구역 제목 13→15px, 대화 버블 13→14px, "출력 없음" 카드 12.3→13.4px - 구역 라벨에 한글 설명 병기(Subjective · 환자 진술 …) — 배지가 이미 알파벳을 보여주므로 라벨은 이름 역할 - 구역 배경 위에서 묻히지 않게 hover 배경·미확인 카드 배경을 흰색 계열로 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- notebooks/figures.ipynb: 기존은 docs/figures/*.png를 display만 했으나, 이제 reports/figure_data.json에서 make_figures.build_figures로 11장을 노트북 안에서 그린다(발표 그래프와 같은 데이터·같은 코드 = 동일 결과). GPU·outputs/ 없이 집계본만으로 재현. 실행 출력 포함(conda 커널). - make_figures.py: render_all의 그림 생성부를 build_figures()로 분리 — CLI(저장)와 노트북(인라인 표시)이 같은 소스를 공유. CLI 동작 불변. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
§10-D(생성)+§10-E(평가) 파이프라인 전체와 SOAP 출력 단계, 한글 번역, 웹 플레이그라운드입니다. 커밋 3개로 나눠져 있어 커밋 단위로 보시면 편합니다.
generate, baseline/improve1~3/soap 5단계) → 구역별 ROUGE/BERTScore(metrics) → 문장별 근거판정 LLM-judge(judge: 환각률·citation precision·turn match) → 비교표(report). own_metrics(C 함정셋 대기)·interrater(E3 kappa) 포함S:/O:/A:/P:콜론 배너 + 세부헤더(CC/HPI/ROS·PE/RESULTS). 사람 눈엔 SOAP 노트, section_tagger 4구역 채점도 유지검증
실행법
README「파이프라인 (D+E)」절 참고: 서빙(scripts/serve_vllm.sh) → 생성 → 채점 순.
리뷰 포인트
🤖 Generated with Claude Code