로컬 LLM은 왜 페르소나를 유지하지 못할까 (그리고 Claude는 왜 되는가)
한 시간을 들여 완벽한 페르소나를 만들었다. 꼼꼼한 프로젝트 매니저. 격식체. 요청 없으면 코드 작성 금지. 명확한 상태 보고.
Claude Opus에 넣었더니 완벽하게 동작한다. 에이전트가 캐릭터를 유지하고, 모든 지시사항을 따르고, 긴 대화에서도 페르소나가 흔들리지 않는다.
같은 페르소나를 로컬 모델 — Llama 3.2, Qwen3-Coder, Mistral — Ollama로 돌려봤다.
3번째 메시지에서 또 코드를 짜고 있다. 페르소나가 증발했다.
버그가 아니다. 모델 훈련 방식의 근본적인 차이다.
시스템 프롬프트: 같은 인터페이스, 다른 결과
모든 현대 LLM에는 시스템 프롬프트 슬롯이 있다. "너는 프로젝트 매니저야"나 "항상 한국어로 대답해" 같은 지시를 넣는 곳이다.
인터페이스는 동일하다. Claude API든 Ollama API든 system을 설정하고 모델이 따르길 기대한다.
하지만 시스템 프롬프트 슬롯이 있다고 해서 모델이 그걸 따르도록 훈련됐다는 뜻은 아니다.
핸들에 비유하면 이해가 쉽다. 모든 차에 핸들은 있다. 하지만 핸들을 돌렸을 때 차가 얼마나 정확하게 반응하는지는 밑에 깔린 엔지니어링에 달렸다.
Claude가 페르소나를 따르는 이유
Anthropic은 Claude를 만들 때 Constitutional AI (CAI) 라는 특정 훈련 목표를 적용했다. 이 훈련에는 명시적으로 다음이 포함된다:
- 시스템 프롬프트 지시사항을 충실하게 따르기
- 긴 대화에서 일관성 유지
- 시스템 레벨 지시와 사용자 레벨 요청을 구분
- 시스템 프롬프트를 무력화하려는 시도에 저항
우연이 아니다. 의도적이고, 비용이 많이 드는 훈련 단계다. Anthropic은 명령어 충실도(instruction fidelity) — 모델이 주어진 지시사항에 시간이 지나도 정렬을 유지하는 능력 — 에 막대한 투자를 했다.
결과: Claude에게 "너는 코드를 절대 안 짜는 격식체 프로젝트 매니저야"라고 하면 실제로 그렇게 행동한다. 페르소나를 "이해"해서가 아니라, 응답 생성 시 시스템 프롬프트 지시에 높은 가중치를 두도록 훈련됐기 때문이다.
로컬 모델이 어려운 이유
로컬 모델 — 특히 코딩 특화 모델 — 은 훈련 우선순위가 다르다.
코딩 모델 (Qwen3-Coder, DeepSeek-Coder, CodeLlama)
이 모델들은 대규모 코드 데이터셋으로 파인튜닝됐다. 훈련 목표 우선순위:
- 코드 완성 정확도
- 기술적 문제 해결
- 코드 관련 지시 수행
Qwen3-Coder에게 "너는 PM이야, 코드 짜지 마"라고 하면 충돌이 발생한다:
- 시스템 프롬프트: "코드 짜지 마"
- 모델의 전체 파인튜닝 이력: "코드를 생성해라"
파인튜닝이 이긴다. 코딩 행동이 가중치에 더 깊이 각인되어 있기 때문에, 모델의 코딩 본능이 시스템 프롬프트를 압도한다.
범용 로컬 모델 (Llama, Mistral, Gemma)
코딩 모델보다는 페르소나 준수가 낫지만, 구체적인 이유로 Claude에 미치지 못한다: 명령어 튜닝 예산.
시스템 프롬프트를 안정적으로 따르도록 훈련하려면:
- 명령어 충실도를 타겟으로 한 RLHF/RLAIF 사이클
- 다양한 페르소나 훈련 데이터 — 수천 가지 페르소나 유지 사례
- 적대적 테스트 — 캐릭터 이탈 시도에 대한 훈련
- 장문 맥락 일관성 훈련 — 긴 대화에서도 페르소나 유지
프론티어 랩(Anthropic, OpenAI)은 이 단계에 수백만 달러를 쓴다. 오픈소스 모델 팀은 예산이 적어서 명령어 충실도보다 원시 성능에 더 많이 투자한다.
트레이드오프는 실재한다
"로컬 모델이 나쁘다"는 주장이 아니다. 트레이드오프다:
| 우선순위 | Claude Opus | Qwen3-Coder | Llama 3.2 |
| 시스템 프롬프트 충실도 | ★★★★★ | ★★☆☆☆ | ★★★☆☆ |
| 코드 생성 | ★★★★☆ | ★★★★★ | ★★★☆☆ |
| 토큰당 비용 | $$$ | 무료 | 무료 |
| 프라이버시 | 클라우드 | 로컬 | 로컬 |
| 페르소나 안정성 (1시간+) | 우수 | 미흡 | 보통 |
"빠르게, 로컬에서, 프라이버시 지키면서 코드 짜기" — Ollama 코딩 모델이 완벽하다. 페르소나는 중요하지 않다.
"일관된 AI 에이전트 아이덴티티를 며칠, 몇 주 유지하기" — 모델 선택이 결정적이다.
AI 에이전트 아이덴티티에 대한 시사점
이것이 Soul Spec이 모델 무관 표준으로 존재하면서도, 실제 경험이 모델에 따라 극적으로 달라지는 이유다.
Soul 패키지(페르소나 정의)는 어떤 LLM이 실행하든 같은 지시사항을 담고 있다. 하지만 실행의 충실도는 다음에 달렸다:
- 모델 아키텍처 — 명령어 수행을 위해 훈련됐는가?
- 파인튜닝 초점 — 범용 vs. 도메인 특화?
- 맥락 처리 — 긴 대화에서 상태를 얼마나 잘 유지하는가?
- 시스템 프롬프트 가중치 — 시스템 메시지 vs. 사용자 메시지 우선순위?
실전 권장사항
페르소나 일관성이 중요한 프로덕션 에이전트 배포:
- 프론티어 모델(Claude, GPT-4)을 기본 LLM으로 사용
- 로컬 모델은 비용 민감하고 페르소나가 필요 없는 작업에 활용
- 배포 전 페르소나 준수 테스트 — 되겠지 하고 넘기지 마라
로컬 우선 환경:
- Instruction-tuned 변형 선호 (base Llama보다 Llama-3.2-Instruct)
- 페르소나를 단순하게 유지 — 복잡한 다중 규칙 페르소나는 작은 모델에서 더 빨리 무너진다
- 컨텍스트 윈도우를 짧게 — 대화가 길어질수록 페르소나 드리프트 가속
- SoulScan으로 페르소나 퇴화 모니터링 고려
멀티 모델 아키텍처:
- Claude/GPT-4 → 사용자 대면 페르소나 상호작용
- 로컬 모델 → 백그라운드 작업 (요약, 코드 생성)
- 페르소나 레이어는 페르소나를 존중하는 모델 위에 유지
격차는 줄겠지만 사라지진 않는다
오픈소스 모델은 빠르게 발전하고 있다. 세대마다 명령어 수행력이 올라간다. 하지만 격차가 지속되는 구조적 이유가 있다:
명령어 충실도 훈련은 비용이 많이 들고, 벤치마크를 개선하지 않는다.
모델 팀이 제한된 컴퓨트 예산을 가지고 있으면, 측정 가능한 지표 — 코딩 벤치마크, 추론 점수, 지식 정확도 — 를 최적화한다. "50개 메시지에 걸쳐 페르소나를 얼마나 잘 유지하는가"는 어떤 리더보드에도 없다.
명령어 충실도가 표준 벤치마크가 되기 전까지, 프론티어 랩이 여기서 계속 앞서갈 것이다. 스코어보드에 나타나지 않는 역량에 투자할 여유가 있으니까.
직접 확인해보기
Claude vs. 로컬 모델에 같은 soul을 설치하고 비교해보라:
# ClawSouls CLI 설치
npm install -g clawsouls
# 페르소나 검색
clawsouls search "project manager"
# Soul 적용
clawsouls apply clawsouls/brad
다섯 번째 메시지면 차이가 보인다. Soul은 같다. 모델이 모든 차이를 만든다.
Soul Spec은 AI 에이전트 페르소나 정의를 위한 오픈 표준이다. ClawSouls는 에이전트 페르소나를 공유하고 발견하는 커뮤니티 플랫폼이다.
Originally published at https://blog.clawsouls.ai/ko/posts/why-local-models-fail-persona/