본문 바로가기
인공지능/ML, DL

[ChatGPT] Python ChatGPT API 사용 방법 (한국어 예시)

by judy@ 2023. 4. 27.

목차

1. API key 받기

2. 결제 정보 등록하기

3. python으로 ChatGPT API 요청하고 응답받기


1. API key 받기

1) http://platform.openai.com/에 접속

2) 로그인 (계정이 없는 경우 회원가입)

3) 우측 상단 Personal > view API keys 클릭

4) + create new secret key 선택

5) 원하는 이름(ex.my-first-key)으로 새로운 키를 생성
(이 키는 요금이 부과되므로, 절대 타인에게 공유해서는 안되며 private 공간에 파일 또는 텍스트의 형태로 저장해두어야 함)

6) 키가 생성되었는지 확인

2. 결제 정보 등록하기

회원가입 직후에는 $18의 무료 크레딧이 제공된다. 그러나 일정 기간이 지나고 나면 무료 크레딧은 expired 되고, billing 정보 없이는 api 호출에서 오류가 발생하게 된다. 무료 크레딧이 있는지는 좌측 메뉴에서 Usage를 눌러 Free trial usage가 있는지 확인해보면 된다.

 

크레딧이 없는 경우 오류가 발생하는데 아래는 그 예시이다.

>>> openai.ChatCompletion.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?"}
...     ]
... )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/homebrew/anaconda3/envs/chatgpt/lib/python3.10/site-packages/openai/api_resources/chat_completion.py", line 25, in create
    return super().create(*args, **kwargs)
  File "/opt/homebrew/anaconda3/envs/chatgpt/lib/python3.10/site-packages/openai/api_resources/abstract/engine_api_resource.py", line 153, in create
    response, _, api_key = requestor.request(
  File "/opt/homebrew/anaconda3/envs/chatgpt/lib/python3.10/site-packages/openai/api_requestor.py", line 226, in request
    resp, got_stream = self._interpret_response(result, stream)
  File "/opt/homebrew/anaconda3/envs/chatgpt/lib/python3.10/site-packages/openai/api_requestor.py", line 620, in _interpret_response
    self._interpret_response_line(
  File "/opt/homebrew/anaconda3/envs/chatgpt/lib/python3.10/site-packages/openai/api_requestor.py", line 683, in _interpret_response_line
    raise self.handle_error_response(
openai.error.RateLimitError: You exceeded your current quota, please check your plan and billing details.
>>>

결제 정보 등록 방법

1. 플랫폼의 좌측 메뉴바에서 Billing 탭을 클릭 (계정 클릭 이후)

2. 결제 정보 등록 (카드 등록 시 5$의 임시 금액이 결제됨)

3. 약 2-3분 기다린 뒤, 잘 등록되었는지 확인

4. 혹시 모를 상황을 대비해 Billing > Usage limit 설정

3. python으로 ChatGPT API 요청하고 응답받기

ChatGPT API는 python 외에 node.js, curl을 통해 호출할 수 있으며, 그 외 다른 언어에서도 지원하고 있음 (공식은 아니고..)

 

1.  pip install openai  로 라이브러리 설치

2. python shell 진입 후 정보 입력

  - ORGANIZATION-INFO: 계정 클릭한 뒤, Settings > Organization ID 내의 정보 입력

  - API-KEY-PATH: 위에서 복사한 key를 파일에 저장한 뒤, 그 경로를 입력

>>> import os
>>> import openai
>>> openai.organization="[ORGANIZATION-INFO]"
>>> openai.api_key_path = "[API-KEY-PATH]"

3. 활용 가능한 모델 선택

>>> openai.Model.list()
... 대충 json형태로 많은 모델이 제시됨

4. 예제 기반으로 요청을 보낸 뒤 응답 확인

 

요청 내용 (API  튜토리얼에 있음)

>>> openai.ChatCompletion.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?"}
...     ]
... )

응답 내용

<OpenAIObject chat.completion id=chatcmpl-76x6pLDuNww3uHu7TU9YXhkBhrou4 at 0x10688f600> JSON: {
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "The 2020 World Series was played at Globe Life Field in Arlington, Texas.",
        "role": "assistant"
      }
    }
  ],
  "created": 1681891539,
  "id": "chatcmpl-76x6pLDuNww3uHu7TU9YXhkBhrou4",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 17,
    "prompt_tokens": 57,
    "total_tokens": 74
  }
}

5. 다른 예시로 수행해보기 (답장이 오는데 한 5초 정도 걸림)

 

요청 내용

response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "너는 따뜻한 심리 상담사야"},
        {"role": "user", "content": "저 요새 매일 우울하고 재미가 없습니다. 이럴 때 어떻게 하면 좋을까요?"},
    ]
)

응답 내용

>>> response['choices'][0]['message']['content']
'저는 이럴 때 일단 주변에 있는 소중한 사람들과 대화하는 것을 추천합니다. 그리고 자신만 의 취미나 관심사를 찾아보고 그것에 몰두하는 것도 좋은 방법입니다. 운동이나 야외 활동도 치료에 도움이 될 수 있습니다. 만약 증상이 꾸준히 이어지거나 심각하다고 생각된다면, 전문적인 상담을 받는 것도 고려해보세요. 상담사가 방향을 잡아주고 도와줄 수 있습니다.'

 

6. 호출 이후 바로 사용량에 청구됨

 

 

 

 

 

반응형