[Python / OpenAI API] 파이썬으로 ChatGPT 사용하는 법
안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
오늘은 요즘 너무나도 핫한 ChatGPT를 우리가 코드로 직접 사용할 수 있도록 만들어진 OpenAI API의 사용법을 알아보겠습니다.
개인적으로 ChatGPT를 사용해보면서 너무나도 빨리 변해가는 세상에 두려움도 느끼지만 그만큼 새로운 기회도 많이 생길 것이라 생각합니다. 비록 AI 연구자들만큼 AI의 원리나 이를 구현할 능력은 부족하지만, 그들이 만들어놓은 멋진 서비스들을 이용해서 저의 일에 활용할 수 있다면 그것 역시 큰 가치를 가질 것이라 믿습니다. 마치 자동차를 만들지 못해도 운전을 기가 막히게 잘하는 카레이서들 처럼 말이죠.
본론으로 들어가기에 앞서, OpenAI API는 사용하는 모델 및 토큰의 양에 따라서 비용이 나가게 됩니다.
(gpt-3.5-turbo 모델 기준: 1000개의 토큰에 약 0.002달러)
토큰이란 용어가 익숙하지 않으실텐데요. 예를 들어 "The quick brown fox jumped over the lazy dog"이란 무장이 있다고 할 때,
토큰은 "The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog". 총 9개라고 할 수 있습니다.
처음 가입을 하면 5달러를 무료로 제공해주니, 해당 내용을 따라하고 여러분들이 실습해보시는데에 아주아주 충분할 것이라 생각합니다.
그럼 본론으로 들어가보겠습니다.
1. OpenAI API 페이지 접속 및 로그인
호랑이를 잡기 위해서는 호랑이 굴로 들어가야겠죠? 맞는 비유인지 모르겠지만 ChatGPT를 잡으러 ChatGPT를 만든 OpenAI 사의 웹페이지로 들어가봅시다.
저는 구글에서 'chatgpt'를 검색했을 때 가장 상단에 나오는 페이지로 들어간 후, 아래의 사진과 같이 'Developers' 메뉴를 클릭하면 나타나는 'API reference'를 클릭했습니다.
편의를 위해서 API 페이지로 바로 가는 링크를 달아두겠습니다.
https://platform.openai.com/docs/api-reference
그러면 아래와 같이 로그인(Log in)과 가입(Sign up) 버튼이 나오는데, 가입한 적이 없으시다면 가입해주시고, 이미 가입하셨더면 로그인 해주시면 됩니다. 참고로 구글이나 마이크로소프트 계정을 이용해서 가입하실 수도 있어요.
로그인이 완료되면 아래와 같이 우측 상단에 Personal 버튼이 생깁니다.
2. OpenAI API key 발급받기
VScode로 넘어가서 OpenAI API를 코드로 다루기 전에 해야할 일이 있습니다. 바로 API key를 발급받는 것입니다.
1) 우측 상단에 있는 'Personal'을 클릭하시고, 'View API keys'를 클릭해주세요.
2) 그러면 아래와 같은 화면이 나오는데 'Create new secret key' 버튼을 눌러주세요.
3) 생성된 키는 아래에 표시된 곳에 생성됩니다. 여기서 'OK'를 바로 누르시면 다시 발급받아야 하므로, 꼭 초록색 버튼을 눌러서 복사한 뒤에, 메모장 같은 곳에 따로 붙여넣어서 저장해주세요. 그리고 다른 사람에게 노출되지 않도록 주의해주세요!!
3. OpenAI API 설치하기
이제 OpenAI API를 파이썬 코드를 이용해서 사용하기 위해서 VSCODE를 켜주세요. 켜셨다면 터미널 창에 아래의 코드를 작성하고 엔터를 눌러주세요.
pip install openai
아래와 같은 문구가 출력되면 설치가 완료된 것입니다.
4. VSCODE 개발환경에서 ChatGPT 구현하기
간단한 파이썬 코드를 통해서 ChatGPT 페이지가 아닌 터미널에서 ChatGPT와 질문을 주고 받아 보겠습니다.
<코드>
# openai api를 불러오고, 발급 받은 api key를 문자열로 입력
import openai
openai.api_key = "OPENAI_API_KEY"
# gpt와 주고받은 메세지를 저장할 빈 리스트 생성
messages = []
# 무한 루프 생성 (질문과 답변을 계속 반복)
while True:
# 사용자의 질문을 입력받고, messages 리스트에 저장
user_content = input("사용자: ")
messages.append({"role": "user", "content": f"{user_content}"})
# OpenAI의 Chat API 생성
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=messages)
# 답변 받은 메세지를 messages 리스트에 저장
assistant_content = completion.choices[0].message["content"].strip()
messages.append({"role": "assistant", "content": f"{assistant_content}"})
# ChatGPT의 답변 출력
print(f"ChatGPT: {assistant_content}")
<출력>
저는 저녁 메뉴를 추천해달라고 했고, 추가로 더 메뉴를 추천해달라고 하였습니다. 질문과 답변을 잘 보면 이전 채팅을 참고하여 답변을 하는 것을 알 수 있어요.
참고로 ChatCompletion.create( ) 함수에는 여러가지 파라미터들이 있고, 이것들을 목적에 따라서 조금씩 바꿔가면서 다른 결과를 낼 수 있다고 합니다. 공부를 더 해서 추후에 해당 파라미터들의 의미에 대해서 소개드릴 수 있도록 하겠습니다.
오늘 준비한 내용은 여기까지입니다.
감사합니다.
<참고 자료>
파이썬 chatgpt API 사용법(gpt-3.5-turbo) 코드 10줄로 챗GPT 만들기_프로그래머 김플 스튜디오
https://www.youtube.com/watch?v=b-QeMi1A2go