top of page

초보자를 위한 OpenAI의 API 사용 방법 가이드

이 포스팅에서는 OpenAI의 API를 셋업하고 여러가지 목적으로 사용하는 방법을 간단히 알아보겠습니다. 이 글은 파이썬 (Python) 초보자도 간단하게 이해하고 시작 할수 있도록 구성 되었습니다.


OpenAI의 API란?

OpenAI의 API는 개발자들에게 OpenAI사가 제작한 다양한 AI 모델을 사용할 수 있도록 도와줍니다. 유저가 사용하기 편한 인터페이스를 제공하면서 고급의 지능을 가진 AI 모델을 이용하게 해 주죠. 이 API는 문서 작성, 다단계 대화, 임베딩, 번역, TTS (text-to-speech)와 이미지 제작등에 사용이 될 수 있습니다. 이 API는 curl, 파이썬 (Python)과 Node.js에 호환이 되고 있습니다.


시작하기

OpenAI의 API를 시작하기 위해서는 우선 openai.com 사이트에 계정을 만들어야 합니다. 이전에는 모든 유저들이 무료로 사용 할 수 있었지만, 이제 새 계정은 크레딧을 구입해야 합니다.

크레딧의 구입은 Settings > Billing > Add Payment Details 경로로 신용카드 등록을 한 후 구입이 가능 합니다. Auto-recharge라는 기능이 있는데 이것은 구입한 크레딧이 0으로 되면 자동 재구매가 되는 기능이라 비활성화 하시는 것을 추천합니다. 10달러치를 구입하면 1년 동안 사용이 가능합니다.


image
신용카드 등록

이제는 API 키를 만들어야 합니다. API Keys로 가서 Create new secret key를 클릭하여 API 키의 이름을 입력하고 Create secret key 버튼을 클릭합니다. API 키는 유저가 사용하는 앱이나 코드가 등록된 계정과 연동을 하면서 OpenAI의 API를 사용하도록 허용하는 용도로 쓰입니다.


image
API 키 생성

생성된 키는 사용하려는 로컬 디바이스의 환경 변수 (environment variables)에 저장합니다.


image
생성된 API 키

Deepnote라는 IDE를 사용하시면 Integration > Create environment variable 경로로 가서 키의 이름과 값을 정의하면 됩니다.


image
Deepnote - 환경변수 생성

Jupyter Notebook의 경우에는 %env를 사용하여 환경 변수를 지정할수 있습니다.


image
Jupyter Notebook - 환경변수 생성

환경 변수 지정 후에는 pip을 사용하여 OpenAI 파이썬 패키지를 설치합니다.



이제는 여러가지 모델을 엑세스 할 수 있는 클라이언트를 생성하겠습니다.


OPENAI_API_KEY라는 이름으로 API 키의 환경변수를 생성하였으면 다음의 코드만 입력하면 됩니다



만약에 API 키의 이름이 다르다면 다음의 코드를 이용합니다.



문서 작성 (Text Generation)

레거시 함수를 이용하여 답을 받도록 해 보겠습니다. 함수에 들어가는 파라미터는 모델 이름, 프롬프트, 최대 토큰 (토큰화된 답의 길이), temperature (0~1값, 0으로 가면 갈수록 일관성이 있는 값이 리턴됨)등이 있습니다.



위의 코드로 GPT3.5 모델은 빌 게이츠에 관한 스토리를 생성합니다.


stream이라는 파라미터를 이용하면 리턴되는 답이 스트림화됩니다. 이 기능은 답을 기다리는 것보다 토큰이 생성되자마자 각 토큰화 된 문장들이 리턴이 되는 방식입니다.



image
스트림화된 답

대화 (Chat)

우선 사용할 수 있는 모델의 리스트를 알아봅시다. 이 리스트는 Models 페이지 문서에도 있습니다.



image
리턴되는 모델 리스트

이 글은 Chat Completion API와 GPT-3.5의 최신 버전을 이용하겠습니다. 항상 동일한 메시지 패턴을 사용하여야 합니다.



앞에서 봤던 레거시 API와 같은 결과를 볼 수 있습니다. 그런데 왜 굳이 이 API를 사용하는 것일까요? 다음 부분에서 왜 chat completion API가 더 편리하고 다용적으로 사용될 수 있는지 알 수 있습니다.



