안녕하세요. 이전 시간에는 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 글자만 가질 수 있는 제약 사항이 있습니다.
- role
좀 더 디테일한 내용은 아래 페이지에서 확인이 가능합니다.
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
'기타 > 기타' 카테고리의 다른 글
[기타] 날짜와 시간 표현의 국제 표준인 ISO 8601에 대해서 자세히 알아보자. (RFC3339, ISO8601, JavaTime) (0) | 2024.07.02 |
---|---|
ChatGPT 알아보기 - Token (0) | 2023.06.04 |
ChatGPT 알아보기 - ChatGPT의 동작 과정과 프롬프트(Prompt) ? (0) | 2023.05.13 |
ChatGPT 알아보기 - 개요와 기본 사용법 (1) | 2023.05.05 |
[기타] CloudEvents v1.0.2 번역 및 정리 - 이벤트 메시지 스키마 스펙 (0) | 2023.04.19 |
댓글