GPT-4o API で遊ぶ Discord Bot
はじめに
GPT-4o はOpenAIのSpring Updateで公開されたOpenAI現状のフラグシップモデルです
リアルタイムの音声処理や動画処理も今後来るようで、大変楽しみですねー👀✨
そんなGPT-4oのAPIが公開されたので、いつものようにDiscord Botに組み込んでみました
ちなみに以下は類似シリーズ(?)
実装方法とか結果
正直なところ、OpenAIのまにある参照で終わってしまう話なのですが
それだとNoteとして寂しい(?)ので順を追って記載してみます
まずまにあるは以下
OpenAI Python Libraryのアップデート
gpt-4o使用のために確かアップデートが必要だった気がするので
未実施の場合はしておきます、以下の感じ
pip install --upgrade openai
APIは取得済み、あるいはマニュアル参照して取得って感じで次に進みます
実装
過去Noteと共通点も多いのですが、以下の感じにしました
import discord
import os
### for OpenAI
from openai import OpenAI
client = OpenAI()
### discord initial
intents = discord.Intents.default()
intents.message_content = True
discord = discord.Client(intents=intents)
def split_text(text, chunk_size=1500):
# テキスト文字列をchunk_sizeで指定した大きさに分割し、リストに格納する
return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
@discord.event
async def on_ready():
print(f'We have logged in as {discord.user}')
input_text = ""
old_answer_text = ""
@discord.event
async def on_message(message):
global input_text,old_answer_text
if message.author == discord.user:
return
if message.author.bot == True:
return
await message.channel.send("---")
old_input_text = input_text
input_text = message.content
### for OpenAI
answer = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": old_input_text},
{"role": "assistant", "content": old_answer_text},
{"role": "user", "content": input_text}
]
)
splitted_text = split_text(answer.choices[0].message.content)
for chunk in splitted_text:
await message.channel.send(chunk)
### for OpenAI
old_answer_text = answer.choices[0].message.content
discord.run(os.environ['BOT_KEY'])
OpenAIの記述に関連するところは「### for OpenAI」の箇所で、
### for OpenAI
from openai import OpenAI
client = OpenAI()
と
### for OpenAI
answer = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": old_input_text},
{"role": "assistant", "content": old_answer_text},
{"role": "user", "content": input_text}
]
)
splitted_text = split_text(answer.choices[0].message.content)
と
### for OpenAI
old_answer_text = answer.choices[0].message.content
な部分です
API Keyの指定が記述に無いのはマニュアルの推奨設定である
環境変数OPENAI_API_KEY へ設定しているためです
結果
出来ました✨
この結果だとGPT-4oの凄さは全く伝わりませんが、、
早いし賢いしいい感じです👀✨
早く残りのアップデートもこないかなあ、待ち遠しい。。