컴퓨터/Python

Python (17) - ChatGPT를 API로 사용해보자 (openai)

달서비 2023. 5. 15. 21:19

ChatGPT는 이미 아주 유명하다고 생각합니다. 인공지능 비서 등 다양한 요소에서 충분하게 사용할 수 있습니다. 해당 프로젝트 제작에 앞서, 파이썬으로 ChatGPT의 기본 엔진이 되는 GPT를 API로 사용하는 방법에 대하여 알아보겠습니다.

 

GPT란 무엇인가?

ChatGPT 로고

(해당 문구는 ChatGPT에 질문 한 것을 그대로 적었습니다.)

GPT는 "Generative Pre-trained Transformer"의 약자로, 대규모 텍스트 데이터를 사용하여 사전에 훈련된 언어 모델입니다. 이 모델은 주로 자연어 이해(NLU) 분야에서 사용되며, 문장 생성, 기계 번역, 질의 응답, 문서 요약 등 다양한 자연어 처리 작업에 사용됩니다.

GPT 모델은 인간과 같은 방식으로 문장을 생성하며, 이전에 입력된 문장의 문맥을 이해하여 다음 단어를 예측합니다. 이를 위해 GPT 모델은 트랜스포머(Transformer) 아키텍처를 사용합니다. 이는 입력 문장을 토큰 단위로 분할하고, 각 토큰에 대한 임베딩을 생성하여 모델의 입력으로 사용합니다.

GPT 모델은 다양한 크기와 버전이 있으며, 모델의 크기가 커질수록 성능이 향상됩니다. 최근 출시된 GPT-3 모델은 약 175억 개의 매개 변수를 가진 대규모 모델로, 자연어 생성 분야에서 상당한 성과를 거두었습니다.

따라서, GPT는 다양한 자연어 처리 작업에 사용되는 대규모 언어 모델로, 자연스러운 문장 생성과 자연어 이해 분야에서 매우 유용한 모델입니다.

 

API를 가져와보자

먼저 openAI 웹사이트에 가입하여야 합니다. MS 계정 혹은 구글 계정으로 회원 가입할 수 있습니다

https://platform.openai.com/

 

OpenAI API

An API for accessing new AI models developed by OpenAI

platform.openai.com

우선 회원 가입, 혹은 로그인합니다.

로그인하면 이제 API를 발급하도록 합니다. 1시에 계정 버튼을 누르면 View API KEYS 버튼을 누르면 API키를 발급하면 됩니다

여기서 한가지 유의 해야 할 것이 있습니다. Create new secret key 버튼을 누르면 API키를 생성합니다. 여기서 주의하여야 하는 사항은 키를 발급받으면 무조건 다른 곳에 복사하셔야 합니다. 아니면 다시 키를 발급받아야 하는 대참사가 일어납니다...

Usage에 들어가면 한 달에 얼마를 사용했는지 알 수 있습니다. 처음 명령을 실행하면 18달러치 줍니다.

한 달 동안 열심히 뽕을 뽑아보도록 합시다.

 

GPT 데이터를 가져와 해당 데이터를 파싱하기

GPT는 데이터를 JSON으로 받습니다. JSON의 형식을 사용하는 방법은 아래 링크로 남겨두겠습니다.

https://dalseobi.tistory.com/117

 

파일포맷 - XML과 JSON에 대하여 알아보자.

이전에, 블로그에 XMLHttpRequest 객체에 대하여 작성한 적이 있었습니다. XML 파일을 이용하여 데이터를 받았습니다. XML만큼 전송에서 많이 쓰는 JSON 파일도 있습니다. 두 가지 문법과 방식에 차이에

dalseobi.tistory.com

 

여기서는 GPT에게 보내는 한 가지 예시를 만들어 보겠습니다.

import openai

openai.api_key = "sk-... 복사한 API키"
comp = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", 
               "content": "I want to know chatGPT. What is this?"}]
)

print(comp)

 GPT 3.5에게 "I want to know chatGPT. What is this?"를 보냅니다. 해당 명령을 보내면 아래의 답변을 받을 수 있습니다.

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "ChatGPT is a conversational artificial intelligence program that uses natural language processing (NLP) and machine learning algorithms to interact with users in order to provide helpful responses to their queries. It is a product of OpenAI, which is a research organization focused on creating artificial intelligence in a way that is safe, transparent, and beneficial for the world. ChatGPT uses a deep neural network to generate responses to user inputs, and can be integrated into various platforms such as messaging apps, voice assistants, and chatbots.",
        "role": "assistant"
      }
    }
  ]
  ...
}

여기서 필요한 부분은 1번째 choices - meseage - content 부분입니다. 해당 부분을 파싱하는 방법은 다음과 같습니다.

# JSON 데이터를 파싱하여 "content" 출력
content = comp["choices"][0]["message"]["content"]
print(content)

'''
ChatGPT is an artificial intelligence chatbot that uses machine learning algorithms to simulate human-like conversations. It is designed to interact with human users through messaging platforms such as Facebook Messenger, Telegram, WhatsApp, and Slack. ChatGPT can answer general knowledge questions, provide recommendations, assist with decision-making, and engage in casual conversations on various topics. It learns from the data it receives from user interactions and continuously improves its responses.
'''

파이썬에서 JSON 데이터를 가져오는 방법은 간단합니다. 대괄호를 통하여 더 자세하게 설정을 하면 아래와 같은 값을 구할수 있습니다. 이제 이것을 통하여 다른 컴포넌트에 추가할 수 있습니다.