Kubernetes 이야기

ChatGPT API 사용 본문

개발/python

ChatGPT API 사용

kmaster 2023. 3. 27. 09:48
반응형

얼마전 ChatGPT 4가 3월 14일 발표되었다. GPT란 ‘Generative Pre-trained Transformer’의 약자로 OpenAI가 개발한 인공지능 모델이다. GPT는 자연어 처리를 위한 인공지능 모델로, 방대한 데이터를 머신러닝으로 미리 학습(Pre-trained)해 이를 문장으로 생성(Generative)하는 기능을 한다. 

 

GPT4가 이전 GPT3.5 보다 크게 달라진 점은 Multimodal을 도입했다는 것이다. multimodal이란 여러가지 형태의 정보를 통해 소통하는 환경을 말한다. 여러가지 형태의 정보란 영상, 이미지, 소리, 댓글 등 다양한 정보를 의미한다. GPT4는 이미지를 인식하여 해당 이미지에 대한 정보를 텍스트로 생성할 수 있다.

 

ChatGPT API 를 사용하는 샘플을 살펴보자.

 

GhatGPT API를 사용하기 위해서는 먼저 API Key 를 획득해야 한다. ( API 가격은 gpt-3.5-turbo모델의 경우 1,000개 토큰당 $0.002 )

 

https://platform.openai.com/account/api-keys

 

OpenAI API

An API for accessing new AI models developed by OpenAI

platform.openai.com

Create new secret key 버튼을 클릭한다.

생성된 키를 복사한다. ( 해당 화면에서만 조회가 가능하니 복사 후 별도로 저장해 놓기를 권장한다. )

 

Python 으로 샘플 어플리케이션 만들어보기

 

python 개발 환경 설정

$ mkdir chatgpt
$ cd chatgpt
$ pipenv --python 3.11
$ pipenv shell

api 설치

$ pipenv install openai

 

Model

OpenAI API는 기능과 가격대가 다른 다양한 모델 세트로 구동된다. 또한 미세 조정을 통해 특정 사용 사례에 대한 원래 기본 모델에 대해 제한된 사용자 정의를 수행할 수 있다.

모델 설명
GPT-4
제한된 베타
GPT-3.5를 개선하고 자연어 또는 코드를 이해하고 생성할 수 있는 일련의 모델
GPT-3.5 GPT-3에서 개선되고 자연어 또는 코드를 이해하고 생성할 수 있는 일련의 모델
DALL·E
베타
자연어 프롬프트가 주어지면 이미지를 생성하고 편집할 수 있는 모델
Whisper
베타
오디오를 텍스트로 변환할 수 있는 모델
Embeddings 텍스트를 숫자 형식으로 변환할 수 있는 일련의 모델
Codex
제한된 베타
자연어를 코드로 번역하는 것을 포함하여 코드를 이해하고 생성할 수 있는 일련의 모델
Moderation 텍스트가 민감하거나 안전하지 않은지 감지할 수 있는 미세 조정 모델
GPT-3 자연어를 이해하고 생성할 수 있는 일련의 모델

 

각 모델 안에는 또 다른 미세 모델등이 있다. 모델별로 API 사용 비용이 다르니 문서를 참고하여 모델을 선택하여 사용해야 한다.

 

OpenAI 라이브러리로 할 수 있는 일이 많지만 예제는 ChatGPT에서 사용하는 것과 동일한 모델인 gpt-3.5-turbo 모델을 사용하여 테스트해보자.

 

샘플

import openai

openai.api_key = "sk-xxx"


response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "kubernetes는 왜 사용하나요?"},
        ]
)

result = ''
for choice in response.choices:
    result += choice.message.content

print(result)

 

Messages List에는 role과 content 2개의 key가 존재하는 dictionary를 가지고 있다. role에는 "system", "user", "assistant" 3가지가 있다. content는 role에서 정의된 역할에 따른 메시지 내용을 가진다. 

 

  • system :  ‘You are a helpful assistant.’와 같은 메시지로 assistant에게 지시할 수 있다. 시스템이 챗봇에게 일종의 역할을 부여한다고 볼 수 있다.
  • user : assistant에게 직접 전달하는 내용이다.
  • assistant : 이전에 응답했던 결과를 저장해 대화의 흐름을 유지할 수 있도록 설정할 수 있다.

위의 코드를 실행하면 다음과 같이 결과가 나타난다.

 

응답

Kubernetes는 새로운 소프트웨어를 빠르게 배포하고, 관리하고, 확장하기 위해 사용됩니다. 이러한 소프트웨어 덮개는 큰 상호 연결 시스템의 일부분으로 구동됩니다. Kubernetes는 대규모 분산 애플리케이션을 구축하는 데 매우 유용합니다. 필요한 서비스나 작업별로, Kubernetes는 언제든지 컨테이너를 배치, 스케일링 및 관리할 수 있습니다. 
이렇게 함으로써 기존 운영 환경보다 더 높은 성능, 안정성, 확장성을 제공합니다. 여러 개의 컨테이너를 배치하여 뛰어난 높은 가용성과 일관성을 제공하며, 배포, 확장 및 주기적인 업데이트를 자동화합니다. 즉, Kubernetes는 개발자, 인프라 팀, 시스템 관리자, 애플리케이션 관리자 등 모든 IT 역할 사이에 비즈니스 가치를 빠르게 알리며, 운영 비용을 절감합니다.

 

 

참고

https://platform.openai.com/docs/api-reference

https://platform.openai.com/docs/api-reference/chat/create

반응형

'개발 > python' 카테고리의 다른 글

mitmproxy을 사용하여 K8S API Server Reverse Proxy 설정하기  (0) 2023.02.22
Playwright와 Python 사용 방법  (0) 2023.02.22
playwright를 활용한 e2e 테스트  (0) 2023.02.15
Python에서 gRPC 구현  (0) 2023.02.13
Kopf ( 예제 )  (1) 2023.02.05
Comments