AI Tech

[AI Tech] chatGPT API 사용방법 feat. Python

moonzoo 2024. 2. 14. 10:05

파이썬에서 chatGPT API를 사용하기 위해선  API Key를 발급받고 등록하면 끝이 아닙니다. 카드 등록 등 여러 과정을 추가로 진행해야 합니다. chatGPT API를 사용하기 위해 웹서핑을 하면서 찾은 정보를 작성하겠습니다.

 

chatGPT API 사용방법

1. OpenAI 계정 생성 및 API 키 발급

  • 계정 생성: OpenAI 웹사이트에 접속하여 계정을 생성합니다.
  • API 키 획득: 계정 대시보드에서 API 키를 생성합니다. 이 키는 API 요청을 인증하는 데 사용됩니다.

먼저 Openai API 사이트에 들어가신후 회원 가입을 합니다. 회원 가입이 완료되면 https://platform.openai.com/api-keys링크에서 API Key를 발급 받을 수 있습니다. 발급 받으신 키는 다시 확인할 수 없기 때문에 꼭 저장해두셔야 합니다.

 

2. 카드 등록

API 키를 발급 받아 파이썬에서 API 키를 등록하고 호출하면 다음과 같은 에러가 발생합니다.

RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}
 
 

 

더 이상의 API 호출을 수행하기 위해서는 할당량이 리셋되기를 기다리거나, 사용 가능한 할당량을 늘리기 위해 사용 계획을 업그레이드해야 한다고 합니다.

 

chatGPT는 무료로 5달러 이내에 토큰을 제공하지만, 카드 등록을 하지 않으면 위와 같은 에러가 발생하면서 API를 사용할 수 없습니다. 결국 API를 사용하기 위해선 카드를 등록해야하고 카드를 등록하기 위해선 5$가 결제됩니다.

 

저는 API를 많이 사용할 것이 아니라 테스트용으로 사용할 것이고 무료로 사용하는 것을 원했지만... 어쩔 수 없이 5$를 결제해 테스트를 진행했고, 아직 환불받지는 못했지만 10일 후에 결제 취소가 되면서 환불해준다고도 합니다! 

 

일단, 저는 chatGPT 고객센터에 환불 문의를 남겨두기도 했습니다.

 

혹시 사용하더라도 Usuage Limits에서 Hard limit을 설정해 큰 금액을 사용하지 않도록 세팅하는 것이 마음이 편하십니다.

 

3. API 사용을 위한 코드 작성

  • 언어 선택: Python, JavaScript 등 자신이 선호하는 프로그래밍 언어를 선택합니다.
  • 라이브러리 설치: 필요한 경우 OpenAI API와 통신하기 위한 라이브러리를 설치합니다. 저는 Python를 사용해 openai 라이브러리를 설치했습니다.
# Python 예시: openai 라이브러리 설치
pip install openai

 

import openai

openai.api_key = 'your_api_key_here'

response = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who won the world series in 2020?"},
    {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
    {"role": "user", "content": "Where was it played?"}
  ]
)
print(response.choices[0].message.content
 

1. openai.api_key

앞서 발급받고 저장해두신 API Key 값을 입력해줍니다. 단, 다른 사람들에게 공개될 시 과금이 될 수 있으니 조심하세요.

 

2. openai.chat.completions.create

대부분의 chatGPT API 사용 방법 포스팅에서 openai.ChatCompletion.create를 사용하고 있습니다. 하지만, 최신버전으로 설치한 openai==1.11.1에서는 openai.chat.completions.create를 사용하지 않으면 에러가 발생합니다. 버전에 따라 참고하셔서 사용하시면 좋을 것 같습니다.

 

3. model = 'gpt-3.5-turbo'

사용하고자하는 openai의 모델명을 입력해주시면 됩니다.

 

아래는 chagGPT에서 제공하는 모델명과 모델 별 비용에 대한 표입니다.

API 사용에는 분당 토큰(TPM), 분당 또는 일일 요청(RPM/RPD) 및 기타 모델별 제한에 적용되는 속도 제한이 적용됩니다.

CHAT
gpt-3.5-turbo
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-0125
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-0301
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-0613
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-1106
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-16k
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-16k-0613
60,000 TPM
500 RPM
10,000 RPD
gpt-3.5-turbo-instruct
250,000 TPM
3,000 RPM
gpt-3.5-turbo-instruct-0914
250,000 TPM
3,000 RPM
gpt-4
10,000 TPM
500 RPM
10,000 RPD
gpt-4-0613
10,000 TPM
500 RPM
10,000 RPD
gpt-4-turbo-preview
Shared limits:
gpt-4-turbo-preview
gpt-4-0125-preview
gpt-4-1106-preview
150,000 TPM
500,000 TPD
500 RPM
gpt-4-vision-preview
10,000 TPM
80 RPM
500 RPD
TEXT
babbage-002
250,000 TPM
3,000 RPM
davinci-002
250,000 TPM
3,000 RPM
text-embedding-3-large
1,000,000 TPM
3,000 RPM
text-embedding-3-small
1,000,000 TPM
3,000 RPM
text-embedding-ada-002
1,000,000 TPM
3,000 RPM
tts-1  
50 RPM
tts-1-1106  
50 RPM
tts-1-hd  
3 RPM
tts-1-hd-1106  
3 RPM
MODERATION
text-moderation-latest
150,000 TPM
1,000 RPM
text-moderation-stable
150,000 TPM
1,000 RPM
FINE-TUNING INFERENCE (SHARES LIMITS WITH BASE MODEL)
babbage-002 250,000 3,000
davinci-002 250,000 3,000
gpt-3.5-turbo-0613 60,000 500
gpt-3.5-turbo-1106 60,000 500
gpt-4-0613 10,000 500
FINE-TUNING TRAINING ACTIVE / QUEUED JOBS JOBS PER DAY
babbage-002 3 48
davinci-002 3 48
gpt-3.5-turbo-0613 3 48
IMAGE
dall-e-2  
5 images per minute
dall-e-3  
5 images per minute
AUDIO
whisper-1  
50 RPM
OTHER
Default limits for all other models
250,000 TPM
3,000 RPM

 

어떤 모델을 사용해야 하는가?

일반적으로 gpt-4-turbo-preview, gpt-3.5-turbo 중 하나를 사용하는 것이 좋다고 합니다. 

어떤 모델을 사용해야 하는지는 모델을 사용하는 작업의 복잡성에 따라 달라지는데, gpt-4-turbo-preview는 일반적으로 다양한 표현에서 더 나은 성능을 보여줍니다. 특히 복잡한 지시를 세세하게 따르는 능력이 더 뛰어납니다.

 

대조적으로 gpt-3.5-turbo는 복잡한 다중 부분 명령의 한 부분만 따를 가능성이 더 높습니다. gpt-4-turbo-preview가 흔히 언급되는 환각 현상이 발생할 가능성이 더 낮으며, gpt-3.5-turbo4,096개 토큰의 컨텍스트 창을 갖고 있는 것에 비해, gpt-4-turbo-preview는 최대 128,000개 토큰의 컨텍스트 창을 갖고 있습니다.

 

그러나 gpt-3.5-turbo는 지연 시간이 더 짧고 토큰당 비용이 훨씬 적게 드는 출력을 반환합니다. 복잡한 지시나 답변을 원하는 것이 아니라면 gpt-3.5-turbo를 사용하는 것이 비용면에서 효율적일 수 있습니다.

 

어떤 모델이 나의 task에 가장 적합한지는 playground에서 테스트해보고 정하는 것이 좋습니다.

 

 

4. messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me a joke."}]

 

API KEY를 등록하고 사용하고자 하는 모델까지 선정하셨다면, 이제 생성형AI에 질문을 던질 차례입니다.

 

여기서는 role를 통해 역할을 정해줘야합니다. 역할은 시스템(System), 보조자(Assistant), 사용자(User)로 구분되며, 각각의 역할은 ChatGPT와의 상호작용 방식을 결정하는 중요한 요소입니다.

 

시스템(System) 역할

시스템 역할은 ChatGPT의 행동 지침을 설정하는 데 사용됩니다. 이는 ChatGPT에 특정 상황이나 컨텍스트를 제시할 때 활용되며, "Act as a ___"와 같은 지시를 내릴 때 유용합니다. 이 역할을 통해 ChatGPT에게 상황을 설정하고, 그에 맞는 행동을 취하도록 요청할 수 있습니다.

 

보조자(Assistant) 역할

보조자 역할은 주로 대화의 연속성을 유지하고 이전 대화 내용을 바탕으로 응답을 생성하는 데 사용됩니다. 이 역할은 질문을 하기보다는, 이전의 대화를 참조하여 새로운 프롬프트에 대한 응답을 생성할 때 중요합니다. 이를 통해 대화가 더 자연스럽고 일관성 있게 이어질 수 있습니다.

 

사용자(User) 역할

사용자 역할은 일반적으로 ChatGPT에게 질문을 하는 경우에 사용됩니다. 사용자로부터의 입력은 대화의 흐름을 이어가고, 이전 대화 내용을 참조하여 응답을 생성하는 데 기준점이 됩니다. 사용자 역할은 보조자 역할과 마찬가지로 대화의 연속성을 유지하는 데 중요합니다.

 

추가로 설정 가능한 파라미터 : 온도(temperature)와 텍스트의 최대 길이(max_tokens)

  • 온도(temperature): 이 값은 생성된 텍스트의 다양성과 창의성을 조절합니다. 높은 온도 값은 더 창의적이고 다양한 응답을 생성하며, 낮은 온도 값은 더 일관성 있고 예측 가능한 결과를 제공합니다. 온도 범위는 일반적으로 0.5에서 1.0 사이이며, 기본값은 0.7입니다.
  • 텍스트의 최대 길이(max_tokens): 이는 생성될 텍스트의 최대 길이를 지정합니다. 기본값은 256이고, 최대값은 2048입니다. 정보성 글 작성 시에는 짧은 길이를, 창의적인 내용을 위해서는 더 긴 길이를 설정할 수 있습니다.

ChatGPT API의 이러한 기능과 설정을 통해 프롬프트를 잘 구성한다면 모델은 더 창의적이고 풍부한 표현을 할 수 있게 됩니다. 역할과 기능에대한 자세한 설명과 사용 방법은 OpenAI의 공식 문서에서 확인할 수 있습니다.

 

https://platform.openai.com/docs/guides/text-generation/chat-completions-api

 

 

5. response.choices[0].message.content | response['choices'][0]['message']['content']

 

chatGPT API의 채팅 완료 시 응답형식은 아래와 같습니다. 

 

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
        "role": "assistant"
      },
      "logprobs": null
    }
  ],
  "created": 1677664795,
  "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
  "model": "gpt-3.5-turbo-0613",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 17,
    "prompt_tokens": 57,
    "total_tokens": 74
  }
}

 

