모두의연구소 Persona Lab에서 psyctl이라는 도구를 만들고 있습니다.
한마디로 요약하면, Fine-tuning 없이 LLM의 성격을 바꿔보자는 프로젝트입니다.
어떤 원리인가
모델 내부의 활성화(activation)에서 “외향적인 방향”, “내향적인 방향” 같은 벡터를 뽑아낸 뒤, 추론할 때 그 방향을 더해주면 성격이 바뀝니다. Contrastive Activation Addition(CAA)이라는 기법인데, 학습 없이 벡터 덧셈만으로 행동이 달라지는 게 재밌습니다.
graph LR
A[대조 데이터셋 생성] --> B[Steering Vector 추출]
B --> C[모델에 벡터 주입]
C --> D[심리 검사로 검증]
psyctl이 하는 일
위 파이프라인을 CLI 하나로 돌릴 수 있게 만든 도구입니다.
# 데이터셋 생성 → 벡터 추출 → 적용 → 평가
psyctl dataset.build.steer --personality Extroversion --output ./data
psyctl extract.steering --dataset ./data --method mean_diff --output ./vec.safetensors
psyctl steering --steering-vector ./vec.safetensors --input "Tell me about yourself"
psyctl benchmark inventory --steering-vector ./vec.safetensors
벡터 추출 방식은 Mean Difference(통계 기반)와 BiPO(최적화 기반) 두 가지를 지원하고, 평가는 IPIP-NEO(Big Five), NPI-40(나르시시즘) 같은 표준 심리 검사 도구로 합니다.
Llama, Gemma 등 HuggingFace 호환 모델이면 다 됩니다.
관심 있으시다면
GitHub에 코드 전부 공개되어 있으니 살펴봐 주세요.