Development/Artificial Intelligence

[OpenAI] 효율적인 OpenAI 토큰(Token) 사용 전략

Danny Seo 2024. 8. 2. 15:15

목차

    OpenAI 토큰(Token) 사용 전략

    OpenAI 토큰이란?

    OpenAI의 고급 언어 모델인 GPT-3.5와 GPT-4에서 "토큰"이라는 용어는 텍스트에서 자주 함께 나타나는 문자들의 시퀀스를 의미합니다. 이러한 모델들은 이 토큰들 간의 통계적 관계를 이해하고 예측하도록 설계되었습니다.

     

    텍스트를 토큰으로 분해하는 과정은 모델마다 다를 수 있습니다. 예를 들어, GPT-3.5와 GPT-4는 이전 모델들과 다른 토큰화 방식을 사용하여 동일한 입력 텍스트에 대해 서로 다른 토큰을 생성합니다.

     

    일반적으로 하나의 토큰은 영어 텍스트에서 약 4개의 문자, 대략 3/4 단어에 해당합니다. 따라서 100개의 토큰은 약 75개의 단어에 해당합니다.

     

    예를 들어, "OpenAI is great!"라는 문장을 생각해봅시다. 이 문장은 다음과 같이 토큰으로 나눌 수 있습니다:

    ["Open", "AI", " is", " great", "!"]

    토큰 계산하기

     

    이 각각은 하나의 토큰으로 간주됩니다. 정확한 분해는 사용되는 토큰화 과정에 따라 달라질 수 있습니다. 예를 들어, 일부 모델은 "OpenAI"를 하나의 토큰으로 처리하는 반면, 다른 모델은 "Open"과 "AI"로 분리할 수 있습니다. 또한 공백과 구두점도 별도의 토큰으로 처리될 수 있습니다. 따라서 이 예에서는 "Open", "AI", " is", " great", "!"의 다섯 개 토큰이 있습니다.

    다음은 토큰 길이를 이해하는 데 도움이 되는 몇 가지 지침입니다:

    • 1 토큰은 영어에서 약 4개의 문자와 같습니다.
    • 1 토큰은 대략 3/4개의 단어에 해당합니다.
    • 100 토큰은 약 75개의 단어와 같습니다.

    추가적으로,

    • 1~2 문장은 대략 30개의 토큰과 같습니다.
    • 한 단락은 대략 100개의 토큰과 같습니다.
    • 약 1,500 단어는 2,048개의 토큰에 해당합니다.

     

    토큰 인코딩

    토큰 인코딩은 자연어 처리(NLP)와 기계 학습에서 중요한 단계입니다. 이는 원시 텍스트를 기계가 이해하고 작업할 수 있는 형식, 일반적으로 고정된 차원의 수치 벡터로 변환하는 과정입니다.

     

    다양한 모델과 연결된 다양한 토큰 인코딩 방식이 존재하기 때문에, 텍스트를 토큰으로 변환할 때 어떤 모델을 사용할 것인지 아는 것이 중요합니다.

     

    텍스트 문자열(예: "OpenAI is great!")과 인코딩 방식(예: "cl100k_base")이 주어지면,

    토크나이저는 텍스트 문자열을 ["Open", "AI", " is", " great", "!"]과 같이 토큰 목록으로 분할할 수 있습니다.

     

    다음 표는 토큰 인코딩 방식과 OpenAI 모델 간의 매핑을 보여줍니다.

    OpenAI 모델별 인코딩 이름

     

    토큰화

    OpenAI의 맥락에서 토큰화는 텍스트를 더 작은 조각, 즉 토큰으로 분할하는 방법입니다. 이러한 토큰은 텍스트에서 자주 함께 나타나는 문자들의 시퀀스이며, GPT-3.5와 GPT-4와 같은 OpenAI의 대형 언어 모델이 텍스트를 처리하고 이해하는 데 사용됩니다.

     

    Tiktoken은 OpenAI에서 만든 파이썬 기반 도구로, OpenAI의 모델, 예를 들어 GPT-4와 함께 사용하도록 설계된 빠른 Byte Pair Encoding (BPE) 토크나이저입니다. Tiktoken의 주요 기능은 텍스트를 토큰으로 나누는 것입니다. 이러한 토큰은 모델이 텍스트를 처리하고 이해하는 데 사용됩니다.

     

    Tiktoken은 오픈 소스 도구로, PyPI에서 pip install tiktoken 명령을 사용하여 쉽게 설치할 수 있습니다. 또한 자바스크립트 환경을 위한 커뮤니티 지원 버전도 제공됩니다.

     

    Tiktoken의 주요 기능 중 하나는 BPE의 작동 방식을 이해할 수 있도록 해주는 교육용 서브모듈을 제공한다는 점입니다. 이 서브모듈은 사용자에게 토큰화 과정을 시각화할 수 있는 기회를 제공합니다. 또한 Tiktoken은 유연하여 사용자가 새로운 인코딩 방식을 추가할 수 있습니다.

     

    다음은 예제 코드입니다:

    import tiktoken
    
    encoding = tiktoken.get_encoding("cl100k_base")
    # 주어진 모델 이름에 대해 올바른 인코딩을 자동으로 로드
    encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
    
    print(encoding.encode("OpenAI is great!"))

    출력은 다음과 같습니다:

    [5109, 15836, 374, 2294, 0]

    토큰의 수는 .encode() 메서드가 반환한 리스트의 길이를 세어 확인할 수 있습니다.

     

    토큰 제한

    요청에 사용할 수 있는 최대 토큰 수는 선택한 모델에 따라 다르며, 입력 프롬프트와 생성된 출력을 합쳐 4096개의 토큰이 한도입니다(gpt-3.5-turbo). 따라서 입력에 4000개의 토큰을 사용하면 출력에 사용할 수 있는 최대 토큰 수는 96개입니다.

     

    이 제한은 주로 기술적인 이유로 인한 것입니다. 그러나 이러한 한도 내에서 효과적으로 작업하기 위한 다양한 전략이 있습니다. 예를 들어, 입력을 더 간결하게 요약하거나 내용을 더 관리하기 쉬운 세그먼트로 나누는 방법 등이 있습니다.

    OpenAI 모델별 토큰

    더 자세한 정보를 원하신다면 OpenAI의 공식 웹사이트를 방문하세요: OpenAI 문서

     

    토큰 가격

    OpenAI API는 다양한 모델을 제공하며, 각각 고유한 가격 책정 수준을 가지고 있습니다. 모델들은 각기 다른 능력을 지니고 있으며, Davinci는 가장 고급 모델이고 Ada는 가장 빠른 모델입니다. 요청 비용은 모델마다 다릅니다.

     

    예를 들어, GPT-4 Turbo 모델의 경우 입력에 대한 비용은 1K 토큰당 $0.01, 출력에 대한 비용은 1K 토큰당 $0.03입니다.

    OpenAI 모델별 토큰 가격

    OpenAI에 따르면 여러 모델이 있으며 각각은 다른 능력과 가격 책정 포인트를 가지고 있습니다. 가격은 1,000 토큰당 책정됩니다. 토큰은 단어 조각으로 생각할 수 있으며, 1,000 토큰은 약 750단어에 해당합니다. 이 단락은 35개의 토큰입니다.

     

    가격 계산기

    다음 "OpenAI 및 기타 LLM API 가격 계산기"를 활용하여 비용을 계산할 수 있습니다. 위는 1,000개의 입력 단어, 500개의 출력 단어 및 100개의 API 호출에 대한 총 비용을 보여줍니다.

    OpenAI 토큰 계산기

     

    모범 사례

    OpenAI 토큰을 사용할 때는 효율성을 극대화하고 비용을 최소화하며 OpenAI API를 효과적이고 안전하게 사용하기 위한 모범 사례를 따르는 것이 좋습니다. 다음은 권장되는 모범 사례입니다:

    1. 토큰 경제 이해
      • 토큰이 어떻게 계산되고 사용 맥락에서 무엇이 토큰을 구성하는지 이해합니다. 다양한 입력 길이에 대한 대략적인 토큰 수를 알고 있으면 사용량과 비용을 더 정확하게 추정할 수 있습니다.
    2. 프롬프트 디자인 최적화
      • 프롬프트를 간결하게 설계하되 모델이 원하는 출력을 생성하도록 충분히 상세하게 합니다. 이러한 균형은 사용된 토큰 수를 줄이고 유용한 응답을 받을 가능성을 높입니다.
    3. 효율적인 토큰 관리
      • 토큰 사용량을 추적하여 예상치 못한 비용을 방지합니다. 플랫폼이나 애플리케이션이 지원하는 경우 소비를 모니터링하기 위해 경고나 한도를 설정합니다.
    4. 요청 일괄 처리
      • 사용 사례가 허용하는 경우, 요청을 하나씩 처리하는 것보다 일괄 처리가 더 효율적일 수 있습니다. 이 접근 방식은 비용 절감으로 이어질 수 있습니다.
    5. 적합한 모델 선택
      • 작업에 가장 적합한 모델을 선택합니다. Davinci와 같은 대형 모델이 더 강력하지만, Ada 또는 Babbage와 같은 소형 모델은 깊은 이해력이나 창의성이 필요하지 않은 작업에 더 비용 효율적일 수 있습니다. 이를 통해 토큰을 절약할 수 있습니다.
    6. 자주 요청되는 경우 캐싱 구현
      • 동일하거나 유사한 프롬프트로 반복되는 요청을 하는 경우, 응답을 캐싱하여 토큰을 절약할 수 있습니다. 캐시는 안전하게 관리되고 개인정보 및 데이터 보호 요구 사항을 준수해야 합니다.
    7. API 키 보안
      • OpenAI API 키를 보호하여 무단 사용을 방지하고 토큰 낭비 및 예상치 못한 비용을 방지합니다. 액세스 제어를 구현하고 정기적으로 키를 교체하십시오.

    읽어주셔서 감사합니다! 😊
    개발 관련 궁금증이나 고민이 있으신가요?
    아래 링크를 통해 저에게 바로 문의해 주세요! 쉽고 빠르게 도움 드리겠습니다.

    '개발자서동우' 프로필 보기