13. “아직도 이걸 안쓰세요?” 업무자동화를 위한 첫걸음ChatGPT API(feat. openai)

안녕하세요 다제입니다. 우리는 지난시간 플러그인을 통해 ChatGPT를 활용하는 방법에 대해서 다루었습니다. 오늘은 사무 업무 자동화에서 파이썬을 재치고 1위를 차지한 ChatGPT API를 발급 받는 방법과 어떻게 코드 수준으로 활용할 수 있는지에 대해서 알아보고자 해요.

ChatGPT API 발급 받기


1-1. 가장 우선적으로 해야할 일은 OpenAI에서 개별 API키를 받아와야합니다. API가 무엇인지 잘 모르는 분들을 위해 쉽게 설명을 드리자면, 컴퓨터 프로그램들이 서로 정보를 요청하고, 요청에 맞는 정보를 전달하는 방식입니다. 그런데, 정보를 아무에게 막 전달할 수 없기에 사람마다 고유한 비밀번호(키 값)를 부여해주게 됩니다. 그럼 정보를 달라는 요청 신호를 수신했을 때, 이 사람에게는 요청한 정보를 전달해도 되는지를 API key값을 통해 확인을 하고 요청한 정보를 제공합니다. 그러니 우리도 당연히 API 키 값을 발급받아야겠죠? https://platform.openai.com/ 에 접속합니다. 

BhEcmCAHhoAtAVKo MBk1dGUC58hVPZRFV 3k7UMgKRlu3NLPmAZffDo6VAMHGcnfoUg84Q05wGGCEaBKMXBA6 HK

1-2. 우측 상단에 Personal에서 View API keys로 들어갑니다. 이때 1-3처럼 바로 화면이 넘어가지 않고, 신용카드를 등록하라는 창으로 넘어갈 수도 있습니다. 그때는 당황하지 마시고, 가지고 계신 신용카드를 등록하시면 아래 화면을 넘어갈 수 있습니다. 또한, 주소를 입력하라는 공백이 보이실텐데요. 신용카드가 막혔을 때를 대비하여 주소지로 청구할 수 있도록 주소지를 입력하도록 되어 있습니다.

1-3. 해당 페이지에서 Create new secret key를 눌러서 API키를 발급받습니다. 보시는 것과 같이 API를 여러 개 발급할 수 있습니다. 목적과 용도에 따라서 API 사용량을 쉽게 체크 할 수 있도록 이렇게 만들어 놓은 것으로 보입니다.
ypTt7NVTmLWn8FjSJxh09T2e9Ijn7mPXCeIh8mMMJIJPV8h1Cs4vkw hTzaPBB aNSHeoIobNSGt1cTQ1nfale1gSPB 4cUdmZn2aqUf6LoJc0YOONn9at7SUcXLtVT8PBpquQh5nRB8Yb1r4Oqr7mo

1-4. 이제 새로운 라이브러리를 설치해보도록 하겠습니다.

2JLybn6DNIniN7S7OlEMAV244z7uPyVZ2n O983 f5GrcM5OQI1D645y70QKWVWz3WiWY7XVfQCf5mO1lv3kxTDdOKrOpOntB0ni2vXw6KIeloBKDEbf8nL1kMnqwp6JpiYR7ZoKzECVte0 UCDynOM

위 이미지처럼 코드를 기재하고 shift + enter를 눌러서 실행시켜줍니다. 

그럼 설치가 진행되고, 곧 완료가 됩니다. 

1-5. 발급 받은 키와 막 설치한 openai 라이브러리를 활용하여 질문 생성 함수를 만들어 보도록 하겠습니다. 

def question_maker(prompt="", api_key=""):
   openai.api_key = API_KEY
   sentence = f"넌 각 {prompt} 분야의 전문가야. {prompt}에서 중요하다고 생각되는 사안에 대해서 질문을 10개씩 알려줘"
   max_retry = 2


   for i in range(0, max_retry):
       while True:
           try:
               response = openai.ChatCompletion.create(
                   model="gpt-3.5-turbo",  # 사용할 openai 모델명
                   messages=[{"role": "user", "content": sentence}]  # 입력 prompt
               )


               answer = response['choices'][0]['message']['content'].strip()
               # tokens = response.usage.total_tokens
               return { prompt : answer }
  
           except Exception as e:
               print(f"API Error Message : {e}")
               print(f"Retrying {i+1} time(s) in 4 seconds...")
              
               if i+1 == max_retry:
                   return prompt
               time.sleep(2)

