본문 바로가기
프로그래밍/기타

ChatGPT 알아보기 - API 사용하기

by 사바라다 2023. 5. 24.

안녕하세요. 이전 시간에는 ChatGPT의 동작 과정과 프롬프트(Prompt)에 대해서 알아보는 시간을 가졌었습니다. 프롬프트 엔지니어링을 통해서 서비스에서 ChatGPT를 써볼 수 있지 않을까 ? 라고 고민하실 수 있습니다. 저도 고민하고 있고 실제로 사용하는것도 API 하나로 쉽게 가능합니다.

오늘 포스팅에서는 ChatGPT를 프로젝트에 적용하기 위해서의 API의 사용방법에 대해서 알아보도록 하겠습니다.

Open API 사용방법

https://openai.com/blog/introducing-chatgpt-and-whisper-apis 사이트에 접속하여 로그인을 진행합니다.

로그인을 하게되면 3가지를 선택할 수 있습니다. 해당 UI에서 제일 오른쪽의 API를 선택합니다.

그 후 프로필을 선택하고 View API Keys를 선택하면 API를 호출할 수 있는 Access Ke를 등록 및 확인할 수 있습니다.

Access Key를 등록하는 화면에서 Key를 생성하면 팝업창이 하나 뜨며 해당 팝업창에서 Key를 확인할 수 있습니다. 창에서 Key를 복사해 두고 이후 API를 호출할 때 인증 key로 활용합니다. 한번 창을 닫으면 해당 key는 더 이상 확인이 불가능하므로 반드시 복사가 필요합니다.

Free Tier

아쉽게도 ChatGPT API는 무제한 무료가 아닙니다. Free Tier를 제공하지만 해당 Free Tier도 제한적입니다. 위 이미지가 처음 회원가입을 한 후 사용할 수 있는양입니다. 18$ 금액의 API 사용을 할 수 있습니다. ChatGPT의 과금 체계는 무료 ChatGPT의 경우 gpt-3.5-turbo는 문장의 Tokenizing해서 1000 tokens에 $0.002를 과금하는 체계를 가지고 있습니다.

기타 모델 및 자세한 과금체계는 oepnai의 pricing 사이트를 참고해주시기 바랍니다.

API 스펙

위에서 Key를 얻는 방법을 확인했으니 이제 API Spec을 확인해보겠습니다.

먼저 필수적인 attribute는 model과 messages로 2개가 있습니다.

  • model
    • string
    • 사용하고자 하는 AI 모델, 어떤 Chat API를 사용할지에 대해서 선택할 수 있습니다. 모델에 따라서 성능 및 가격, 그리고 적합한 곳이 다를 수 있습니다. 좀 더 자세한 내용은 https://platform.openai.com/docs/models/models를 참고하시면 됩니다.
  • messages
    • array
    • 실제 대화와 관련된 message의 list를 표현한 attribute 입니다. list의 element로 object 타입을 가집니다.
    • object
      • role
        • string
        • 메시지의 역할을 정의하는 필드. system, user, 그리고 assistant 중 하나를 가집니다.
      • content
        • string
        • 실제 전달하고자 하는 메시지
      • name
        • string
        • Optional
        • 이 메시지를 작성한 작성자의 이름. a-z, A-Z, 0-9, and 언더스코어(_), 그리고 64 글자만 가질 수 있는 제약 사항이 있습니다.

좀 더 디테일한 내용은 아래 페이지에서 확인이 가능합니다.

https://platform.openai.com/docs/api-reference/chat/create

API 예제

위에서 API_Key를 발급 받는 방법과 API의 스펙에 대해서 알아보았습니다. 지금까지 배운 내용을 토대로 curl을 이용해서 실제로 테스트 해보도록 하겠습니다. 요청은 아래와 같습니다. ChatGPT와 동일한 model인 gpt-3.5-turbo에 요청을 하며 Hello!라고 인사를 해보도록 하겠습니다.

POST https://api.openai.com/v1/chat/completions
Content-Type: application/json
Authorization: Bearer {API_Key}

{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Hello!"}]
}

그리고 요청을 보내니 응답을 아래와 같이 받았습니다. 아래 응답을 보면서 중요한 몇개를 확인해보도록 하겠습니다. model은 우리가 지정한 gpt-3.5-turbo이 정상적으로 사용되었다는 사실을 알 수 있었습니다. 또한 usage 필드를 통해서 어느정도의 token을 사용했는지 알 수 있고 이를 통해서 요금을 어느정도 사용했는지 추정할 수 있습니다. 그리고 마지막으로 choices를 보시면 API의 응답으로 실제로 받은 메시지를 확인하실 수 있습니다.

{
    "id": "chatcmpl-7IdiF9BS7znJ2Q84WwWRMtijUkf4e",
    "object": "chat.completion",
    "created": 1684676915,
    "model": "gpt-3.5-turbo-0301",
    "usage": {
        "prompt_tokens": 10,
        "completion_tokens": 10,
        "total_tokens": 20
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "Hello there! How may I assist you today?"
            },
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

마무리

오늘은 이렇게 openai의 API를 연동하여 서비스에서 사용할 수 있는 기반을 다져보았습니다.

다음시간에는 과금 체계인 token에 대해서 좀 더 알아보도록 하겠습니다.

감사합니다.

참조

https://platform.openai.com/docs/api-reference/chat/create

https://platform.openai.com/docs/guides/chat

https://openai.com/pricing

댓글