ChatGPT의 API를 사용하면 직접 만든 앱/어플리케이션에서 ChatGPT가 대답하는 것 처럼 개발할 수 있습니다. 이번 내용은 이것을 위한 기본적인 흐름과 코드 내용을 배워 보는 것 입니다. 그래서 사용자가 질문을 입력하면 ChatGPT가 대답하는 대화하는 어플리케이션 프로그램을 만드는 것 입니다.
ChatGPT API 사용을 위해서는 먼저 OpenAI에 가입이 되어 있어야 하고 API사용을 위한 [0.1]API Key를 발급 받아야 합니다. API Key란, API를 호출할 때 허가 받은(Credit이 설정되어있는) 사람이 호출하는 것인지 아닌지를 확인하기 위해서 미리 만들어진 텍스트를 말합니다. 'sk-'로 시작하며 예를 들면 다음과 같습니다.
개발 환경으로는 Google 의 CoLab을 이용할 예정이며 언어는 파이썬을 사용하겠습니다. Colab은 Google에서 제공하는 온라인 무료/유료 주피터 노트북 서비스입니다. 크롬 브라우저 사용을 권장하고요. 크롬에서 구글 로그인 후 여기를 클릭하시면 [0.2]새로운 노트북 파일을 만들 수 있습니다. 또는 여기 https://colab.google/ 를 통해 New notebook 버튼을 클릭합니다. 그러면 아래와 같은 온라인 주피터 노트북이 열립니다.
오른쪽 위에 있는 연결 버튼을 클릭해서 화면에 보이는 프로그램과 실제 파이썬을 실행시킬 프로그램을 연결합니다. 일반 주피터 노트북에서는 이 실행 프로그램을 커널이라는 용어를 사용하는데 Colab에서는 실행 프로그램(커널)의 연결 뿐만아니라 실행된느 하드웨어 서버도 선택하여 연결 할 수 있습니다.
작성
가운데 부분에 있는 박스 영역을 쎌이라고 말합니다. 쎌을 한번 클릭하면 작성모드로 변하고 작성모드에서 클릭하면 선택 모드로 바뀝니다. 작성 모드에서 실행하려는 파이썬 코드 내용을 입력하여 프로그램을 작성합니다.
실행
실행 시키고자하는 프로그램이 작성된 쎌을 선택하고 Shift와 Enter를 같이 누르면 쎌의 내용이 실행됩니다. 또는 쎌의 왼쪽에 보이는 삼각형 버튼을 클릭하면 코드나 텍스트를 입력할 수 있습니다.
이렇게 해서 여러분도 온라인 파이썬 개발 환경을 가지게 되셨습니다.
QuickStart 에서도 나오지만 API 사용을 위해서 크게 3단계로 진행합니다. 1. 파이썬을 설정하고, 2. API Key를 사용할 수 있게 설정한 뒤에, 3. 필요한 프로그램에서 API Key와 필요한 함수를 호출하여(프로그램을 작성하여) ChatGPT의 기능을 사용할 수 있습니다.
1. 파이썬 설정
가장 먼저 할일은 파이썬을 설정 하는 것 입니다. 그런데 우리는 CoLab을 사용할 예정이어서 별도로 파이썬을 설치할 필요가 없습니다. 로컬 PC에서 해보고 싶으신 분은 이전 포스팅 또는 OpenAI -> Docs -> Quickstart의 파이썬 설치/설정 부분을 참고해주세요. CoLab을 사용할 경우 파이썬 설치는 필요 없지만 필요한 라이브러리는 설치해 주어야 합니다. 물론 CoLab이 ML/AI 개발에 필요한 많은 라이브러리를 설치된 상태로 제공되기 때문에 sci-kit learn 같은 라이브러리는 import만 해서 사용할 수 있습니다. 그러나 openai는 기본 설치가 되어있지 않기 때문에 직접 설치해 주어야 합니다. [1.1]아래의 명령어로 설치할 수 있습니다.
(명령어의 제일 앞에 !가 있는 이유는 Colab 주피터 노트북의 쎌에서 shell 명령을 실행하기 위해서는 명령어 제일 앞에 !를 붙여 줘야 합니다. 즉, 로컬 PC 터미널이나 명령창에서 실행되기를 원하는 명령어의 경우에는 제일 앞에 !(느낌표)가 필요 합니다.) 이러한 방법으로 라이브러리를 설치할 수 있습니다.
다른 필요한 라이브러리와 함께 사용하기 위해서 설치된 버전을 조정해주어야 할 경우가 있습니다. 이런 경우 이미 설치된 라이브러리의 삭제가 필요한 데 이때는 아래의 명령어를 사용합니다.
!pip uninstall 라이브러리이름
2. API Key 설정
API Kye 설정이란, API Kye를 호출 할 때 같이 전송할 수 있도록 준비하는 것을 말합니다. OpenAI 홈페이지에서 API Key를 만듭니다. OpenAI -> API Keys 메뉴 페이지에서 Create new secret key 번튼을 눌러서 새로운 API Key를 만들 수 있습니다.
주피터 노트북의 빈 쎌에 아래의 [2.1]내용을 입력하고 Shift와 Enter를 같이 누르거나 쎌 왼쪽에 있는 삼각형을 클릭하여 쎌을 실행시킵니다.
import os
os.environ['OPENAI_API_KEY']='복사한APIKey내용'
위의 내용은 환경변수 'OPENAI_API_KEY'에 복사한APIKey내용을 설정하는 명령 입니다.
3. 어플리케이션 작성
자, 이제부터는 위에서 작성한 환경변수를 설정하는 프로그램과 같이 어플리케이션 로직이 들어있는 파이썬 코드를 작성하면 됩니다. 지난 포스트에서 QuickStart에 있는 코드를 실행해 보았습니다. 이번에는 OpenAI Example 에서 하나를 진행해 보겠습니다. 위의 내용 까지 작성하고 실행한 colab 노트북 쎌의 아래쪽에 새로운 쎌을 하나 만들고 [3.1]다음의 코드를 입력하고 실행합니다.
# This code is for v1 of the openai package: pypi.org/project/openai
from openai import OpenAI
client = OpenAI()
response = client.completions.create(
model="gpt-3.5-turbo-instruct",
prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: I'd like to cancel my subscription.\nAI:",
temperature=0.9,
max_tokens=64,
top_p=1,
presence_penalty=0.6,
stop=[" Human:", " AI:"]
)
이 코드를 실행 시키면 prompt 내용이 chatGPT 모델에 전달되고 회신 받은 내용이 response에 저장됩니다. 전달자 중에 prompt의 내용을 한글로 변환하면 다음과 같습니다. "이어지는 내용은 AI 어시스턴트와의 대화입니다. 어시스턴트는 도움이되고, 창의적이고, 영리하며 매우 친절합니다. 사람: 안녕, 너는 누구니? AI: 나는 OpenAI에서 만든 AI입니다. 어떻게 도와드릴까요? 사람: 나는 가입을 취소하고 싶어 AI: " 그럼이제 반환된 response 내용을 살펴 볼까요! 아래와 같이 [3.2]쎌에 response 를 입력하고 실행합니다.
출력된 내용을 살펴보니 중간에 text의 값으로 AI 어시스턴트의 회신 내용이 보입니다. " Okay, I can definitely help you with that, May I know the reason for cancellation? ......". [3.3]어시스턴트의 회신 내용만 보기위해서 아래와 같이 쎌에 입력하고 실행합니다.
response.dict()['choices'][0]['text']
지금까지 한번의 대화 턴(Turn)이 있는 하나의 질문과 대답을 보았습니다. 계속적인 대화를 위해서 아래와 같은 파이썬 코드를 작성할 수 있습니다. while 문을 통해 반복 실행하도록 했으며, if 구문을 두어서 사용자가 입력한 값이 exit이면 while 문을 빠져나가서 종료하도록 하였습니다. 사용자가 질문을 입력한 것이라면 그내용을 chatGPT에 보내서 회신을 받고 회신 받은 내용을 출력해주는 명령을 작성하였습니다. [3.4]아래 내용을 복사하여 쎌에 입력후 실행해 보세요.
client.completions.create() 함수에 있는 전달자의 값들을 바꾸어가면서 ChatGPT의 회신 내용을 비교해 보세요. temperature는 허풍, 거짓말 등 꾸며낸 이야기의 정도를 어떻게할지 조정할 수 있습니다. 0이면 꾸며내지 말라는 것이며 1을 최대한 꾸며내라는 것입니다. 이렇게 꾸며낸 이야기를 Hallucination이라고 하여 환각의 정도를 조정할 수 있습니다. max_tokens는 입력과 출력을 합친 단어수라고 생각하시면 됩니다. 간단히 말하면 회신 내용의 길이를 조정할 수 있습니다. top_p는 회신 내용의 건수 이며, presence_penalty는 동일한 답변을 조정하는 전달자 입니다.
이것으로 우리가 목표했던 계속적인 대화를 하는 간단한 어플리케이션이 만들어졌습니다. 이 프로그램은 ChatGPT의 대화를 OpenAI가 제공하는 웹서비스에서 사용하는 것이 아니라 별도의 어플리케이션 프로그램에서 사용할 수 있게 했다는 의미가 있습니다. 이후에는 프롬프트 엔지니어링 기법을 이용하여 보다 잘 알아 듣는 챗봇 어플리케이션을 만들어 보겠습니다.
안되는 부분이나 더 궁금한 점, 또는 이상한 점 있으시면 언제든지 댓글 달아주세요. 감사합니다.
크롬 앱 스토어에서는 ChatGPT를 활용하는 다양한 플러그인 앱들이 올라와 있는데요, 그 중에서 실용적이고 많이 사용되고 있는 앱인 WebChatGPT를 소개 시켜 드리겠습니다. 이글을 읽고나면 WebChatGPT가 무엇인지, 어떤 효과가 있는지, 어떻게 사용하는지 등을 아실 수 있습니다. 이를 통해서 검색이나 ChatGPT를 사용할 때 좀더 쉽고 빠르게 원하는 정보를 얻으실 수 있습니다. 동영상 설명 자료는 여기를 참고해주세요.
무엇인가? : WebChatGPT란?
WebChatGPT는 ChatGPT를 사용하여 검색 결과와 ChatGPT의 결과를 향상 시키는 크롬 브라우저의 플러그인 앱 입니다. 그래서 크롬 앱 스토어로부터 앱을 설치할 수 있습니다. 이 앱의 목적은 인터넷 검색 결과를 활용하여 ChatGPT에 제공 할 질문(프롬프트)을 만들어주는 앱 입니다. 그래서 2가지 방법으로 사용될 수 있는데, 크롬에서 검색시에 사용될 수 있고 ChatGPT에서 채팅 시에 사용될 수 있습니다.
어떤 것을 할 수 있나? : 어떤 기능이 있는가?
크롬에서 검색시에는 인터넷 검색을 통해 받은 내용을 활용하여 ChatGPT에게 질문 결과를 자동으로 확인 할 수 있습니다. 즉, 예전처럼 검색 결과로 나온 링크들을 일일히 찾아가서 내용을 보지 않아도, WebChatGPT를 사용하면 검색결과와 함께 요약된 주요 내용이 표시 됩니다. 그리고 ChatGPT를 사용할때는 질문 창에 질문은하면 자동으로 인터넷 검색 결과를 활용하여 답변을 생성해 줍니다. 그래서 LLM(Large Language Medel)이 가지는 훈련 데이터의 한계에서 벗어나서 최신 인터넷 정보를 활용하여 질문에 대답할 수 있습니다. WebCahtGPT 페이지에서 설명하는 주요 특징들은 아래와 같습니다. ---- 주요 특징들: 1️⃣ 웹 접근 - 검색어에 대한 웹 결과 얻기 - 완전한 통찰력을 위해 전체 검색 결과 페이지 스크랩 - 모든 URL에서 웹페이지 텍스트 추출 2️⃣ 원 클릭 프롬프트 - 원 클릭 ChatGPT 프롬프트 라이브러리 - 나만의 프롬프트 관리 3️⃣ AI로 검색 - 검색 결과 바로 옆에 AI 생성 응답 받기 - ChatGPT, Claude, Bard, Bing AI 제공 - 모든 인기 있는 검색 플랫폼과 호환
사용 방법 : 어떻게 설치하는가? 어떻게 사용하는가?
설치 방법은 간단합니다. 구글 크롬 앱 스토어에 가서 WebChatGPT를 검색하거나 그냥 구글 검색에서 WebChatGPT를 검색하여 나온 결과 중 설치 페이지의 링크를 클릭하시면 됩니다. 즉, 구글 크롬 브라우저에서 검색어 입력창에 "webchatgpt 인터넷 액세스가 가능한"을 입력하시고 제일 위에 나오는 링크를 클린하시면 됩니다.
그러면 WebChatGPT 앱 페이지로 이동하고 우측 상단에 있는 Chrome에 추가 버튼을 클릭하시면 자동으로 설치됩니다. 설치 후에 구글 검색창에서 검색하시면 결과가 보여질때 오른쪽에 WebChatGPT의 결과도 같이 보여 줍니다. 그리고 OpenAI의 ChatGPT 채팅을 이용할 때에도 아래와 같이 질문 입력창 위에 One-click prompts 와 Web access 버튼이 보입니다.
OpenAI에서 제공하는 API를 활용하여 다양한 기능을 사용하기 위한 기초 내용으로, 프로그램에서 OpenAI API를 사용하는 기초 방법에 대해서 설명합니다. 이 내용을 습득하시고 나면 Python 프로그램에서 OpenAI API를 호출하여 사용할 수 있습니다. 이것은 향후 조금만더 공부해 나간다면 개별 프로그램에서도 OpenAI의 ChatGPT와 같은 기능을사용 할 수 있게 개발할 수 있습니다. 학습의 많은 내용은 OpenAI의 Documentation 에 있는 Quickstart의 내용을 참고하였습니다. https://platform.openai.com/docs/quickstart?context=python (참고로 아래 내용과 함께, API Key만들기, API 지불방법 설정 등의 내용을 포함한 유투브 영상입니다.) https://www.youtube.com/watch?v=HTzFYEr4Ai8)
시작해 보겠습니다.
좀더 구체적으로 이 글을 통해서 다음과 같은 내용을 배울 수 있습니다.
개발 환경을 어떻게 설정하는지
최신 SDKs(소프트웨어 개발 킷)을 설치하는지
OpenAI API에 대한 기본적인 개념
API 요청을 어떻게 보내는지
진행에 앞서 필요한 것이 있습니다. 그것은 OpenAI 계정과 API Key 입니다. 링크를 클릭하셔서 만드실 수 있습니다. 그리고 파이참, 비주얼 스튜디오 코드 등 통합개발환경(IDE: integrated development environment) 프로그램을 설치하시면 개발하기에 더 편하십니다. 이제 부터 파이썬 환경에서의 내용을 기준으로 설명하겠습니다.
전체적인 절차 단계는 아래와 같습니다. 1. 파이썬 설정 2. API Key 설정 3. API 요청 테스트 즉, 프로그래밍 언어 소프트웨어인 파이썬을 설치하고, API 호출에 필요한 API Key를 설정하고, 마지막으로 프로그램에서 API를 요청해 봅니다.
1. 파이썬 설정
파이썬 설정을 위해서는 파이썬 다운로드 및 설치, (선택적으로) 가상환경 설치, 그리고 OpenAI 라이브러리 설치가 필요합니다.
프로그램 환경에서 API를 이용하려한 것이니까 당연하게도 프로그래밍 언어의 설치가 필요합니다. 파이썬 설치는 파이썬 다운로드 페이지에 접속하셔서 사용중인 OS(Windows, MacOS, Unix)에 맞는 파이썬 설치 파일을 다운로드 받아서 설치하시면 됩니다. 선택적이긴 하지만 가상환경을 설치할 수 있습니다. 파이썬은 여러 라이브러리를 다운로드 받아 사용하는데 이러한 라이브러리 간의 사용 통일성과 프로젝트간의 간섭 방지를 위해서 관리가 필요합니다. 이러한 환경을 프로젝트 별로 관리할 수 있도록 해주는, 가상환경이라는 것을 만들 수 있습니다.
먼저 프로젝트 폴더를 하나 만들고 터미널이나 CMD명령창에서 프로젝트 폴더로 이동 한 뒤에, 다음의 명령어로 가상환경을 만들 수 있습니다.(주의: 이후부터는 프로젝트 폴더의 위치에서 아래의 명령어 들을 실행하세요)
python -m venv openai-env
이 내용을 설명해보면 파이썬 프로그램의 venv 모듈을 실행시켜서 openai-env 라는 가상환경을 만들라는 명령입니다. 이렇게 가상환경을 만들고 나서 가상환경으로 들어간 뒤 라이브러리를 설치하게 되면, 설치된 라이브러리 들은 들어간 가상환경에서만 사용할 수 있게 됩니다. Windows에서 가상환경으로 들어가는 명령어는 아래와 같습니다.
openai-env\Scripts\activate
Unix나 MacOS에서의 명령어는 아래와 같습니다. 터미널에서 아래를 실행시키면 됩니다.
source openai-env/bin/activate
가상환경으로 들어가게 되면 터미널/명령창의 프롬프트가 바뀌게 됩니다. 보통 환경명이 나옵니다. 예를 들면 (openai-env) $ 이렇게 됩니다.
OpenAI 라이브러리 설치는 매우 간단합니다. 앞에서 만든 가상환경으로 들어간뒤에 아래의 명령어를 실행시키면 됩니다.
pip install --upgrade openai
2. API Key 설정
API Key는 매우 중요합니다. 왜냐하면 돈과 연결되어 있어서지요. 따라서 다른 사람이 모르도록 보안에 신경써야 합니다. 프로그램에서 사용하면서도 노출되지 않도록 설정하는 방법은 다음과 같이 2가지가 있습니다. 첫번째는 환경변수에 설정해주는 방법이고 두번째는 프로젝트 폴더에 .env 파일로 설정하는 방법입니다.
첫번째 환경변수에 설정하는 방법은 환경변수 OPENAI_API_KEY라는 변수에 발급받은 Key 값을 설정해 놓으면 됩니다. MaC 에서는 아래와 같이 터미널에 입력하면 됩니다.
export OPENAI_API_KEY='your-api-key-here'
Windows에서는 아래와 같이 명령창에 입력하면 됩니다.
setx OPENAI_API_KEY "your-api-key-here"
환경변수는 (.bash_profile 또는 .zshrc 파일에) 별도로 설정해 주지 않으면 터미널 종료 시 사라지게됩니다. 따라서 계속적인 사용을 위해서는 Profile 파일에 추가로 설정이 필요합니다.
두번째는 '.env' 파일에 설정하는 방법입니다. 하나의 프로젝트에서 사용 할 수 있도록 설정하는 방법입니다. 프로젝트 폴터 안에서 .env 라는 이름의 파일을 새로 만듭니다. 그리고 그 파일의 내용을 아래와 같이 입력하세요.
# Once you add your API key below, make sure to not share it with anyone! The API key should remain private.
OPENAI_API_KEY=abc123
abc123의 위치에 발급받은 OpenAI API Key를 입력하시면 됩니다. 이렇게 입력하고 저장을 하시면 프로그램시 아래와 같은 내용으로 Key를 불러올 수 있습니다.
from openai import OpenAI
client = OpenAI()
# defaults to getting the key using os.environ.get("OPENAI_API_KEY")
# if you saved the key under a different environment variable name, you can do something like:
# client = OpenAI(
# api_key=os.environ.get("CUSTOM_ENV_NAME"),
# )
이렇게 하면 코딩 내용에서는 API Key 내용이 없기 때문에 보안에 유리합니다.
3. API 요청 테스트
자, 이렇게 파이썬 준비도 끝나고 API Key설정도 끝났으면 실제로 사용해볼 차례 입니다. 위에서 만든 프로젝트 폴더에 openai-test.py라는 이름의 파일을 새로 만들어주세요. 내용을 아래와 같이 입력하세요.
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
{"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
]
)
print(completion.choices[0].message)
프로그램의 내용을 간단히 설명 드리면 OpenAI 라이브러리의 API를 이용하여 문장완성을 요청합니다. 모델을 gpt-3.5-turbo를 사용하고, 전달 메시지로, API 또는 모델이 마치 프로그래밍 컨셉을 설명할 수 있는 능력이 있는 시 작성 도우미라고 설정하고(system), recursion의 컨셉을 설명하는 시를 한편 지어보라(user)는 명령 입니다. 위의 내용을 입력후 저장한뒤에, 터미널/명령창 에서 아래와 같이 실행시키면 프로그램이 실행하게 됩니다.
python openai-test.py
프로그램이 잘 실행된다면 아래와 같이 텍트스 문장이 표시될 껍니다. (아, 저는 파일이름을 openai_api_test.py로 했네요.)
마무리
이렇게 해서 OpenAI API와 관련해서 기초를 배워 봤습니다. 프로그래밍 환경으로 파이썬을 설정했고, API Key를 코딩할때 쓸 수 있도록 설정했습니다. 마지막으로는 간단한 내용의 시를 작성하는 명령을 OpenAI API를 이용하여 프로그램에서 실행해 보았습니다. OpenAI 라이브러리에는 엄청나게 많은 기능을 제공하고 있습니다. 어플리케이션 프로그램에서 ChatGPT와 같은 서비스를 할 있게 만들 수 있습니다. 프로그램이 가능하기 때문에 ChatGPT의 채팅 창에서 하는 것 보다 더 복잡하고 정교하고 서비스에 필요한 질문과 답변을 할 수 있습니다. OpenAI API를 이해하는데 있어서 여러분에게 도움이 되셨길 바랍니다. 감사합니다.