우리가 수집하고 싶은 분야를 category_list에 넣습니다. 만약, 제가 학생이고 생물학을 전공하고 있다고 한다면, 분자생물학, 세포생물학, 세포면역학, 면역학, 동물생리학, 유기화학, 생화학 등으로 category_list를 구성하고. 위 코드를 실행하면 생물학 관련된 질문들이 수집할 수 있습니다. category_list에 있는 category를 순차적으로 순회하게 되는데, 이때 question_maker의 인자로 category와 API_KEY가 입력됩니다. 입력된 category는 question_maker 함수에서 sentence와 결합되어 최종적인 prompt가 됩니다. 그리고 우리의 api_key는 openai.api_key라는 변수에 할당해주게 됩니다. 그리고 api를 사용하여 문장을 생성해야하는데요. api에서 문장을 생성할 수 있는 방식은 크게 3가지로 구성되어 있습니다. 

completion 방식 : 제공된 프롬프트 및 매개변수에 대한 완성을 생성합니다. 아래 처럼 모델과 prompt와 몇가지 파라미터 변수를 입력을 넣어주게 됩니다. 

[completion 텍스트 생성 이용방법 : input]

import os
import openai
openai.api_key = “Your API_KEY”
openai.Completion.create(
  model=”text-davinci-003″,
  prompt=”테스트를 진행해볼까?”,
  max_tokens=7,
  temperature=0.7
)

[completion 텍스트 생성 이용방법 : output]

{
  “id”: “-“,
  “object”: “text_completion”,
  “created”: -,
  “model”: “text-davinci-003”,
  “choices”: [
    {
      “text”: “\n\n좋습니다”,
      “index”: 0,
      “logprobs”: null,
      “finish_reason”: “length”
    }
  ],
  “usage”: {
    “prompt_tokens”: 5,
    “completion_tokens”: 7,
    “total_tokens”: 12
  }
}

chat 방식 : 채팅 대화가 주어지면 모델이 채팅 완료 응답을 반환합니다.

[chat 방식 텍스트 생성 이용방법 : input]

import os
import openai
openai.api_key = “Your API_KEY”

completion = openai.ChatCompletion.create(
  model=”gpt-3.5-turbo”,
  messages=[
    {“role”: “user”, “content”: “안녕!”}
  ]
)

print(completion.choices[0].message)

[chat 방식 텍스트 생성 이용방법 : output]

{
  “id”: “chatcmpl-123”,
  “object”: “chat.completion”,
  “created”: -,
  “choices”: [{
    “index”: 0,
    “message”: {
      “role”: “assistant”,
      “content”: “\n\n안녕? 어떻게 오늘은 도와드릴까요?”,
    },
    “finish_reason”: “stop”
  }],
  “usage”: {
    “prompt_tokens”: -,
    “completion_tokens”: -,
    “total_tokens”: –
  }
}

edit 방식 : 프롬프트와 지침이 주어지면 모델은 편집된 버전의 프롬프트를 반환합니다.

[chat 방식 텍스트 생성 이용방법 : output]

import os
import openai
openai.api_key = “Your API_KEY”
openai.Edit.create(
  model=”text-davinci-edit-001″,
  input=”주말애 머할건뎅?”,
  instruction=”오타를 수정하세요”
)

[chat 방식 텍스트 생성 이용방법 : output]

{
  “object”: “edit”,
  “created”: -,
  “choices”: [
    {
      “text”: “주말에 머해?”,
      “index”: 0,
    }
  ],
  “usage”: {
    “prompt_tokens”: -,
    “completion_tokens”: -,
    “total_tokens”: –
  }
}

** 여기서 잠깐 **

여기서 여러분은 궁금하실 수 있습니다. 어떻게 이걸 확인할 수 있지? 어디서 저자는 이걸 알 수 있는걸까? 이 책 서두에서도 말씀드렸듯 저는 여러분에게 새로운 모델과 라이브러리가 나왔을 때 어떻게 찾고 어떻게 접근할 수 있는지를 알려드린다고 하였기에 해당 부분에 대해서 자세히 설명 드리도록 하겠습니다. 저희가 새롭게 설치한 라이브러리가 무엇이라고 하였죠? 네, 맞습니다. openai입니다. 그렇다면, 인터넷 창에 openai library doc라고 검색을 해보시겠어요? 

B aM OclxGgLeL4 yKRxAEMgAy9ogO mTG 2lxSOZx5aERWDyFuu74fYvQPlX72TushM5aQQtlzQd5MDCiWDiJS5qV8ygSa89xA8MQxkxa1ljoXtgOLy9vuJU8vZz0ER3PyO8zJgKg

그럼 openai api를 어떻게 사용해야하지 설명해주는 reference or introduction 웹페이지를 찾으실 수 있습니다. API reference로 한번 들어가보겠습니다. 훑고 내려가시다보면, 익숙한 파이썬 코드가 보입니다.

지금까지 ChatGPT가 무엇이고, 어떻게 활용하는지에 대한 예제까지 살펴보았습니다.

관련된 프로젝트가 궁금하시다구요? 어떻게 활용하는지 예시도 궁금하시죠?

위와 같이 다양한 글들이 있으니 참고 부탁드립니다.

감사합니다.

답글 남기기