컨텐츠로 건너뛰기
主站 新闻 控制台

멀티턴 대화

Chat Completions는 무상태(stateless) 인터페이스입니다. 모델은 이전 요청을 기억하지 않습니다. 멀티턴 대화의 원리는—— 매 요청마다 대화 기록을 전부 포함하여 전송하는 것입니다.

기본 사용법

messages = [
{"role": "system", "content": "你是一个简洁的中文助手。"},
{"role": "user", "content": "什么是向量数据库?"},
]
r1 = client.chat.completions.create(model="gpt-5.5", messages=messages)
messages.append({"role": "assistant", "content": r1.choices[0].message.content})
messages.append({"role": "user", "content": "它和 Elasticsearch 有什么区别?"})
r2 = client.chat.completions.create(model="gpt-5.5", messages=messages)

두 번째 턴에서 모델이 “它(그것)“이 무엇을 가리키는지 이해할 수 있는 이유는, 전체 대화 기록이 messages 안에 담겨 있기 때문입니다.

컨텍스트 관리

대화 기록이 길어질수록 입력 토큰이 늘어나 비용이 증가하고, 모델의 컨텍스트 한도를 초과할 수 있습니다. 주로 사용되는 전략은 다음과 같습니다:

전략방법적합한 경우
슬라이딩 윈도우최근 N턴 + system만 유지고객 지원, 일상 대화
요약 압축오래된 기록을 저비용 모델로 요약장기 세션 어시스턴트
검색 증강기록을 벡터 DB에 저장 후 필요 시 관련 내용 검색지식 기반 애플리케이션

주의사항

  • system 메시지는 항상 첫 번째 위치에 유지하고, 캐시 과금을 활용하여 반복 비용을 절감하는 것을 권장합니다;
  • 대화 기록을 잘라낼 때는 “턴” 단위로 삭제하세요(user+assistant 쌍으로), 중간에서 끊지 마세요;
  • 모델을 전환할 때(예: GPT에서 Claude로)는 대화 기록 형식을 변경할 필요 없이 model만 바꾸면 됩니다.