기타

[Python] OpenAI API 사용하기

비번변경 2023. 4. 17. 21:03

개요

최근 OpenAI가 개발한 ChatGPT가 굉장히 화제가 되고 있는데, 이 글에서는 Python과 OpenAI API를 이용해 ChatGPT와 대화하는 간단한 프로그램을 작성해보려고 한다.

 

openai 계정이 필요하므로 회원가입부터 진행한다.

 

회원가입/로그인

https://platform.openai.com/에 접속하여 회원가입 또는 로그인한다. 회원가입 시 전화번호 인증이 필요하다.

 

 

크레딧 확인

API를 호출할 때마다 비용이 발생한다. 회원가입을 하면 무료 크레딧이 기본적으로 부여된다.

부여된 크레딧은 오른쪽 상단 Personal > Manage account로 이동하여 확인할 수 있다.

 

 

API 키 발급

오른쪽 상단 Personal > View API keys로 접근하여 API를 호출할 때 사용할 키를 발급한다.

팝업창을 닫으면 발급한 키를 다시 확인할 수 없으니 발급한 키는 잘 복사해 둔다. 만약 복사하지 못했다면 새 키를 발급받으면 된다.

 

 

openai 라이브러리 설치

openai를 사용하기 위한 라이브러리를 설치한다.

pip install openai

 

 

라이브러리 import

설치한 openai 라이브러리는 아래 import 문으로 사용할 수 있다.

import openai

 

 

openai API 키 설정

openai와 연동하기 위해 API를 설정해야 한다. 간단히 openai.api_key 값만 설정하면 된다.

import openai

openai.api_key = '발급받은 OpenAI API KEY'

 

 

사용 예시

openai에 응답을 요청할 때는 openai.ChatCompletion.create 함수에 사용할 모델과 메시지를 전달한다.

openai.ChatCompletion.create(
  # 사용 모델
  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?"}
    ]
)

openai의 응답 자체를 print로 단순히 출력하면 아래와 같다.

실제 메시지는 choices[].message.content에 해당하므로 출력은 아래와 같이 할 수 있다.

response = completion.choices[0].message.content
print(f'A: {response}')

 

예시 코드는 접은 글로 작성해 둔다.

더보기

위 코드는 무한 루프이므로 사용자가 중지할 때까지 챗봇과 대화한다.

import openai

openai.api_key = 'API KEY'

while True:
  # 사용자 질문 입력
  prompt = input('Q:')

  # 응답
  completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", # 사용할 모델
                                            # 보낼 메세지 목록
                                            messages=[{"role": "system", "content":"넌 챗봇이야."},
                                                      {"role": "user", "content": prompt}]) # 사용자

  # 출력
  response = completion.choices[0].message.content
  print(f'A: {response}')

 

실행 결과

 

 

참고 문서

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