이번에는 이 AI모델을 이용하여 다단계 (멀티턴, multi-turn) 대화를 해 보겠습니다. 그러기 위해 우선 이전의 리턴 값을 어시스턴트 (비서)에게 전달할 새로운 프롬프트로 입력을 하게 됩니다. 그 후에는 사전 리스트 (dictionary list)를 chat completion 함수에 보내도록 합니다.



위의 코드는 시스템에게 정의를 하게 한 후 리턴된 값을 어시스턴트에게 요약을 하라고 요청하는 코드이죠. 후에 어시스턴트에게서 리턴되는 요약글은 다음과 같습니다.




임베딩 (Embeddings)

고도화된 애플리케이션을 개발하기 위해서는 텍스트를 임베딩으로 변경해야 합니다. 임베딩은 유사도 검색 (similarity search), 시맨틱 검색 (semantic search)과 추천 (recommendation) 엔진의 개발에 사용이 됩니다. API에 텍스트와 모델 이름을 입력하면 임베딩을 간단하게 생성할수 있습니다.


시맨틱 검색이란 (semantic search)? https://www.elastic.co/kr/what-is/semantic-search


임베딩 결과 값:


오디오 (Audio)

audio API를 이용하면 TTS (text-to-speech), STT (speech-to-text)와 번역기능을 사용 할 수 있습니다.


필사 (Transcriptions)

여기에서는 Wi-Fi 7 Will Change Everything라는 유투브 (YouTube) 동영상을 MP3로 변경을 먼저 한 후, 필사를 위해 audio transcript API에게 파라미터로 넣습니다.



다음은 위스퍼 (whisper) 모델이 필사한 결과입니다.



번역 (Translation)

이번에는 위의 동영상 오디오를 다른 언어로 번역해 보겠습니다. 이 글은 우르드 언어로 번역합니다. language라는 파라미터를 사용하여 translation API에 보내면 간단하게 번역이 됩니다. 우르드어는 ISO 언어코드 ur입니다.



라틴어권이 아닌 언어는 정확도가 떨어지지만 쉽게 번역이 가능하다는 점이 이점이죠.



TTS (Text to Speech)

speech API를 사용하면 TTS도 가능합니다. API에 보내는 파라미터는 모델 이름, 보이스 이름, 그리고 텍스트입니다. 아래의 코드는 TTS의 결과 오디오를 Data 폴더에 저장합니다.



비젼 (Vision)

이미지를 해독하는 부분은 GPT-4 비젼 모델을 사용하겠습니다. 메시지 파라미터는 이미지에 관한 질문과 이미지의 URL 주소를 입력합니다.



결과 값은 정확하게 이미지를 설명합니다.



이미지 URL주소를 입력하기도 하지만 아래와 같이 이미지 파일을 파라미터로 입력할 수도 있습니다.


우선 이미지를 다운로드:



다음에는 이미지를 로드하여 base64 포맷으로 인코딩을 합니다.



URL 주소대신에 메타데이터와 이미지의 위의 코드에서 리턴된 base64 문자열 (base64_image 변수)을 파라미터로 입력합니다.



아래의 답이 리턴이 됩니다.



이미지 생성 (Image Generation)

DALLE-3 모델을 이용하면 이미지 생성을 할 수 있습니다. 사용되는 파라미터인 모델 이름, 프롬프트, 사이즈, 화질, 그리고 이미지 개수를 images API에 보냅니다. 이 예제는 산의 벼랑 끝에 앉아있는 한 젊은 여성입니다.



생성된 이미지는 온라인에 저장이 되고, 다운로드를 하여 볼수 있습니다. 그러기 위해서는 request함수를 사용하여 이미지의 URL 주소와 다운로드 할 저장 장소를 파라미터로 다음과 같이 보냅니다.



생성된 이미지는 다음과 같습니다. 엄청나죠?


image
AI가 만든 이미지 [산의 벼랑 끝에 앉아있는 한 젊은 여성]

참고:


pngegg (11)_result.webp

<Raank:랑크 /> 구독 하기 : Subscribe

감사합니다! : Thanks for submitting!

bottom of page