DeepSeek-V4-Flash-0731 사용자들을 위한 공지 — 대화 도중에 시스템 역할 메시지로 프롬프트 캐시 날리지 마세요
PSA for DeepSeek-V4-Flash-0731 users — don't blow out your prompt cache with system role messages mid-conversation
핵심 요약
DeepSeek-V4-Flash 모델 사용 시 대화 중간에 시스템 메시지를 넣으면 프롬프트 캐시가 초기화되니 주의해야 합니다.
- 프롬프트 캐시 문제 — 대화 도중 시스템 메시지 삽입 시 캐시가 무효화됨
- 시스템 역할 제한 — 모델 구조상 대화 중간에 시스템 턴을 지원하지 않음
- 대안 제시 — `latest_reminder` 역할을 사용하여 프롬프트 캐시 효율 유지
- 성능 최적화 — 올바른 템플릿 사용으로 시간과 비용 절약 가능
DSv4F는 jinja를 제공하지 않지만, 이를 지원하고 DS가 챗 템플릿 파이썬에서 배포하는 내용을 충실히 재구성하는 배포판의 경우, 모든 시스템 메시지는 상단의 시스템 프롬프트로 끌어올려집니다. 이 형식에는 대화 중간의 시스템 턴이 없습니다. 따라서 대화 끝이나 중간에 무언가를 넣으면 실제로는 프리픽스(prefix)가 망가집니다(그리고 주입 지점과 대화상 근접성도 없습니다).
대부분의 템플릿이 system을 사용하는 방식과 퀀트 모델을 제공하는 사람들이 전달하는 방식(DS의 파이썬 템플릿과 일치하는 경우)에 맞춰 DS가 학습시킨 역할인 latest_reminder를 사용하세요. 저는 llama.cpp를 사용하는데 문제없이 잘 작동합니다. 다른 엔진들이 어떻게 작동하는지는 모르겠네요.
왜 프롬프트 캐싱이 이렇게 엉망인지 이해가 안 갔는데 원인이 여기 있었네요. 다른 분들의 시간과 좌절(그리고 호스팅 버전을 사용 중이라면 아마 돈도)을 아껴드리고자 공유합니다.

