OpenAI API 사용하기
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (1)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (2)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (3)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (4)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (5)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (6)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (7)
- Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (8)
이번에는 OpenAI API를 사용하여 슬랙에서 AI와 대화할 수 있는 봇을 만들어본다.
Bolt For Python API 문서를 참고하여 개발을 진행했다.
OpenAI API
OpenAI API를 사용하면 GPT-3을 사용해 볼 수 있다. 현재 ChatGPT에 사용되는 모델은 GPT-3.5라고 하고, API로 제공되는 모델은 GPT-3라고 한다. OpenAI API를 사용하려면 먼저 https://beta.openai.com/signup에서 OpenAI 계정을 만들어야 한다. 계정이 있어야 OpenAI 언어 모델에 액세스 할 수 있는 API Key를 만들 수 있다.
OpenAI에 처음 가입하면 무료 평가판으로 $18를 받을 수 있다.
만약 $18를 모두 사용했거나 $18를 받지 못했더라도 걱정할 필요가 없다. 언어 모델 API 호출 비용이 매우 저렴하다. 언어 모델 API는 토큰당 과금되는 방식이며, 1000 토큰은 약 750개 단어라고 한다.
토큰에 대한 개념이 이해가 되지 않아서 ChatGPT에게 물어보니 다음과 같은 답변을 받았다. OpenAI API 가격표에서 말하는 토큰이란 의미를 갖는 문자열의 최소 단위라고 생각하면 될 것 같다.
개인은 OpenAI API 최대 사용한도가 $120이다. 만약 이 가격도 부담된다면 나처럼 최대한도를 걸어놓자. 나는 $10 까지만 사용가능하도록 설정했다. 그리고 $5를 넘어가면 알림 이메일이 발송되도록 했다.
나는 2월부터 시작하여 OpenAI API 를 3주간 사용했지만, 2월 총 사용 금액은 겨우 $0.71 발생했다.
OpenAI API Key 발급 받기
OpenAI API에서 키를 발급하는 과정을 설명하겠다. API Key를 만들려면 다음 단계를 따른다:
https://openai.com/api/login에서 OpenAI 계정에 로그인한다.
화면 오른쪽 상단의 사용자 이름을 클릭한 다음, 드롭다운 메뉴에서 ‘View API Keys’ 를 선택한다.
[Create new secret key] 버튼을 클릭한다.
API Key가 생성되어 화면에 표시된다. OpenAI API에 액세스 하려면 이 키가 필요하므로 반드시 복사하여 안전한 곳에 보관한다. API Key는 최대 5까지 생성가능하다.
OpenAI API Playground
OpenAI API Playground에 들어가면 Open API를 테스트할 수 있다.
현재 언어 모델은 text-davinci-003이 성능이 가장 뛰어나다. Load a preset으로 프리셋을 불러오고, Temperature와 Maximun length 파라미터를 변경하면서 API를 테스트해보자.
OpenAI API Example Preset
OpenAI Examples로 이동하면, 다양한 활용 예제들을 살펴볼 수 있다.
우리는 슬랙 챗봇을 만들기 위해 아래로 스크롤해서 Chat을 클릭한다.
그리고 [Open in Playground] 버튼을 클릭한다.
그럼 선택한 Chat Example의 Prompt와 파라미터가 Playgound에 자동으로 입력된다. 여기서 [View code] 버튼을 클릭한다.
개발언어 선택 드롭박스에서 python을 선택하고 Copy를 눌러 코드를 클립보드에 복사한다.
복사된 코드의 전문은 다음과 같다.
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
start_sequence = "\nAI:"
restart_sequence = "\nHuman: "
response = openai.Completion.create(
model="text-davinci-003",
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: ",
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0,
presence_penalty=0.6,
stop=[" Human:", " AI:"]
)
OpenAI Python 라이브러리 설치하기
터미널에 아래 명령을 입력하여 가상 환경을 활성화한다.
source ./venv/bin/activate
그다음 아래 명령을 사용하여 [OpenAI Python Library](https://pypi.org/project/openai/)를 설치한다. ```bash pip install --upgrade openai ```
환경변수에 OpenAI API Key 추가하기
secret.txt
파일에 OPENAI_API_KEY
를 추가한다.
OPENAI_API_KEY=여러분의 OpenAI API Key
secret.txt
위치는 Configurations의 EnvFile 탭에서 확인할 수 있다.
슬랫 봇에 OpenAI API 연결하기
OpenAI API의 Playground에서 복사한 샘플 코드를 활용할 것이다.
main.py
에 다음 코드를 추가한다.
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
# 앱 채널의 모든 메세지를 수신
@app.event("message")
def handle_message_events(event, message, say):
response = openai.Completion.create(
model="text-davinci-003",
prompt=f"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: {message}",
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0,
presence_penalty=0.6,
stop=[" Human:", " AI:"]
)
print(response) # OpenAI API 응답을 콘솔에 출력.
say(response.choices[0].text)
OpenAI API에서 응답받은 response
객체를 출력하면 다음과 같은 데이터를 받아온다.
우리는 choices
배열에 담여있는 첫 번째 객체의 text
값을 사용하면 된다.
이제 앱을 실행하고 슬랙에서 말을 걸어보자.
봇 응답에서 'AI: ’ 문자열을 제거하자.
say(response.choices[0].text.replace("AI: ", ""))
이제 슬랙에 나만의 인공지능 챗봇이 생겼다.
다음은 지금까지 만든 앱의 파이썬 코드 전문이다.
# Use the package we installed
from slack_bolt import App
import os
import openai
# Initializes your app with your bot token and signing secret
app = App(
token=os.environ.get("SLACK_BOT_TOKEN"),
signing_secret=os.environ.get("SLACK_SIGNING_SECRET")
)
openai.api_key = os.getenv("OPENAI_API_KEY")
# 앱 채널의 모든 메세지를 수신
@app.event("message")
def say_hello(message, say):
response = openai.Completion.create(
model="text-davinci-003",
prompt=f"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: {message}",
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0,
presence_penalty=0.6,
stop=[" Human:", " AI:"]
)
say(response.choices[0].text.replace("AI: ", ""))
# Start your app
if __name__ == "__main__":
app.start(port=int(os.environ.get("PORT", 3000)))
다음에는 ngrok
를 사용하지 않고 슬랙 소켓을 사용하여 봇을 만드는 방법을 알아보자.
or
[카카오페이로 후원하기] [토스페이로 후원하기]
'개발 > AI 개발' 카테고리의 다른 글
Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (7) (0) | 2023.02.24 |
---|---|
Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (6) (0) | 2023.02.21 |
Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (4) (4) | 2023.02.20 |
Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (3) (0) | 2023.02.19 |
Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (2) (0) | 2023.02.18 |