머신러닝AI2023. 4. 2. 19:08

많은 사람들이 ChatGPT 질의를 위해 OpenAI 사이트에 접속해서 사용한다. 해당 웹 화면에 그대로 접속해 활용하는 방법이다. 그런데 OpenAI는 이러한 직접적인 웹서비스 외에도, 별도로 개발해서 사용할 수 있는 API를 지원한다.

 

 게다가, 이 API 사용방법은 개발자에게는 매우 쉽고 몇가지 장점이 있는데, 유료 사용을 염두해두면 특히 더 그렇다. API 1회 사용에 $0.01이면 ChatGPT Plus라는 $20짜리 정액 요금제에 비해, 2천문장을 물어봐야 한달에 간신히 $20을 쓸 수 있는 종량제 형태의 사용이 가능하다. 그리고 이 API 사용시 처음 $18은 무료이기도 하다. 이 무료도 개인은 다 쓰기가 쉽지 않다.

 

 그러면 직접 한번 사용해보자. S/W 개발 경험이 있는 사람을 가정해보았다.

 

0) 우선 OpenAI의 API를 사용하기 위해서는 API key를 받아야 한다.

 

 API Key는 일종의 API사용 인증암호 같은 것이라고 생각하면 된다. OpenAI에 가입했다면 이미 준비가 거의 끝난 셈이고, API Key생성 버튼(Create new secret key 버튼)을 누르면 곧바로 알 수 있다. openai.com에 로그인이 되었다면 https://platform.openai.com 에 접속하여 아래 화면처럼 API 생성을 해보자.

 

 

Create new secret key를 누르면 secret key가 생성된다. 생성시 별도로 잘 기록해 숨겨둔다.

 

위 화면의 SECRET KEY 에 "sk-...NCss"로 표기된 것에 실제로는 더 많은 알파벳(?)들이 숨겨져 있는 긴 문자열이다. 참고로 위 왼쪽 메뉴에서 'Usage'를 누르면 지금까지 API를 호출한 사용량을 알 수 있다. $18의 무료 사용이 끝나면 유료로 넘어가게 된다.

 

1) API를 python을 호출해서 사용해보자.

 

https://medium.com/nerd-for-tech/create-ai-application-in-minutes-with-openai-api-5e84bd3ec5d0 에 간단하게 잘 설명되어 있다. python을 쓸 수 있는 환경 하에서

 

$ pip install openai 해서 설치한 후

 

아래 python code를 실행한다. 세부 옵션들은 여기서는 설명을 생략한다.

 

import os
import openai
import config
openai.api_key = "위 얻어낸 SECRET KEY를 넣는다"
response = openai.Completion.create(
engine="davinci",
prompt="Blog topics dealing with daily life living on Mars\n\n1.",
temperature=0.3,
max_tokens=64,
top_p=1,
frequency_penalty=0.5,
presence_penalty=0)
print(response)

 

여기 나오는 설정 변수들을 간단히 설명해보면 아래와 같으니 참조하면 된다. 실제로는 각 값 간에 영향을 주는 부분이 있어서 시행착오 속에 값을 결정하게 된다고 한다.

 

ㅇmax_tokens

  최대 생성 토큰 길이로 GPT3의 경우 2048 까지 잡을 수 있다. 모델마다 최대 토큰 값은 차이가 있다.

 

ㅇtemperature

  문장의 임의성을 조절하는 변수로 0으로 갈수록 답변이 정형화되고 고정되며, 1로 갈수록 창의력이 높아지고 임의적이 된다.

 

ㅇtop_p

  해당 변수는 통상 확률값으로 커지면 커질수록 더 많은 후보 토큰 중에 랜덤하게 고르게 된다. 따라서 temperature와 유사하게 작동되는데, temperature를 지정하여 사용하는 경우 이 값은 1로 설정해서 사용하도록 추천하고 있다

(즉 temperature나 top_p중 하나만 1보다 작은 값을 설정하고, 나머지는 1로 설정하여 중립화시킨다)

 

ㅇfrequency_penalty

  이미 생성시에 사용한 단어들이 자주 출현함에 따른 신규 사용 확률을 조절한다. 높은 값일수록 사용확률을 낮춘다.

 

ㅇpresence_penalty

  생성시에 사용한 단어의 출현을 조절한다. frequency는 사용 빈도수에 의해 조절됨에 반해 presence는 기사용 여부에 의해 조절된다.

 

 

 

2) 아예 ChatGPT 챗봇 사이트를 만들어 보자.

 

서버 환경을 갖춘 개발자라면 아예 오픈소스를 통해 OpenAI와 동일한 웹사이트 환경을 자체 운영할 수 있다. 즉 위 API를 python으로 쉘에서 실행하는 것이 아니라, 나만의 사이트를 통해 위 가성비 좋은 API를 경유해서 ChatGPT를 사용하는 것이다. 물론 요즘에는 많은 회사들이 메신저나 앱에서 이러한 ChatGPT 연결 서비스를 제공하지만, 나만의 환경을 갖는 장점도 존재한다. 여러가지 실험이나 ChatGPT 상위 버전 사용 등 API를 직접 연결하면 다양한 것들을 경험할 수 있다.

 

Linux ubuntu 환경이라면 docker를 통해 아래 서비스가 가능하다.

https://github.com/mckaywrigley/chatbot-ui

 

mckaywrigley의 chatbot 오픈소스 (node.js/docker 기반)

  A. 여기서는 linux ubuntu 20.04 에서 docker를 설치해서 테스트 해보았다. port 3000번을 docker의 내부 3000번 포트로 연결하기 때문에, 외부에 3000번을 열어줄 필요가 있다.

 

  - docker, node.js, npm을 설치한다.

  - 아래 git을 clone하여 docker image를 build하고 실행한다

  

   $ cd /work/

   $ git clone https://github.com/mckaywrigley/chatbot-ui

   $ cd chatbot-ui

   $ docker build -t chatgpt-ui .                  #도커 이미지를 만든다
   $ docker run -e OPENAI_API_KEY=xxxxxxxx -p 3000:3000 chatgpt-ui

 

  B. http://대상서버IP:3000/ 으로 접속한다

 

생각보다 손쉽게 OpenAI의 API를 활용할 수 있다. 시간이 지날수록 이 OpenAI의 API KEY를 통해 다양하게 연결할 수 있는 더 많은 오픈소스와 플러그인이 나올것이라 예상된다. 오늘은 일단 여기까지 한번 확인해 보았다.

 

반응형
Posted by 작동미학