jhpka's blog

OpenAI의 3가지 API 비교 (Chat vs Conversations vs Responses)

Admin User

OpenAI API 진화 요약

APIChat CompletionsConversationsResponses
패러다임Stateless (무상태)Stateful (상태 저장)Autonomous (자율 행동)
개발자 역할모든 대화 내역 직접 관리conversation_id로 대화 위임goal (목표)만 설정
툴 호출1회성 (개발자 중재)1회성 (개발자 중재)다단계 (AI가 내부 실행)
비용 절감캐시 관리가 어려움임시 캐시 활용 극대화(복잡한 작업의 총비용)
핵심챗봇편리한 대화 관리자AI 에이전트

Chat Completions API (GPT-4o 이전) - "무상태(Stateless) 챗봇"

  • 개념: 모든 상태는 개발자(클라이언트)가 관리합니다.
  • 작동: API는 이전 대화를 기억하지 못합니다. 매번 API를 호출할 때마다 개발자가 전체 대화 내역(Message History)을 모두 보내야 합니다.
  • 프롬프트 캐싱 (비용 절감):
    • 이 API도 '프롬프트 캐싱'을 지원합니다. 요청의 앞부분(Prefix)이 이전 요청과 동일하면 해당 부분의 토큰 비용이 할인됩니다.
    • 단점: 개발자가 매번 정확히 동일한 대화 내역 텍스트를 전송해야만 캐시 히트가 발생합니다. 관리하기 매우 번거롭고 캐시가 깨지기 쉽습니다.
    • 캐시 유지 시간도 수 분(5~10분) 정도로 짧습니다.

Conversations API - "상태 저장(Stateful) 대화 관리자"

  • 개념: 대화의 **'텍스트 내역'**을 OpenAI 서버가 관리해 줍니다.
  • 작동:
    1. 개발자가 conversation_id를 생성합니다.
    2. 이후에는 conversation_id새 메시지만 보내면, OpenAI가 서버에 저장된 이전 대화 내역을 알아서 붙여줍니다.
    3. 개발자는 더 이상 긴 대화 내역을 직접 관리하거나 전송할 필요가 없습니다.
  • 프롬프트 캐싱 (비용 절감):
    • 이것이 핵심입니다. conversation_id를 사용하면 OpenAI가 항상 동일한 텍스트 프리픽스를 모델에 전달하는 것을 보장합니다.
    • 따라서 Chat Completions보다 훨씬 안정적으로 '프롬프트 캐싱'의 비용 할인 혜택을 받을 수 있습니다.
    • 주의: 이 캐시 역시 임시적(수 분~최대 1시간)입니다. 만약 사용자가 몇 시간 뒤에 다시 대화를 이어간다면, 첫 번째 요청은 캐시가 만료되어 전체 대화 내역 비용이 모두 청구됩니다. (이후 요청부터는 다시 캐시됨)

Conversations API의 오해와 진실: 이 API는 'KV 캐시' 자체를 영구 저장하는 것이 아닙니다. '대화 텍스트'를 영구 저장하여, 모델의 **'임시 프롬프트 캐시'**를 안정적으로 활용할 수 있게 도와주는 API입니다.

Responses API (GPT-5) - "자율적(Autonomous) 에이전트"

  • 개념: '대화'가 아닌 '목표 달성'을 위한 API입니다.
  • 작동:
    1. 개발자는 conversation_id와 함께 "부산 여행 계획 짜고 예약해줘" 같은 **'목표(Goal)'**를 전달합니다.
    2. Responses API는 이 목표를 달성하기 위해 **스스로 다단계 추론(Multi-step Reasoning)**을 시작합니다.
    3. (예: 날씨 검색 -> 숙소 검색 -> KTX 예약 -> 일정 정리)
    4. 이 과정에서 필요한 툴 콜(Tool Call)을 API가 내부적으로 스스로 호출하고 실행합니다.
    5. 개발자는 중간의 복잡한 툴 콜 과정을 일일이 중재할 필요 없이, 최종 결과(또는 중요한 확인 요청)만 받습니다.
댓글을 불러오는 중...