저희가 원하는 답변은 response의 choices에서 message의 content에 담겨있기 있습니다. content에 접근하기 위해

1. response.choices[0].message.content

2. response['choices'][0]['message']['content']

 

둘중의 하나를 사용해서 접근하셔서 답변을 출력하시면 됩니다.

 

 

chatGPT Playground

ChatGPT Playground는 OpenAI가 제공하는 모델들을 무료로 테스트 해볼 수 있는 웹 인터페이스입니다. 이 플랫폼을 통해 사용자는 코드 작성 없이도 다양한 GPT 모델을 실험하고, 커스텀 프롬프트를 입력하여 즉각적인 응답을 받을 수 있습니다. Playground는 AI 모델의 기능을 탐색하고, 다양한 파라미터를 조정해보며, 모델의 반응을 실험해볼 수 있는 유용한 환경입니다. 사용자는 여기서 모델의 버전, 온도 설정, 최대 토큰 수 등 다양한 파라미터를 조정할 수 있으며, 이를 통해 응답의 정확성과 창의성을 조절할 수 있습니다. 

 

주요 기능

  • 모델 선택: 다양한 GPT 모델 중에서 선택하여 사용할 수 있습니다. 
  • 프롬프트 입력: 사용자는 특정 질문이나 지시를 입력하여 모델의 반응을 볼 수 있습니다. 이를 통해 정보 검색, 문장 생성, 코드 작성 등 다양한 작업을 할 수 있습니다.
  • 파라미터 조정: 응답의 성격을 조정하기 위해 온도(creativity control), 최대 토큰 수(maximum response length), 빈도 패널티(frequency penalty), 존재 패널티(presence penalty) 등 다양한 파라미터를 조정할 수 있습니다.
  • 실시간 응답: 입력한 프롬프트에 대한 모델의 응답을 즉시 확인할 수 있습니다. 이를 통해 다양한 시나리오를 신속하게 테스트할 수 있습니다.

사용 방법

  1. OpenAI 웹사이트 접속: OpenAI 계정으로 로그인한 후, ChatGPT Playground에 접근합니다.
  2. 모델 선택: 사용하고 싶은 GPT 모델을 선택합니다. 모델마다 특성과 용도가 다를 수 있으니, 목적에 맞는 모델을 선택하는 것이 중요합니다.
  3. 프롬프트 입력: 상단의 입력란에 질문이나 지시를 입력합니다. 이때, 구체적이고 명확한 프롬프트가 더 좋은 응답을 유도할 수 있습니다.
  4. 파라미터 설정: 응답의 성격을 조절하기 위해 온도, 최대 토큰 수, 빈도 및 존재 패널티 등의 파라미터를 조정합니다.
  5. 응답 확인: "Submit" 버튼을 클릭하면, 입력한 프롬프트에 대한 모델의 응답을 확인할 수 있습니다. 필요한 경우 파라미터를 조정하고 다시 시도하여 다양한 결과를 얻을 수 있습니다.

ChatGPT Playground는 나에게 적합한 모델이 무엇이고, 프롬프트를 어떻게 구성하면 되는지 테스트해볼 수 있는 유용한 환경입니다. 실제 API를 사용해 테스트를 진행하는 것은 매 호출마다 비용이 들기 때문에 Playground 환경을 적극적으로 활용하면 좋습니다.

 

https://platform.openai.com/playground

 


마치며...

업무의 효율성을 높이기 위해 ChatGPT API를 활용한 툴을 만들고자 ChatGPT API 사용방법을 찾아봤습니다. 그 과정에서 버전 문제로 발생한 함수 호출 에러, 카드 등록을 하지 않을 시 API를 사용하지 못하는 문제, role과 파라미터에 대한 설명 등의 문제 해결방법 또는 설명을 추가했으니 필요하시다면 참고하시면 좋을 것 같습니다.