![見出し画像](https://assets.st-note.com/production/uploads/images/116471921/rectangle_large_type_2_09621507b8537b0fb0e5e0e9c159dd74.png?width=1200)
Open interpreter をDiscord botへ組み込んでみた
はじめに
おはこんにちばんは、えるです❣
公開されてからいろいろと話題になっているOpen interpreter、やっと触れました✨
いやー凄いですね、各所で凄いと言われてるのであんまり言いたく無いのですが色々出来そうで面白いです
そんなOpen interpreterさんで遊んでみた結果と、Discord botに組み込んでみた結果をまとめたいと思います
公式Web
公式は以下なのかな?
それとgithubでしょうか
GitHub - KillianLucas/open-interpreter: OpenAI's Code Interpreter in your terminal, running locally
そしてGoogleColabのデモ! これは嬉しい…!!
Open-Interpreter Demo - Colaboratory (google.com)
GoogleColabのデモでだいたい雰囲気は掴めるので、まずはそれで遊ぶことにします
GoogleColabのデモで遊ぶ
基本的にはデモをぽちぽちするだけなのですが、一部記述を追記します
Setup
この辺りはほぼデモのままですね
openai_api_keyは自分のapi keyに変更しておきます
auto_run = TrueはColabだと「インストールしますか? y/n」みたいなところで動かなくなっちゃうからでしょうか
!pip install open-interpreter
# Google Colab users: restart your runtime here.
import interpreter
# Paste your OpenAI API key below.
interpreter.api_key = "your_openai_api_key"
interpreter.auto_run = True
お試し! の前にmodel切り替え
Setupしたし、よーし色々試すぞー❣
…となる前にデモ版の注意点があります
Open interpreterはデフォルト GPT4 という点です
まずOpenAI APIの価格差を見てみましょう
Pricing (openai.com)
![](https://assets.st-note.com/img/1694966626928-4xjpOvsL5J.png?width=1200)
まあ、Open interpreterとか使ってる人はだいたい知っているかもですが、、
GPT4とGPT-3.5 Turboは20倍くらい価格が違います。
そして、Open interpreterは1回のやりとりにMaxトークン使うことも多いみたいです
(あるいはそれ以上)
仮にOutputでMaxトークン(は無いはずですが)で計算すると、以下の感じでしょうか
GPT-4:$0.48 (0.06 x 8)
GPT-3.5 Turbo : $0.008 (0.002 x 4)
一回で$0.48… 恐ろしいですね…
上記が恐ろしいと思った方はお仲間でございます、デモ版に以下のモデル切り替えを追加して使いましょう
interpreter.model = "gpt-3.5-turbo"
まあGPT4が使いたくなるシーンもありそうな気はしますが、そこは使い分ける感じで
Hello, World!
使用モデルも決めたところで、デモ通りぽちーします
interpreter.chat("Please print hello world.")
![](https://assets.st-note.com/img/1694967528132-BAKL7mDAU7.png?width=1200)
…ちなみにこれ初見で「おおー凄い!!!!✨」ってなるんでしょうか…?
私はこの時点では、Open interpreterさんが何が凄いのか、得意なのか、
さっぱりわからなかったです。。 「…えっ?」って感じ
もっと詳しい人は「これは凄い!」ってこの時点でなるのかなあ
interactive chat
個人的に「おおー👀✨」って思ったのはこのあたりからです
interpreter.chat()
ちなみに最初はデモ通りMathをしようかと思ったんですが、実行したら消えちゃったのでとりあえず私は以下から入りました
![](https://assets.st-note.com/img/1694967938706-XP253y02hn.png)
GoogleColabでも出来るインタラクティブなChatが新鮮だったのと、GPT APIさんの苦手そうな現在時刻をあっさり回答したのはびっくりでした
なお参考として、その後のWebブラウジングは私の場合上手くいかなかったです 何かいい感じのやり方があるのかな? あるいは、GPT3.5使用起因かもしれないですね
Discord botへの組み込み
実装
以前Discord botとChatGPT APIを組み合わせていて、今も愛用しているのですが、今回のOpen interpreterでまず思い立ったのはこのDiscord botへの組み込みでした
Discord bot with chatGPT 作成日記|える (note.com)
GoogleColabの環境とは異なるので、Python更新できない問題とかに悩みつつ、、
Open-interpreterをローカルというかvpsに導入しようとしてるものの、Pythonバージョンで怒られていてなかなか更新できずこのままでは貴重な連休が終わりそうです…🫠
— える (@el_el_san) September 17, 2023
colabではサクサク動くんだしvpsは一旦撤退という手も、うーん pic.twitter.com/pQiiDRO4dD
なんとか無事に導入✨
vspでも無事に動作して、ChatGPTエリちゃんが賢くなりそう…!わーい🥰 https://t.co/QWShl7YXL4 pic.twitter.com/uu5gHP6N6D
— える (@el_el_san) September 17, 2023
今のところのコードは以下の感じです
import os
import discord
import interpreter
bot_token = "ここにDiscord bot tokenを入力"
interpreter.model = "gpt-3.5-turbo"
interpreter.auto_run = True
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 initial
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
message_chunks = []
send_image = False
@client.event
async def on_ready():
print(f'{client.user.name} has connected to Discord!')
@client.event
async def on_message(message):
if message.author == client.user:
return
data = interpreter.chat(message.content, return_messages=True)
splitted_text = split_text(data[-1]['content'])
for chunk in splitted_text:
await message.channel.send(chunk)
client.run(bot_token)
まだいろいろ改善点はありそうですが、これでもそこそこ動いちゃうのが良いですね
Discord botと遊ぶ ~デモ
実装後にまずはGoogleColabデモと似たようなことが可能か試してみます
・Math
![](https://assets.st-note.com/img/1694969894571-112UD7BbnR.png)
・Webブラウジング
![](https://assets.st-note.com/img/1694970118860-raHhEc9J5J.png?width=1200)
ある程度はいい感じに頑張ってくれそうな気がしてきました
Discord botと遊ぶ ~ほか
個人的にとても面白いと思ったのは、discordからbotを実行しているVPSのファイル操作ができる点でしょうか
普通に出来るだろうなとは思ってたけど、、やっぱり出来ちゃうんですね…おっそろしい🫠 pic.twitter.com/b4BskN7Bst
— える (@el_el_san) September 17, 2023
ファイルを作成してDiscordに送信とか、自分で言っててよくわからないことも出来ちゃいます、しかもDiscordから自然言語ベースで
![](https://assets.st-note.com/img/1694970932587-w7YVwExD4F.png?width=1200)
![](https://assets.st-note.com/img/1694970956842-IZ6eMRknSG.png?width=1200)
ちょっとセキュリティ的にはどうなんでしょうとか思いつつ、何ができるのかまだまだ遊べそうな気がします。