たまには技術的なことを書くです。
ぜ~んぜん、いいねが付かない しぇいしぇい Qiitaである。
承認欲求を刺激された僕はついに技術的な話を書くことにしたのであった。
Discord の BOTプログラムが構築済みの前提ですた。
-
openaiのPythonパッケージをインストールしますた。
$ pip3 install openai
-
OpenAIのWebサイトにアクセスし、ユーザーアイコンから[View API keys]を選択しますた。
-
API keys画面にてキーが出来ていない場合は [+ Create new secret key] を押下しませう。
作った時に鍵の情報がコピーできるのでコピーしませう。
閉じると再度見ることは出来ないので、削除して作り直しになるます。
: -
使用するChatGPTは3.5を選択しますた。
connect.py# connected openAI use gpt 3.5 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role":"user", "content" : _prompt}, ] )
-
今回は /neko と打った時にその直前に入力していた内容をChatGPTに話しかけるプログラムとしますた。
また、Discordのチャンネルも特定のチャンネルのみ発言を拾う様にしますた。 -
ソースコードはこんな感じですた。
main.pyimport discord import openai TOKEN = '[DISCORD_TOKEN]' KEY = '[OPENAI_APIKEY]' CHANNEL = '[DISCORD_CHANNEL_ID]' # initialize for discord intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) # initialize for openAI openai.api_key = KEY # initialize for logic message_list = ['please tell me. you can input some talk with me.', 'empty'] _counter = 0 # event @ invoke @client.event async def on_ready(): print('ログインしますた') # event @ recv message @client.event async def on_message(message): if message.channel.id == CHANNEL: # ignore message by bot if message.author.bot: return global _counter if _counter > 0 : _counter = 0 else : _counter = _counter + 1 print(message.content) print("_counter : " + str(_counter)) print(message_list) print('------------------') message_list[_counter] = message.content print(message_list) print('access index : ' + str((_counter - 1) * -1)) # if type /neko then throw question to chatGPT. if message.content == '/neko' : _prompt = message_list[ (_counter - 1) * -1 ] print('prompt : ' + _prompt) # connected openAI use gpt 3.5 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role":"user", "content" : _prompt}, ] ) await message.channel.send(response.choices[0]["message"]["content"]) # bot invoke and connect discord server client.run(TOKEN)
終わりに
次はこの子に性格をつけてもいいんですけど、トークンでお金が掛かるのが非常に二の足を踏みます。
湯水のように使えるお金が欲しい
まともにPython組んだの初めてですが、人気がある理由が分かりますね。
非常に組みやすい言語ですわ。