반응형

ChatGPT의 API를 사용하면 직접 만든 앱/어플리케이션에서 ChatGPT가 대답하는 것 처럼 개발할 수 있습니다.
이번 내용은 이것을 위한 기본적인 흐름과 코드 내용을 배워 보는 것 입니다. 그래서 사용자가 질문을 입력하면 ChatGPT가 대답하는 대화하는 어플리케이션 프로그램을 만드는 것 입니다.

 

사전 준비 사항

ChatGPT API 사용을 위해서는 먼저 OpenAI에 가입이 되어 있어야 하고 API사용을 위한 [0.1]API Key를 발급 받아야 합니다. API Key란, API를 호출할 때 허가 받은(Credit이 설정되어있는) 사람이 호출하는 것인지 아닌지를 확인하기 위해서 미리 만들어진 텍스트를 말합니다. 'sk-'로 시작하며 예를 들면 다음과 같습니다.

sk-ABCDEFGHIJ1234567890ABCDEFGHIJ1234567890ABCDEFGH

 
개발 환경으로는 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]아래의 명령어로 설치할 수 있습니다.

!pip install openai
더보기

(명령어의 제일 앞에 !가 있는 이유는 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]아래 내용을 복사하여 쎌에 입력후 실행해 보세요.

while True:
  prompt = input("질문을 입력하세요: ")
  if prompt == 'exit': break
  response = client.completions.create(
    model="gpt-3.5-turbo-instruct",
    prompt=prompt,
    temperature=0.9,
    max_tokens=64,
    top_p=1,
    presence_penalty=0.6,
    stop=[" Human:", " AI:"]
  )
  print(response.dict()['choices'][0]['text'])

제가 작성하고 실행한 결과는 아래와 같습니다.

 

더보기

추가 실습 방법:

client.completions.create() 함수에 있는 전달자의 값들을 바꾸어가면서 ChatGPT의 회신 내용을 비교해 보세요. temperature는 허풍, 거짓말 등 꾸며낸 이야기의 정도를 어떻게할지 조정할 수 있습니다. 0이면 꾸며내지 말라는 것이며 1을 최대한 꾸며내라는 것입니다. 이렇게 꾸며낸 이야기를 Hallucination이라고 하여 환각의 정도를 조정할 수 있습니다. max_tokens는 입력과 출력을 합친 단어수라고 생각하시면 됩니다. 간단히 말하면 회신 내용의 길이를 조정할 수 있습니다. top_p는 회신 내용의 건수 이며, presence_penalty는 동일한 답변을 조정하는 전달자 입니다.

 
이것으로 우리가 목표했던 계속적인 대화를 하는 간단한 어플리케이션이 만들어졌습니다. 이 프로그램은 ChatGPT의 대화를 OpenAI가 제공하는 웹서비스에서 사용하는 것이 아니라 별도의 어플리케이션 프로그램에서 사용할 수 있게 했다는 의미가 있습니다. 이후에는 프롬프트 엔지니어링 기법을 이용하여 보다 잘 알아 듣는 챗봇 어플리케이션을 만들어 보겠습니다.
 
안되는 부분이나 더 궁금한 점, 또는 이상한 점 있으시면 언제든지 댓글 달아주세요.
감사합니다.
 

반응형

'인공지능-기계학습 > OpenAI' 카테고리의 다른 글

OpenAI API 활용 방법 : 기초 1.  (0) 2023.11.24
반응형

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를 이해하는데 있어서 여러분에게 도움이 되셨길 바랍니다.
감사합니다.
 
 
 

반응형

+ Recent posts