검색
검색
공개 노트 검색
회원가입로그인
ChatGPT API로 챗봇 만들기

ChatGPT API Key 발급과 토큰의 개념 (개발)

ChatGPT는 기본적으로 공식 웹사이트(https://chat.openai.com)에서 사용할 수 있습니다.

하지만 ChatGPT를 만든 OpenAI에서 API(Application Programming Interface)를 통해 서비스를 외부에서 호출해서 사용할 수 있도록 만들어 놓았습니다. 사용자들은 OpenAI에서 발급한 API Key가 있으면 curl, python, node.js 등 다양한 환경에서 ChatGPT를 실행할 수 있고 결과를 JSON 형태로 받아 HTML, React, Next 와 같은 프론트엔드 환경에서 표현할 수 있습니다.

이번 시간에는 ChatGPT API 키를 발급받고 해당 키를 활용해서 HTTP 요청을 보내보겠습니다.

동영상을 보고 차근 차근 따라하실 수 있도록 구성했으니 동영상 강의는 꼭 시청해 주세요.

ChatGPT API KEY 발급 받기

https://platform.openai.com/account/api-keys

openai 사이트에서 API 키를 발급 받을 수 있습니다. 현재 처음 회원 가입을 하면 3개월 동안 사용이 가능한 5달러의 무료 크레딧을 줍니다. 5달러 정도면 정말 충분히 사용할 수 있습니다. gpt-3.5-turbo의 경우 1000 토큰 당 약 0.002 달러입니다. (input 토큰은 0.0015달러) 만약 이 API를 활용해서 영문 해리포터 책 전체를 처리하면 4.3 달러면 가능합니다. (백만 토큰 당 2달러) 충분히 사용해도 돈이 많이 나오지 않는다는 뜻입니다. 서비스 등으로 올려서 비용이 많이 나오는게 걱정이 된다면 Billing - Usage Limits 에서 상한선을 정해 놓으면 됩니다. 상한은 약 최대 월 120달러까지 정할 수 있습니다.

  • 첫번째 미션 : 위의 사이트에서 API 키를 발급 받아 오프라인의 안전한 곳에 텍스트 파일에 저장해 주세요. API 키는 최초 생성 후 다시 볼 수 없기 때문에 생성 후 바로 저장해 놓아야 합니다.

토큰의 개념

GPT는 토큰을 활용하여 데이터를 처리합니다. 여기서 토큰은 일련의 문자(sequence of character)를 이야기 합니다. 토큰은 훈련 데이터에서 등장하는 특정한 텍스트의 패턴이라고 할 수 있습니다. LLM은 훈련 과정에서 텍스트를 하나의 단위인 토큰으로 치환해서 처리함으로써 성능을 향상시킵니다. 훈련된 텍스트에서 많이 사용되는 글씨일 수록 토큰화가 잘되어 있어 적은 양의 토큰을 차지합니다.

그래서 1글자가 하나의 토큰이 될 수 도 있고 여러 글자가 하나의 토큰이 될 수 도 있습니다. 대략적으로 영어는 4글자당 1 토큰, 한글은 1글자당 2~3 토큰 (경험 상 한글도 글자 수가 많아지면 1글자 당 2토큰 정도로 수렴하는것 같습니다.) 을 차지하는 편입니다. 한글의 경우 학습 데이터에서 영어보다 적기 때문에 더 많은 토큰을 필요로 합니다. 데이터가 많을 수록 어절이나 단어 단위로 토큰화가 잘되어있기 때문입니다.

OpenAI의 토크나이저에서 글씨를 입력하면 토큰이 얼마나 나오는지 확인할 수 있습니다. (현재 OpenAI의 토크나이저는 오래돼서 정확하지 않습니다. 실제 사용은 다음 사이트를 이용해 주세요. (Tiktokenizer)

코드로도 토큰을 셀 수 가 있습니다. 파이썬의 경우 OpenAI의 tiktoken을 사용하고 자바스크립트의 경우 GPT-3-Encoder (간단한 encoding, decoding)나 @dqbd/tiktoken (tiktoken의 자바스크립트 포팅 버전)을 활용하는 편입니다.

참고로 OpenAI의 토큰나이저는 BPE (Byte pair encoding) 알고리즘을 사용합니다. BPE는 일종의 텍스트 압축 알고리즘입니다. 빈번하게 등장하는 문자 쌍을 찾아 이를 하나의 단위로 대체하는 기법입니다. NLP 분야에서 언어모델이 이를 활용해서 단어를 효과적으로 인식하고 처리할 수 있습니다.

gpt-3.5의 경우 max token은 4096 토큰이며 gpt-4의 경우 8192 토큰입니다. 이는 입력값과 출력값을 전부 합한 값입니다. 예를 들어 질문에 gpt-3.5에서 2000토큰을 사용했다면 gpt가 응답에 사용할 수 있는 최대 토큰은 2096 토큰이 됩니다. api 에서 이 값을 넘기게 되면 응답이 잘리게 되기 때문에 많이 접하게 될 개념입니다. 현재 ChatGPT 서비스에서도 이 토큰의 한계는 동일합니다.

Models - OpenAI API : 각 모델 별 max token 리스트

참고로 hello world를 bpe tokenizer로 encode 하면 이런식으로 토큰화되어 표현됩니다.[31373, 995]

각 숫자를 각각 decode하면 다음과 같이 됩니다.

{ token: 31373, string: 'hello' }
{ token: 995, string: ' world' }

어렵지 않습니다. 토큰 = 머신 러닝에서 인식하는 일련의 '문자 단위'라고 생각하면 될 것 같습니다.


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기