見出し画像

#ChatGPT を使って #Slack からChatGPTを使うためのアプリを作ってみた

先日、こんな記事を書きました

Slack上のテキストをDeepLで翻訳するアプリを書いたんです。やっぱ便利ですよねDeepL。今回はファイルの翻訳にも対応しました。

https://support.deepl.com/hc/ja/articles/360020582359-%E6%96%87%E6%9B%B8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%BD%A2%E5%BC%8F

これを見ると、PDF/Word/PPT/テキスト/HTMLに対応しているみたいです。便利!

これは一つの投稿に対してスタンプを押すことで翻訳する形なのですが、チャンネルに流れてくる文章すべてを翻訳するというアプリも別に作って公開してあります。

今回はChatGPTの話

ChatGPTって知ってますか。AIを相手にチャットできる機能で、ものすごい性能だって話でバズりました。↓Twitterでの検索結果

今はこのURLからしか使えないんですけど、Slackから使えたら、AIとの会話を試してみたいと思う人が増えるんじゃないかなと思ってSlackアプリに実装してみようということになったわけです。

https://chat.openai.com/chat

すごいのは、こんなコードを書いてくれない?って質問すると、そのまま使えそうなコードが返ってくるということで、落合陽一さんが色々やってました。

びっくりですよね。ということで、今回はChatGPTを使って、Slack Bolt for PythonからChatGPTを使うためのコードを教えてもらいましょう

ChatGPTからのレスポンス

おお!それっぽいのが出てきた。
そもそもOpenAIのAPIの使い方を知らないので、このコードを使えば簡単に実装できそうです。

def generate_response(prompt, api_key):
 model_engine = "text-davinci-002"
 openai.api_key = api_key
 completions = openai.Completion.create(
  engine=model_engine,
  prompt=prompt,
  max_tokens=1024,
  n=1,
  stop=None,
  temperature=0.5,
 )
 message = completions.choices[0].text
 return message

model_engine = "text-davinci-002"
と書かれている通り、ChatGPTのモデルがAPI経由で使えるという状態では今現在はないみたいです。
promptってのがインプット用のテキストです。
今回は、アプリへのメンションで会話が始まるような形にしたかったのでインプットはこんな感じでメンション部分のテキストを削除しました。そうしないと変なレスポンスが来ます。

imput_text = re.sub('<@.*>', '', event['text'])
message = generate_response(imput_text, open_ai_api_key)

メンション時に入ってきたテキストを、ChatGPTが吐いたコードをつかってOpenAIに投げればなんとびっくり完成です。スゴ

APIキーが正しいかどうかを知りたい

APIキーは、Slackアプリのホームタブから入力する形にしてあるのですが、APIキーが正しいかどうかを判定したいのです。こんな感じで。

バリデーションどうやれば良いんだろうと思ったら、ChatGPTに聞きましょう。

そのまま使えるじゃない。
ということで、DeepLで翻訳するために作られたSlackアプリに、ChatでAIと対話できる機能を追加してみました。しかもコードはAIが生成しています。簡単なコードならこうやってAIが作ってくれる時代が来たのか…すごいな(遠い目

ということで、DeepL TranslatorアプリにAI会話機能をつけました!API経由で使える機能がChatGPTではないので、あそこまでの高機能とはいかないのですが、AIから自然言語でレスポンスが来るというのをちょっと試したいという場合に利用できると思います。是非お試し下さい。

インストールはこちらから: https://lne.st/deepl

AIに世界一美味しいパンを聞いてみた

日本語で聞いても返答が英語というパターンがあるので、DeepLを使って翻訳してあげると理解がすんなりいきますね!

noteにはこれまでの経験を綴っていこうかと思います。サポートによって思い出すモチベーションが上がるかもしれない。いや、上がるはずです。