OpenAI API의 멀티턴 대화

OpenAI API에서 멀티턴 대화는 messages 배열을 통해 구현됩니다.

이전 대화 내용을 누적해서 전달함으로써 대화의 맥락(context)을 유지할 수 있습니다.

예시 코드:

import openai
from openai import OpenAI
from typing import List

client = OpenAI()

class Conversation:
    def __init__(self):
        self.messages: List[dict] = [
            {"role": "system", "content": "당신은 요리 전문가입니다."}
        ]

    def get_response(self, user_input: str) -> str:
        # 사용자 메시지 추가
        self.messages.append({"role": "user", "content": user_input})

        # API 호출
        response = client.chat.completions.create(
            model="gpt-4-0125-preview",
            messages=self.messages
        )

        # 어시스턴트 응답 저장
        assistant_response = response.choices[0].message.content
        self.messages.append({"role": "assistant", "content": assistant_response})

        return assistant_response

# 사용 예시
conversation = Conversation()

# 첫 번째 질문
response1 = conversation.get_response("김치로 만들 수 있는 요리 추천해줘")
print("AI:", response1)

# 두 번째 질문 (이전 대화 맥락 유지)
response2 = conversation.get_response("그 중에서 30분 안에 만들 수 있는 요리는 뭐야?")
print("AI:", response2)

 

이런 방식의 장점:

  1. 대화 맥락 유지
  2. 이전 답변 참조 가능
  3. 자연스러운 대화 흐름

주의할 점:

  1. 토큰 제한 고려 필요
  2. 오래된 대화는 적절히 제거
  3. 비용 관리