Design the personalization layer (B-3)
v1 doesn't train a custom model: it retrieves the closest-matching past messages from the person's own history and feeds them as few-shot exemplars to the same prompt contract generate_draft.py already implements, via the hosted Gemini call. Narrows the AI-Hub base corpus's role to evaluation and future on-device distillation, since a hosted LLM already covers general Korean fluency.
This commit is contained in:
parent
7307cb56bb
commit
623f850ed1
|
|
@ -125,6 +125,8 @@
|
|||
아직 별개로 필요 — `poc-plan.md` "필요한 것" 참고)
|
||||
- [x] 라벨 없는 원천 대화 34,030건 추가 확보 — `poc/tone-corpus/build_unlabeled_corpus.py`로
|
||||
`unlabeled.jsonl` 정리 (화행/슬롯 라벨 없음, 순수 언어모델링용)
|
||||
- [x] 개인화 레이어 설계 구체화 — `tech-design.md` §2-1 (v1은 커스텀 학습 없이 과거 발화 검색 +
|
||||
few-shot, 기반 코퍼스는 평가/v2 온디바이스 증류용으로 역할 한정)
|
||||
- [x] 응답 초안 생성기 프로토타입 — `poc/tone-corpus/generate_draft.py` (말투 예시 + 대화 맥락 →
|
||||
LLM 호출로 초안 생성, 에스컬레이션 케이스는 `[ESCALATE]`로 거절). API 키 없이 코퍼스 실제
|
||||
대화로 프롬프트 구성까지만 확인함 — 실제 자동 호출은 `ANTHROPIC_API_KEY` 설정 후 가능
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@
|
|||
일반 톤 생성 모델을 먼저 학습/평가할 수 있게 정리함 — [`poc/tone-corpus/`](../poc/tone-corpus/)
|
||||
참고. 이건 개인화 검증(위 방법론)을 대체하지 않는다 — 익명 화자쌍의 일반 대화라 "내 말투 같다"는
|
||||
질문에는 답을 못 준다. 개인화 검증은 여전히 실제 참가자의 대화 샘플이 필요하다.
|
||||
- **개인화 메커니즘**: v1은 커스텀 모델 학습이 아니라 그 사람의 과거 발화를 검색해 few-shot으로
|
||||
주입하는 방식 — `tech-design.md` §2-1에 구체화. PoC #1에서 수집한 참가자 샘플이 바로 이 메커니즘의
|
||||
"말투 예시"가 된다.
|
||||
|
||||
## PoC #3 — 사칭/신뢰 수용성 (분신 뱃지·거부권 UX)
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,30 @@
|
|||
서버 왕복 지연이나 서버 장애에 영향받지 않아야 안전선이 항상 지켜진다.
|
||||
- **대화방 저장/릴레이는 서버.** 멀티 디바이스 동기화, 상대방에게 메시지를 전달하는 기본 기능.
|
||||
|
||||
### 2-1. 개인화 레이어 — 실제로 어떻게 "그 사람 말투"가 되는가
|
||||
|
||||
v1에서는 커스텀 모델을 새로 학습하지 않는다. 대신 **검색 기반 few-shot**으로 개인화한다 —
|
||||
[`poc/tone-corpus/generate_draft.py`](../poc/tone-corpus/generate_draft.py)가 이미 구현한
|
||||
"말투 예시 + 대화 맥락 → LLM 호출" 방식을 그대로 쓰되, 말투 예시를 고정 목록이 아니라
|
||||
**그 순간 대화와 가장 비슷한 과거 발화 5~8개를 그 사람의 메시지 이력에서 검색해 넣는다.**
|
||||
|
||||
1. **온디바이스**: 사용자의 과거 메시지(온보딩 시 임포트한 50~100개 + 계속 쌓이는 실사용 이력)를
|
||||
기기 내에서만 저장. 원문은 서버로 안 올라간다 (§ 위 원칙과 동일)
|
||||
2. **검색**: 지금 답장해야 할 맥락과 유사한 과거 발화를 찾는다 — v1은 가벼운 키워드/최근성
|
||||
기반 검색으로 시작하고, 임베딩 기반 검색은 필요성이 확인되면 추가한다 (지금부터 임베딩
|
||||
인프라를 먼저 만들지 않는다)
|
||||
3. **생성**: 검색된 예시 + 최근 대화 맥락을 `generate_draft.py`와 같은 프롬프트 계약으로 서버
|
||||
LLM(Gemini)에 보내 초안 하나를 받는다. 온디바이스로 충분해지면 이 호출을 온디바이스 모델로
|
||||
교체하되, 프롬프트 계약(예시+맥락 in, 초안 1개 out)은 그대로 둔다
|
||||
|
||||
**기반 코퍼스(AI-Hub 14.2만 건, `poc/tone-corpus/`)의 역할은 이 개인화 메커니즘 자체가 아니다.**
|
||||
호스팅된 LLM(Gemini)이 이미 일반적인 한국어 대화 유창성을 갖고 있어서, v1에 별도로 코퍼스를
|
||||
학습시킬 필요가 없다. 이 코퍼스는 두 가지로만 쓴다:
|
||||
- **평가**: 검증셋으로 "일반적인 한국어 SNS 대화로서 얼마나 자연스러운가"를 벤치마크 (개인화
|
||||
여부와 무관한 기초 품질 체크 — `poc/tone-corpus/README.md` "샘플 검증"이 그 예)
|
||||
- **v2 이후 온디바이스 증류 대비**: 배터리/지연/프라이버시 압박으로 자체 경량 모델이 필요해지면,
|
||||
이 코퍼스가 그 모델의 기반 학습 데이터가 된다. v1 시점에는 착수하지 않는다
|
||||
|
||||
## 3. 자율성 엔진 (L0~L2)
|
||||
|
||||
1. 수신 메시지 → 에스컬레이션 판정기 먼저 통과 (금전/약속 확정/민감 키워드+의도 분류)
|
||||
|
|
|
|||
Loading…
Reference in New Issue