현대 LLM API에서 대화는 보통 세 종류의 「역할(role)」을 가진 메시지의 묶음으로 이루어집니다.
「system」, 「user」, 「assistant」.
각 역할의 메시지는 모델에게 다르게 해석되며, 잘 활용하면 응답 품질을 크게 끌어올릴 수 있습니다.
시스템 프롬프트(system)는 「대화 전반에 적용되는 모델의 캐릭터·규칙·맥락」을 설정하는 자리입니다.
「당신은 한국 법률을 잘 아는 변호사입니다.
한국어로만 답하고, 모호한 점은 추가 질문하세요」 같은 지시가 들어갑니다.
보통 대화의 맨 앞 한 번만 등장합니다.
유저 프롬프트(user)는 사용자의 실제 질문이나 요청입니다.
「상속세는 어떻게 계산되나요?」 같은 구체적 입력입니다.
한 대화에서 여러 번 등장하며, 매번 새 질문을 표현합니다.
어시스턴트 메시지(assistant)는 모델이 만든 답변입니다.
다음 대화 차례에서 모델은 자기 이전 답변을 「assistant」 역할의 메시지로 함께 보고 일관성을 유지합니다.
비유하자면 시스템 프롬프트는 「연극의 대본 지문(이 인물은 30대 변호사이며 차분한 말투)」, 유저 프롬프트는 「상대 배우의 대사」, 어시스턴트는 「모델 자신의 대사」와 같습니다.
좋은 시스템 프롬프트는 모델의 캐릭터를 일관되게 잡아 줘 사용자 경험을 크게 끌어올립니다.
한 줄 요약
시스템 프롬프트는 대화 전반의 캐릭터·규칙을 설정하고, 유저 프롬프트는 사용자의 구체적 질문이며, 어시스턴트는 모델의 답입니다.
시스템 프롬프트의 설계가 응답 품질을 크게 좌우합니다.
더 알아볼 것
- 좋은 시스템 프롬프트 작성 패턴
- ChatML — OpenAI의 메시지 포맷
- 대화 히스토리 관리와 컨텍스트 절약