AI 용어집 · 기초 · 언어 모델
채팅 템플릿 Chat Template
채팅 템플릿은 시스템·사용자·어시스턴트 메시지로 이루어진 대화를, 모델이 학습 때 본 그대로의 문자열 형식(특수 토큰 포함)으로 바꿔 주는 규칙이다.
어떻게 작동하나
Instruct 모델은 학습할 때 '여기서부터 사용자 말, 여기서부터 어시스턴트 말'을 특수 토큰으로 표시한 대화를 봤다. 채팅 템플릿은 우리가 보낸 메시지 목록을 바로 그 형식의 긴 문자열로 바꿔 준다. 마지막에 '이제 어시스턴트 차례'라는 표시를 붙여 모델이 답을 쓰기 시작하게 한다. 도구 호출이나 생각 과정을 표시하는 형식도 템플릿에 함께 정해진 경우가 많다.
메시지가 모델에 닿기까지
- 1메시지 목록시스템·사용자·어시스턴트
- 2템플릿 적용특수 토큰으로 역할 표시
- 3차례 표시이제 어시스턴트가 답할 차례
- 4토큰화토크나이저가 번호로 변환
- 5모델 생성끝 표시 토큰에서 멈춤
어디서 보나
Hugging Face 저장소의 tokenizer_config.json 안 chat_template 항목이나 별도 템플릿 파일에서 볼 수 있으며, Jinja라는 템플릿 문법으로 쓰여 있다. transformers 라이브러리에서는 apply_chat_template 같은 함수가 이를 적용한다. GGUF 파일은 템플릿을 메타데이터에 담기도 하고, 추론 엔진 설정에서 템플릿을 직접 지정할 수도 있다. 클라우드 API는 이 과정을 서버에서 대신 처리해 사용자는 메시지 목록만 보낸다.
알아 둘 점
템플릿이 틀리면 모델은 돌아가지만 답이 엉뚱하거나, 멈추지 않고 사용자 말까지 지어내 계속 쓰는 증상이 흔하다. 모델마다 템플릿이 다르므로 다른 모델의 형식을 그대로 쓰면 안 된다. Base 모델에는 채팅 템플릿이 없거나 의미가 없는 경우가 많다. 파인튜닝할 때도 학습과 서빙에서 같은 템플릿을 써야 성능이 유지된다.
예시
개발자가 새 오픈웨이트 모델을 로컬 추론 엔진에 올렸더니 답이 끝나지 않고 '사용자:'로 시작하는 문장까지 이어 썼다. 모델 카드를 다시 보니 이 모델은 전용 채팅 템플릿을 쓰는데, 엔진이 다른 모델의 템플릿을 적용하고 있었다. 저장소의 tokenizer_config.json에 있는 템플릿을 엔진 설정에 지정하자 대화가 정상으로 돌아왔다.