Published on

ChatGPT API 사용해보기

Authors
  • 테크버킷
    Name
    테크버킷
    Twitter

이글에서는 ChatGPT API를 사용하는 기본적인 방법을 소개합니다. API를 사용한 서비스 예제를 찾고 계시다면 ChatGPT API로 초간단 AI 추천 서비스 만들기를 참고하세요

함수 호출(Fucntion Calling) 예세를 찾고 계시다면 OpenAI의 함수 호출(Function Calling) 소개 및 Python 예시를 참고하세요.

ChatGPT

ChatGPT는 사용자가 질문을 하면 그럴듯한 답변을 생성해주는 대화형 인공지능 모델입니다. 인간이 답변한 것처럼 답변을 해주는 것도 놀랍지만, ChatGPT를 생산적으로 활용하는 사례가 알려지면 더욱 화제가 되고 있습니다. API에 대한 사용법이 아닌 Chat GPT에 대한 정보를 찾고 계시다면 ChatGPT 입문자를 위한 가이드도 있습니다.

ChatGPT API

OpenAI에서 만든 대화형 인공지능 모델인 ChatGPT를 API로 사용할 수 있는 ChatGPT API가 출시되었습니다. 기존에는 OpenAI의 API를 활용할 때 ChatGPT와는 다른 AI 모델을 사용하였지만, 이제는 ChatGPT에서 사용하는 모델과 동일한 gpt-3.5-turbo를 사용할 수 있게 되어 대화식 채팅에 있어서 성능이 뛰어나다고 합니다. ChatGPT API라고 하는 것은 실제로는 이 gpt-3.5-turbo를 사용하여 OpenAI의 API를 사용하는 것을 의미합니다.

참고 - Open AI의 모델에 대한 관련 문서

사용법 요약

1. API 키를 받습니다.

API 키를 생성하는 방법은 OpenAI의 공식 문서나 다른 여러 글에서 설명하고 있기 때문에 간략하게만 소개하겠습니다. OpenAI의 API발급 및 사용방법은 platform.openai.com에서 다루고 있습니다. 이곳에 접속해서 로그인한 다음, 상단 프로필 > View API Keys를 클릭 한 다음 + Create new Secrete key 를 눌러서 API키를 받을 수 있습니다. 발급받은 API키를 아래에서 사용할 것입니다.

2. 요청

아래는 gpt-3.5-turbo 모델을 사용하여 https://api.openai.com/v1/chat/completions에 요청하는 curl 스크립트입니다. python이나 javascript 등에서도 사용할 수 있습니다. $OPENAI_API_KEY 부분에는 API 키를 넣으면 됩니다. 그리고 messages 부분에는 직접 만든 대화(질문)를 입력합니다. 한국어로 입력해 주어도 됩니다.

요청
curl https://api.openai.com/v1/chat/completions \
 -H "Authorization: Bearer $OPENAI_API_KEY" \
 -H "Content-Type: application/json" \
 -d '{
 "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?"}
    ]
 }'

3. 응답

그러면 아래처럼 응답을 받을 수 있습니다.

응답
{
  "id": "chatcmpl-6p5FEv1JHictSSnDZsGU4KvbuBsbu",
  "object": "messages",
  "created": 1677693600,
  "model": "gpt-3.5-turbo",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": "OpenAI's mission is to ensure that artificial general intelligence benefits all of humanity."
      }
    }
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 18,
    "total_tokens": 38
  }
}

풀이

1. Role 과 Content

챗 지피티에게 대답을 듣기 위해 message에 대화를 입력해 주어야 합니다. 입력하기 위해 몇 가지 규칙을 알아야 합니다.

각 message는 rolecontent라는 두 가지 속성을 가집니다. rolesystem, user, assistant 중 하나의 값이어야 합니다.. content는 role에서 정의된 역할에 따른 메시지 내용을 가집니다. user는 사용자를 의미하고, assistat는 대답을 해주는 챗봇입니다. (system의 지령은 대화의 흐름에 더 큰 영향을 줍니다.) 메시지는 나열된 순서대로 처리되며, assistant가 이에 대한 응답을 제공합니다. 다음과 같이 message를 만들 수 있습니다.

"messages": [
    {"role": "system", "content": "assistant는 한국어를 가르치는 국어 교사이다."},
    {"role": "user", "content": "너는 한국어를 사랑하니?"}
]

실제 요청

실제 요청을 해보니 아래와같이 응답을 받을 수 있었습니다.

요청
curl https://api.openai.com/v1/chat/completions \
 -H "Authorization: Bearer $OPENAI_API_KEY" \
 -H "Content-Type: application/json" \
 -d '{
 "model": "gpt-3.5-turbo",
 "messages": [
        {"role": "system", "content": "assistant는 한국어를 사랑하는 국어 교사이다."},
        {"role": "user", "content": "너는 한국어를 사랑하니?"}
    ]
 }'
응답
{
  "id": "chatcmpl-6qhMHZvFBoFW13dvUQ3aOr9Fc2lxU",
  "object": "chat.completion",
  "created": 1678017745,
  "model": "gpt-3.5-turbo-0301",
  "usage": {
    "prompt_tokens": 48,
    "completion_tokens": 69,
    "total_tokens": 117
  },
  "choices": [{
      "message": {
        "role": "assistant",
        "content": "저는 프로그램으로 작동하는 인공지능이므로 감정을 가지지 않습니다. 단지, 제작된 프로그램에서 한국어를 인식하고 대화를 할 수 있도록 프로그래밍 되었습니다."
      },
      "finish_reason": "stop",
      "index": 0
  }]
}

무엇을 만들 수 있을까?

ChatGPT API를 사용한 활용법은 많습니다. 개발자의 도움이나 전문 지식이 필요할 수는 있지만 API를 사용해서 그 가능성을 확장하고자 한다면 한번 도전해보시길 추천합니다.

  • 이메일 또는 기타 글 작성
  • 파이썬 코드 작성
  • 일련의 문서에 대한 질문에 답변
  • 대화형 에이전트 만들기
  • 소프트웨어에 자연어 인터페이스 제공
  • 다양한 과목의 튜터
  • 언어 번역
  • 비디오 게임 등을 위한 캐릭터 시뮬레이션

참고할만한 사이트