카테고리 없음

[TIL] GPT-4o.의 Free 플랜 한도에 도달했습니다

원담 2025. 6. 25. 15:12
728x90
 
 

gpt 무료 버전 사용하다보면

ChatGPT를 무료 버전으로 사용하다 보면, 어느 순간 “새 채팅”을 하라는 메시지를 보거나 갑자기 이전 대화 내용을 기억하지 못하는 현상을 겪게 된다. 이 현상은 ‘토큰(Token)’이라는 개념과 깊은 관련이 있다.

토큰이 뭐길래? 그리고 왜 대화가 길어지면 토큰 수가 늘어날까?

OpenAI의 챗봇 모델들은 우리 대화 내용을 토큰 단위로 쪼개어 처리한다. 토큰이란 간단히 말해 ‘단어’보다 더 작은 글자 단위 조각이라고 생각하면 된다. 예를 들어, “Hello”라는 단어는 하나 혹은 두 개의 토큰으로 나뉠 수 있다.

이 모델들은 대화를 할 때 이전 대화 전체 히스토리(messages)를 모두 입력값으로 넣어서 처리한다. 즉, 내가 처음부터 지금까지 주고받은 모든 메시지가 모델에 같이 들어가서 답변이 만들어 진다.

예를 들어 이런 흐름이라면

[ {"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hi! How can I help you today?"},
{"role": "user", "content": "What’s the weather like?"},
{"role": "assistant", "content": "It’s sunny and 25°C."},
{"role": "user", "content": "Recommend an outfit"}]

이 모든 메시지가 입력으로 포함되어 토큰 수가 점점 누적되는 구조이다. 그래서 대화가 길어질수록 사용된 토큰 수가 비례해서 늘어나게 된다.

토큰 수가 많아지면 어떤 문제가 생길까?


문제 설명
한도 초과 모델이 처리할 수 있는 최대 토큰 수(예: 4,096, 8,192 등)를 초과할 수 있음
비용 증가 사용한 토큰 수만큼 과금되므로, 긴 대화는 비용 부담 증가
성능 저하 너무 많은 히스토리가 들어가면 모델이 핵심 내용을 파악하기 어려워짐
 

ChatGPT 무료 버전에서는 어떻게 토큰 문제를 관리할까?

무료 버전 ChatGPT의 경우, 모델이 처리할 수 있는 컨텍스트 길이(즉, 한 번에 기억할 수 있는 최대 토큰 수)가 약 4,096 토큰으로 제한되어 있다. 이 제한을 넘기면 다음과 같은 일이 벌어진다.

  • 오래된 대화 내용은 내부적으로 자동으로 잘려 나감
  • 결과적으로 “새 채팅”을 하라는 알림이 뜨거나 이전 내용이 기억되지 않는 듯 보임.
  • 사용자가 보기에는 대화가 ‘끊긴 것’처럼 느껴짐.

이를 ‘윈도잉(Sliding Window)’ 전략이라 부르는데, 최근 대화 몇 턴만 남기고 예전 대화는 버리는 방식이다. 하지만 중요한 ‘system prompt’나 사용자가 지정한 핵심 문장은 가능한 오래 남겨두어 대화 흐름이 유지되도록 합니다.

유료 버전은 어떨까?

유료 버전(GPT-4 Plus 등)에서는 최대 128,000 토큰까지 기억하는 모델도 있어, 훨씬 긴 대화도 가능하다. 게다가 ‘메모리’ 기능을 통해 중요한 정보를 요약하여 계속 기억하는 고급 기능도 지원합니다.

구분 무료 버전 (GPT-3.5) 유료 버전 (GPT-4 등)
최대 컨텍스트 길이 약 4,096 tokens 최대 128,000 tokens
대화 유지 최근 대화 위주로 자동 삭제 요약과 메모리 기능으로 장기 대화 유지 가능
토큰 관리 전략 윈도잉, 중요도 기반 삭제 윈도잉 + 요약 + 메모리 기능 활용
 
응답이 중간에 끊기는 이유와 해결책

응답이 갑자기 중간에 끊기거나 문장이 완성되지 않는 경우도 있다. 이 또한 토큰 한도와 관련이 있는데

  • 모델이 생성하는 응답 토큰 수도 입력 토큰 수 안에 포함되어야 하므로 입력 토큰이 너무 많으면 출력할 수 있는 토큰 수가 줄어들고
  • 요청한 max_tokens 값을 충족하지 못할 경우 답변이 중간에 멈춘다.

해결법은?

  • 너무 긴 대화 기록은 요약하거나 일부 삭제해 입력 토큰을 줄인다
  • max_tokens를 적절히 조정한다
  • API 사용 시 스트리밍 기능(stream=True)을 활용해 끊김 여부를 빠르게 확인하고, 끊긴 경우 이어서 요청을 보내 응답을 완성한다
728x90