LoginSignup
13
7

#Slack から #ChatGPT を使うためのアプリを作り込んで公開してみた Party on Slack

Last updated at Posted at 2023-04-14

そういえばQiitaに書いてないなと思いたち、この一ヶ月くらいの取り組みについて紹介します。

何を作ったのか

  • Slackから OpenAI APIを通して ChatGPTを使うためのアプリ
  • 誰でもインストールできるようにしてあります

アプリ詳細

以上の3つです。TimeLineだけ、すべての公開チャンネルにjoinする機能と、特定のチャンネルに投稿を転送する機能を有していますが、基本的に全部同じアプリです。
複数アプリをリリースしている理由は後述しますが、アプリ同士で会話を進めるために必要だからです。enjoy!

Slackにアプリをインストールする

アプリのインストールは以下のURLからどうぞ。
https://lne.st/getparty

利用した技術等

API: OpenAI, DeepL, Pinecone の設定が可能です
Slackアプリのフレームワークは slack_bolt(Bolt for Python)
Flask使ってアプリを動かしています。
ベクトルデータベースのPineconeへの接続が可能です。

動作スクリーンショット

マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png

特徴

  • APIキーは皆さんで取得したものを利用することができます
    • 決済拒否で使用停止になってしまったという話を耳にしたことがあります。弊社のAPIキーを使っていただき、精算払いとすることもできますのでご相談ください。そのために利用トークン数を集計する仕組みを持っています
    • Microsoft Azure版のOpenAI APIに対応しました(2023/5/11)
  • データベースにできるだけユーザー情報を取り込まない設計になっています
  • OpenAI APIを利用するので、入力データを学習データとして取り込まれない為、安全
  • Slackのチャンネル上で会話ができます
    • 複数人数で同じテーマについて会話することも可能です
  • アプリのDMから会話することも可能です
    • 他の人には見せずに生成AIの練習をすることができます
    • 逆に、DMから利用できなくすることもできます(2023/5/17)
  • スレッド中の会話の場合、アプリがメンションしなくても反応してくれるのでChatGPTのWeb版を使っているように使えます
    • 複数人で会話している場合、この反応がじゃまになる場合があります。その場合は、人間にメンションをすることで反応しなくなります
    • AIを含めた会話が煮詰まった場合はAIの応答を止めたいというシーンに遭遇します。停止も簡単にできます
  • 長文でOpenAIのトークン上限を超えてしまう場合は、要約を挟むことで処理ができるようになっています
  • URLが入った文章の場合は、コンテンツを取得するかどうかを尋ねてくれます
  • チャンネル毎にキャラクター設定をすることができます
  • チャンネル常駐機能があります
  • オーディオの文字起こしができます
  • 独自のデータを付与することができます(Pineconeを利用)
    • Pineconeにデータを送るためのスタンプをカスタムできるようになりました(2023/4/20)
    • Pinecone利用時に返却される参考情報リンクの出力有無を選べるようになりました(2023/4/20)
    • Pineconeに登録したデータの編集・削除ができるようになりました(2023/4/21)
    • CSVファイルからPineconeにデータを一括送信できるようになりました(2023/4/26)
    • URLにスタンプを付けることでWebコンテンツをPinecone登録できるようになりました(2023/4/29)
    • PDF/Wordファイルを解析することができるようになりました(2023/5/3)
    • Slack内の情報を与えることができるようになりました(2023/5/14)
  • 利用したトークン数を保存するようにしてあります
  • アプリ同士で会話することができます
  • スレッドに対するアクション
    • スレッドを要約できます
    • 返信案を作成できます
    • プロンプトの修正ができます
  • サポート機能を充実
    • テンプレート機能
      • URL要約
      • テキスト要約
    • プロンプト掲示板
    • 管理者向け機能
      • 設定項目をロックできるようにしました(2023/4/20)
  • Open AI Completion APIのパラメータ設定が可能
  • GPT4を利用できるようにアップデート(2023/4/28)
    • GPT4の利用を制限する事ができるようになりました(2023/5/11)
  • ブラウジング機能を追加しました(2023/4/29)
  • Slack検索機能を追加しました(2023/5/15)
  • GoogleAPI連携機能を追加しました(2023/6/1)
    • Google APIの公開申請が通りました(2023/6/13)
  • Function callingの実装を始めました(2023/6/20)
    • お天気情報を検索することが出来るようになりました
  • Salesforce連携ができるようになりました(2023/6/22)
  • Asana連携ができるようになりました(2023/7/1)
  • Anthropic APIを通じて、Claudeモデルが使えるようになりました(2023/10/3)
  • Amazon Bedrockを使うことで、Claude及びStable diffusionを使えるようになりました(2023/10/7)
  • 使用しているLLMがわかりやすくなりました(2023/10/17)
  • OpenAI DevDayの発表を元に機能拡張
    • gpt-4-turbo、DALLE3、text to Speechに対応(2023/11/7)
  • GoogleスプレッドシートRAG機能をリリース(2024/2/9)

詳細は以下に

APIキーを登録すればすぐ使えます

Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png
アプリのホーム画面にあるAPIキー欄から、APIキーを登録するボタンを押すことで登録ができます。
ボタンを押すとモーダルが立ち上がります
Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png

APIキー欄にキーを入れて下さい。
OpenAIのAPIを使う場合はエンドポイント欄は無視してください

Microsoft Azure版のOpenAI APIに対応しました(2023/5/11)

先程のエンドポイント欄に、Azureで発行されたエンドポイントURLを入力して下さい。
この場合にAzureを利用する設定となります。

データベースにできるだけユーザー情報を取り込まない設計になっています

DB上に取り込む情報は最低限になっています

  • 利用しているユーザのSlackユーザー情報
    • これについては不正利用時の連絡先として必要ということで格納させていただきます。マーケティング用途に使うことはありません。
    • ユーザー情報はメールアドレス及び登録者名となっています
  • SlackのID等
    • ユーザーIDやチャンネルID、投稿のタイムスタンプなどについては、各種処理に必要になる情報ですので格納させていただいています
    • 投稿内容については機密情報と認識しておりますので取得したり、利用ログ上に流れるといったことの無いように設計してあります
  • 一部機能では入力内容を保存しています
    • 後ほど紹介しますが、プロンプトの共有掲示板機能があります。こちらはユーザーの皆様が能動的にインプットをしていただくフィールドとして提供していますのでデータベース上に保存させていただいています

チャンネルかDMかで利用できます

チャンネルの場合はメンションして起動します
DMの場合はメンションしなくても反応してくれます

逆に、DMから利用できなくすることもできます(2023/5/17)

Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png
OpenAI API設定画面に、DMでの利用を制限するためのボタンを設置しました。
生成AIとのやり取りを共有財産にしたいという場合に有効な機能と言えます。

応答の停止・開始が簡単にできます

使い込んでいくと、ちょっと使いたいだけでスレッド全体についてこなくても良いという場合があります
その場合はボタン一つで応答を止められます。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
応答の再開はボタンをもう一度押すか、メンションすれば自動的に応答するようになります

超長文なやり取りについて

ai-sandbox_-Leave_a_Nest_Co__ltd_-_Slack.png
29回のやり取りでもなんとかなり遂げたようです。
詳細についてはこちらをご参照ください

URLの処理について

文中にURLが入っている場合、コンテンツを取得するかどうかを尋ねてくれるようになっています
例えば、

要約してから日本語にして出力して
https://openai.com/blog/introducing-chatgpt-and-whisper-apis

というように指示をした場合はこのような形になります

GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack.png

読み込むボタンを押すと、コンテンツを読みに行って、ChatGPTへと渡します。

GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack.png

チャンネル毎にキャラクター設定をすることができます

マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
チャンネル設定ボタンを押すことで、各種設定をすることができます。

アプリのキャラクター設定をする

マギシステム_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png
このボタンを開くと、キャラクター設定をすることができます。
詳細はこちらに書きましたのでご参照ください

設定自体は、Slack内のPostという形で格納され、アプリのDB中にデータが残ることはないので安心して使っていただけます。

チャンネル常駐機能があります

せっかく作ったキャラクター設定ですから、自動的に話し出したりすると良いと思いませんか。
ということで、そんな機能を有しています。
マギシステム_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png

  • 稼働する曜日と時間帯が設定できます
  • 10分毎にトリガされますが、毎回起動してしまうとうざくなりますので、指定された確率で話をします
  • トーク用のプロンプトはご自身で登録することができます

以下は、マイクのテスト中…というプロンプトだけ仕込んで100%で実行して放置した結果です。
デフォルトのTemperetureだと結構バラバラなテキストを生成してくれますね。
devtest_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png

時報設定ができます

これは最初に紹介したTimeLineとのあわせ技です。
TimeLineでは、アプリをチャンネルに常駐させることで、投稿を特定のチャンネルに転送させる機能を持っているアプリです。
開発意図は以下をご参照ください

転送時にPostのチャンネル及びタイムスタンプを格納するのですが、これを利用することで時報を作成します。
1時間前から現在までに投稿されたPostを把握するのはSlackAPIだと結構面倒(というか、SlackAPIに負荷がかかる)なのですが、あらかじめアプリを常駐させておくことで簡単に把握することができるようになるというものです。

Postを集計してテキストをMixし、それをChatGPTに要約してもらって出力するという使い方です。
devtest_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png

オーディオの文字起こしができます

これはOpenAIのWhisper APIを利用しているのですが、音声データを渡すと文字起こしをしてくれます。
devtest_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png

独自のデータを付与することができます(Pineconeを利用)

ChatGPTは2021年9月までの情報しか学習していないため、最新情報は返せません。
合わせて、日本語の情報は英語圏に対して相対的に少ないため、細かい情報を聞こうとするとすぐに嘘を付きます。
では、自社の情報を学習させたChatGPTを使うことはできないか?というと、現状ファインチューニングを提供していないためそれは難しかったりします。
そこで活躍するのがベクトルデータベースのPineconeです。
PineconeAPIを登録してから🍍(本当は松ぼっくりなのですが絵文字がなかったのでパイナップルで代用)スタンプをおすと、Slackの投稿がPinecone上に登録されます。
あとは、Pineconeを利用する設定を行いましょう。

GPT_Party_-Leave_a_Nest_Co__ltd_-2_個の新しいアイテム-_Slack.png
こうすることで、Slackのデータがベクトル化されてPineconeに格納されます。

Pinecone上のデータを利用するに設定しておくと、アプリに話しかけた時に以下のような処理になります

  • 話しかけた内容をOpen AI APIを使ってベクトル化する
  • それを用いてPinecone内部を検索してデータを取得する
  • 返ってきた情報をChatGPT APIにsystem情報として加えた上でCompletion APIを叩く
  • 本来であればChatGPTが答えられない情報に答えることができるようになる

というものです。
GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack.png
リバネス程度の知名度では学習対象に入っていないので本来であれば適当なことを言うのですが、Pineconeさえあれば問題ありません。

Pineconeにデータを送るためのスタンプをカスタムできるようになりました(2023/4/20)

上述した通り、デフォルトでは🍍スタンプを付けるとPineconeに送るようにしていたのですが、これをカスタムできるようになりました。

Pinecone利用時に返却される参考情報リンクの出力有無を選べるようになりました(2023/4/20)

Pinecone使用時は、このように参考リンクを出力するようになっています。
GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack.png
PCから見ると丁度よいのですが、モバイル端末からみるとこれが結構スペースを食います。
そのため、オプションでリンク返却を不要にできるようにしました。
GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack.png

Pineconeに登録したデータの編集・削除ができるようになりました(2023/4/21)

GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack-3.png
設定画面>Pinecone Moderator を開いてください

GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack.png
キーワードを検索すると、関連するデータが表示されますので、それを編集・削除することができます

GPT_Party_-Leave_a_Nest_Co__ltd_-_Slack-2.png

CSVファイルからPineconeにデータを一括送信できるようになりました(2023/4/26)

  • データ量が多い場合は専用のチャンネルを作成することをおすすめします
  • CSVファイルをチャンネルに投稿する
  • スタンプを押す
  • セル一つずつを読み込んで当該チャンネルにpostします。これをユニークIDとして使います
  • 上記のURLを元に、データをPineconeに送信します

という形式になります。
分量によっては、SlackもしくはOpenAI APIのレートリミットに達する可能性があります。
エラーが出た場合は、投稿内容を確認した上で、続きのみを再投稿してスタンプをおしてみてください

URLにスタンプを付けることでWebコンテンツをPinecone登録できるようになりました(2023/4/29)

devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
URL入りのコメントに🍍スタンプを付けると、コンテンツを読み込むかどうか確認するようになりました。

(βです)PDF/Wordファイルを解析することができるようになりました(2023/5/3)

これまで書いてきたPineconeは組織全体で共有するために情報を登録するという使い方でした。
一方で、自分のタスクを進めるためにChatGPTを利用したいというニーズがあると思います。
ファイルを読み込ませておいて、それについて質問をしたいというような使い方です。
自分が一時的に利用したいという使い方になるため、組織全体のPinecone環境を汚すことはしたくないというパターンありませんか。特定の論文や、説明書の読み込みなどに使えます。
そういうときはスレッドの中にファイルを添付してください。
するとこんな形で、ファイルを登録するかどうかを聞かれます。

devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
登録したあとは、ファイルから聞きたいことを尋ねてください

Cursor_と_devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
この回答は、スライド内のこのページから取得されていることがわかります

chatgpt-221212041345-1b2dfaea_pdf.png

この機能で期待すべきことは、ファイル内の探索を楽にするというものです。その資料について知りたいことを問えば、それについて解析した答えが返ってくる訳ですから業務効率が格段に上がることが期待できます。
現時点ではベータ機能としてあります。それはなぜかというと、Pineconeを使った情報の扱い方に工夫の余地がありそうだというものです。
現在の設定では、ファイル内のデータを1000トークンずつのチャンクに分割してPineconeに登録しています。
なぜかというと、

  • スレッド内で質問する
  • Pineconeで検索したデータを一つだけ戻す
  • 質問+PineconeのデータにしてChatGPT APIに渡す

というフローになっているからです。
可能性としてはPinecone登録時のチャンクの大きさをもっと小さくして、Pineconeから取得するデータ数を1じゃなくて複数にしたほうが総合的な回答が得られるのではないか、みたいな最適化がありえます
こちらについては今後の改善にご期待ください

ベータの理由2
PDFのローダーをもう少し良いものに変えるかもしれません
現状では抽出したテキストをそのまま登録しているのですが、情報は一度マークダウン形式に変換して登録してあげることができればChatGPTはそれを解釈することができるのでテーブル内の情報が適切に扱えるようになるからです

登録されたデータの扱いについて
Slackに添付されたファイルは一時ファイルとしてサーバーに書き込まれ、Pineconeへの登録が終わった際にremoveされる処理になっています。

Slack内の情報を与えることができるようになりました(2023/5/14)

スレッド_-Leave_a_Nest_Co__ltd_-_Slack.png
Slack検索を開始ボタンを押すと、Slack内の情報を含めた回答をするようになりました。
こちらの処理については、GPT4で利用することをおすすめします。3.5turboではうまく情報を検索することができないことがあります。

利用したトークン数を保存するようにしてあります

これは将来的に必要になるだろうということで実装している機能です。
それなりに大きな組織の場合、予算を誰が持つのかについて検討する必要があります。
アプリでは、アクションを誰がいつどのチャンネルで行ったのかをログとして保存していますが、そこに使用したトークン数も保存するようにしています。
将来的な展望としては、ユーザーの皆様のうち、管理者権限を持つ人にこれらの使用ログの提供を計画しています。
データはSnowflake上でデータシェア機能を使うことで提供されます。
同時に、この機能によって利用トークン数が把握できる為、自社のOpenAIのAPIキーを使うのではなく、弊社のAPIキーを使っていただいて請求書払いにするということも可能です。
OpenAIのカード決済が止まってしまったというパターンを耳にしていますので、そのように使えなくなってしまった組織に向けての提供が可能です。

アプリ同士で会話することができます

詳細はこちらへ

もともとは、アプリが勝手にアイデアをブラッシュアップしてくれたらいいなと思って作り始めた機能です。
実装して実験してみて思ったのですが、プロンプトの与え方で結構いけそうな予感がしますね。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png

スレッドに対するアクション

Slackはスレッドで会話が区切られていることもあり、当アプリではスレッド単位を記憶の単位としています。
つまり、別スレッドでは、別のAI人格と対話するということであり、スレッドをまたがった情報の共有はなされません。

スレッドを要約できます

長くなったスレッドの要約機能を提供しています
メッセージメニューからSummarize this threadを選択してください
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
自分にのみ見えるメッセージとして作成されます。
まとめとして投稿する場合はスレッドに公開するボタンを押せば公開されます。

プロンプトの修正ができます

ChatGPTと対話していると、「このプロンプトじゃなかったなー...」ということがよくあります。
そのままスレッドを続けてしまうと、想定外の文字列が残ってしまうためノイズが入るようになります。
そんなときに行うのがプロンプト修正です。
アプリに問いかけを行うと設定ボタンが現れますのでそれを開きましょう。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
入力欄に先程入力したメッセージが表示されるので、これを修正して送信するだけです。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png

返信案を作成できます

マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
先程のようにメッセージメニューを開き、Draft replyメニューを選択してください
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
このように返信案が作成され、送信ボタンを押すと投稿されます。もちろん文章は自分なりに変更して頂くことができます。

サポート機能を充実

なんと言ってもChatGPTは新しい技術です。使いこなせる人は便利という一方、全く使えないという人もいます。この差は何かというと「使い方が分かっていない」の一言に尽きます。
便利に使うことができれば強力な味方になるのですが、その前の段階でこんなの使えないよと諦めてしまう人がいるのはもったいない。そこでサポート機能を充実させることにしました。

テンプレート機能

よく使う機能はテンプレート化するようにしていこうと考えています。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
話しかけた最初の返信には必ずオプションボタンが添付されるようになっているので、その中にあるテンプレートボタンを押しましょう。
するとこんなモーダルが現れます
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
例えばウェブページを要約するを選んだ場合はこのようになります
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
URLを入れて出力言語を入れれば、それにあった形で出力されるという訳です。
もう一つはテキスト要約ですが、ようやくしたいテキストを入れれば良いという形です。

この他にも、テンプレート化してほしい機能があれば、是非コメントください。

プロンプト保管庫(掲示板)

マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
プロンプト保管庫ボタンを押すと、使えるプロンプトのTipsを見ることができます。
プロンプトは

  • 自分のみ閲覧可能
  • ワークスペース内閲覧可能
  • アプリのユーザー全体が閲覧可能(要審査)

の3種類となっていて、閲覧権限を設定可能です。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png
いいねができたり、閲覧数が見えたりということで、どんなプロンプトにニーズがあるのかわかるようになっているので、この機能については今後プッシュしていきたいなと思っているところです。
開くボタンを押すと、プロンプト本体とその用途がわかるようになっています。
マギシステム_-Leave_a_Nest_Co__ltd_-_Slack.png

Open AI Completion APIのパラメータ設定が可能

GPT4を利用できるようにアップデート(2023/4/28

やっとGPT4 APIが解放されました…これまで検証できなかったので実装できていなかったのですが、それに伴ってアップデートを入れました!!
GPT4が解放されている場合は、デフォルトのAPIモデルを選択できるようになりました
デフォルト値を設定できる単位は

  • ワークスペース単位
    • 基本的には3.5-turboにしておいて、グローバルロックをかけておくことを推奨します
  • チャンネル単位
    • チャンネル設定画面から設定します
  • スレッド単位
    • 最初にメンションした時に出てくるブロックで選択することができます。恐らくこれが一番ラクな設定方法でしょう

ワークスペース単位の設定は、アプリのホーム画面で行います
Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png

チャンネル単位の設定は、チャンネル設定画面から行います
ai-sandbox-4_-Leave_a_Nest_Co__ltd_-_Slack.png

スレッド単位の設定は、最初のメンション時に表示されるボタンから設定します
ai-sandbox-4_-Leave_a_Nest_Co__ltd_-_Slack-2.png

GPT4の利用を制限する事ができるようになりました(2023/5/11)

Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png
GPT4はGPT3に比べて30倍程度のコストがかかります。あっという間に予算を溶かしてしまう可能性があるのでその使用を制限したいという場合にこちらの機能を使ってください。使用させないボタンを押すと、スレッド及びチャンネル設定画面でGPT4を選択することができなくなります。

ブラウジング機能を追加しました(2023/4/29)

私のChatGPT Web版にはまだプラグインが来ていないので、このアプリ上でブラウジング機能を実現することにしました。
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
アプリに話しかけると、最初はメッセージとともに設定ボタンが出てきます。
その中でWeb検索ボタンを押すことでブラウジング機能を使うことができます。
こちらの機能はlangchainのDuckDuckGo Searchを利用して提供されています。
https://python.langchain.com/en/latest/modules/agents/tools/examples/ddg.html

GoogleAPI連携機能を追加しました(2023/6/1)

Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png
ホーム画面の下部にGoogle連携機能を追加しました
Google連携をすることでいくつかの機能を利用することができるようになります。
*当機能を利用する場合には、必ずアプリのインストールが必要になります。

Googleカレンダー連携

Googleカレンダーと連携し、複数人で空いている時間を抽出することができます。
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
上述のGoogle連携が完了している場合、スレッドメニューボタンにGoogleカレンダーというボタンが現れます。
これをクリックすると以下のモーダルを呼び出すことができます
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
モーダルでは以下を選択します

  • 予定の参加者
  • 抽出する期間
  • 開始時間と終了時間
  • 週末を含めるか否か

これらの条件を入れてSubmitすることで、空き時間が抽出されます
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png

Googleスプレッドシート、ドキュメント、スライド連携

Google連携を行った状態でスプレッドシートのURLを含めてメンションすると、スプレッドシートのデータを参照して答えを出すことができるようになります。
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
ボタンは、URL分析のときと同じですが、質問するボタンを押したあとのモーダルが少し変わります。
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png
スプレッドシートは複数シートがある場合がありますので、分析するシートを選択して質問をしましょう。
devtest_-Leave_a_Nest_Co__ltd_-_Slack.png

GoogleへのAPI公開申請が通りました!(2023/6/13)

OAuth_Verification_Request_-y_lne_st-_株式会社リバネス_メール.png

上述のGoogle連携を提供するためにGoogleに公開申請を投げておりましたが、こちらが通りました。
どなたにもご利用頂けます!

Function callingの実装を始めました(2023/6/20)

2023.6.13にOpenAI より以下の発表がありました。

いわゆる、Web版ChatGPTにおけるPluginのような機能をChatGPTのAPIを使って実装出来るようになったというものです。
既に色々な機能を実装していますが、以降についてはFunction化して提供していくことを検討しています。

使い方

Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack.png

ホーム画面のOpen AI APIブロックにFunction callingセクションを設けました。
ホーム画面ではワークスペース内での利用の可否を設定できます。
ホーム画面で使用禁止にすると、ワークスペース全体で利用できなくなりますのでご注意ください。

そのしたにあるFunction calling設定ボタンを押すと、どの機能を利用するかを選ぶことができます。
Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack-2.png
こちらのモーダルの中にすべてのFunction callingで利用できる機能が表示されますので、利用したいものを有効化して使うようにしてください。
こちらも、先程と同様に、ホーム画面から利用の可否を設定することで、ワークスペース全体に影響します。

お天気情報を検索することが出来るようになりました(2023/6/20)

devtest_-Leave_a_Nest_Co__ltd_-_Slack-8.png
Function callingを設定して、お天気を聞くと、open-meteoのAPIを利用して天気を返してくれます。(それ故に適当だったりするのですが)
大阪弁になってるのは、チャンネル設定であなたは関西弁で話しますと指定してあるだけなので気にしないでください(笑
こちらはサンプル実装であり、Function callingによく出てくる物となってます。
今後は、実際に使って便利な機能を実装していく予定ですので、ご期待ください。

Salesforceの情報にアクセス出来るようになりました(2023/6/23)

02-2-it_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack-2.png
詳細は以下のSalesforce連携セクションに書きますので御覧ください。

Salesforce連携ができるようになりました(2023/6/22)

Party_on_Slack_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png
設定画面下部にあります、SalesforceAPIセクションより設定が可能になりました。
ワークスペース全体で連携を許可しない場合は、管理者の方が連携許可しない状態にしておいてください。
ワークスペースで利用可能な場合は、そのしたにあるSalesforce連携ボタンより、Salesforceと連携ができるようになります。
ワークスペースで接続できるSalesforceは一つのみです。
ただし、Party on Slack/TimeLine/DeepL Transrator でそれぞれに設定出来ますので、複数組織への接続が必要な場合はそのように使い分けるようにしてください。こちらの実装については、マルチ組織での利用者が増える場合にはもう少しマシな実装を考えようと思っています。

Salesforce連携で利用できる機能は以下の通りです。機能はどんどん拡張予定です。

特定の取引先に紐づいた商談を取得する

例:リバネスの今週更新された商談を教えて
02-2-it_-Leave_a_Nest_Co__ltd_-1_個の新しいアイテム-_Slack.png

Asana連携ができるようになりました(2023/7/1)

設定画面より、Asana API連携を行って下さい。
Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack-3.png

Function Callingで連携機能を使うことができます
Party_on_Slack_-Leave_a_Nest_Co__ltd_-_Slack-4.png

Asana連携:今日(明日,etc...)のタスクを聞く

F0vsfJZagAEKFeF.png
Function callingを有効にした状態で、今日のタスクを教えて、と質問すれば(明日とかでもOK)、存在しているタスク一覧を取得することができます

Asana連携:タスクを登録する

F0vsdQLaUAASHqf.png
シンプルにタスク登録をお願いするだけで、登録用のフォームが立ち上がります

##Anthropic APIを通じて、Claudeモデルが使えるようになりました(2023/10/3)
Slack上で、 #Claude APIが使えるようになりました。いつも通りホーム画面にAPIキー入れるだけでClaudeがSlackの中に!お試しください。
Party_on_Slack_-Leave_a_Nest-_Slack-2.png
チャンネル設定、スレッド設定ができます
05-george_-Leave_a_Nest-_Slack.png

Amazon Bedrockを使うことで、Claude及びStable diffusionを使えるようになりました(2023/10/7)

設定方法が少し長いので、記事を分けました。使い方についてはこちらを御覧ください。

使用しているLLMがわかりやすくなりました(2023/10/17)

先日のアップデートによって、利用できるLLMのAPIが

  • OpenAI
  • Microsoft Azure OpenAI
  • Anthropic
  • Amazon Bedrock(AWS)

の4つに増えました。LLMのモデル選択のドロップダウンリストにズラッと並ぶのですが、どのモデルがどこから来ているのかがわからなくなるので表示方法を変更しました。

スレッド_-Leave_a_Nest-_Slack.png

スレッド設定に「言語モデル表示」を追加

05-george_-Leave_a_Nest-_Slack-4.png
スレッド設定ボタンの中に言語モデルの表示ボタンを配置しました。
これを使うことで、使用している言語モデルが文頭に記載されるようになりました。

gpt-4-turbo、DALLE3、text to Speechに対応(2023/11/7)

今回のアップデートでは以下の機能が利用可能となりました

  • GPT-4-turbo(モデル名 gpt-4-1106-preview)
  • GPT-4-V(モデル名 gpt-4-vision-preview。マルチモーダルと言われる機能を提供)
  • GPT-3.5-turbo-1106(gpt-3.5-turboの最新バージョン)
  • DALLE3(画像データ生成モデル)
  • Text to Speech(文字列から音声を生成するモデル)

チャットモデルの利用方法について

チャットモデルは従来どおり、Slack上でParty on Slackをメンションすることで、スレッドメニューが立ち上がり、その中で簡単に選ぶことができます。

  • GPT-4-turbo及びGPT-3.5-turbo-1106はモデルを選んだあとに、スレッド上になにか書き込むことで会話がスタートします
  • GPT-4-turboはGPT4よりスピードが圧倒的に早くなりました。価格も低下し、最新情報は2023年4月まで学習済みとなっています
  • GPT-3.5-turbo-1106はコンテキスト長が16kとなり、従来あったgpt-3.5-turbo-16kモデルを使わなくても良くなった部分が特徴となっています

マルチモーダルAIをSlack上で提供

モデル選択欄でgpt-4-vision-previewを選択することで、マルチモーダルな生成AIを体験することができます。
マルチモーダルとは、これまでのようにテキストのみの入力ではなく、画像からも情報を得ることが出来るモードとなっています。
当アプリでは、Slackのスレッドに画像を添付する形式でマルチモーダルの利用が出来るため、Slackの操作に慣れている方であれば違和感なくマルチモーダルを体験することができます。

05-george_-Leave_a_Nest-1_個の新しいアイテム-_Slack-3.png

添付した画像について解析をさせる、説明をさせる、OCRのようにテキスト化させるといった使い方などが可能です。

テキストから音声を生成する

新しくText to Speechという機能が提供されました。
これは、その名の通り、テキストを渡すと音声ファイルが生成するというものです。
こちらはスレッドメニュー内の「音声生成」ボタンより利用することができます。
_05-george-Leave_a_Nest-2_個の新しいアイテム-_Slack.png
こちらのボタンを押すことで、音声生成モーダルが開きますので、音声化したいテキストを入力して、モデルを選択して生成ボタンを押します。

05-george_-Leave_a_Nest-2_個の新しいアイテム-_Slack.png
音声モデルには2パターンあり、tts-1とtts-1-hdです。hd版はより高精度ですが、通常版より速度が遅いモデルとなっています。声色については5パターンありますので、お好みの音声をお選びください。
作成するボタンを押すことで、スレッドに音声ファイルが展開されます。
05-george_-Leave_a_Nest-2_個の新しいアイテム-_Slack-2.png

DALLE・3を使った画像生成

スレッドメニューにある「画像錬成」ボタンを押すことで、DALLE3を使った画像生成が出来るようになりました。
05-george_-Leave_a_Nest-1_個の新しいアイテム-_Slack-4.png

ボタンを押すとこのようなモーダルが立ち上がるので、作りたい画像イメージを書き込んで送信するだけで利用できます。
05-george_-Leave_a_Nest-1_個の新しいアイテム-_Slack-5.png

DALLE3の画像生成能力の高さは折り紙付きです。是非ご自身でご体験ください。
05-george_-Leave_a_Nest-1_個の新しいアイテム-_Slack-6.png

GoogleスプレッドシートRAG機能

これまではPineconeのみ対応していたRAG機能に、スプレッドシートRAG機能を追加しました。

設定方法

1:Google連携する
DM___Party_on_Slack_-Party_on_Slack-_Slack.png
アプリのホーム画面のGoogle APIセクションから、Sign in with Googleボタンを押してGoogle API連携をします。
アプリ自体のインストールがされていない場合は、インストールボタンになっていますので、まずはじめにアプリのインストールを行ってください。
ボタンを押すとこのような画面に遷移します

ログイン_-_Google_アカウント-2.png
ご自分のアカウントを選択する、もしくはパスワード認証でGoogleアカウントにログインして次に進んでください。

ログイン_-_Google_アカウント-3.png
次へボタンをおしてください

ログイン_-_Google_アカウント-3.png

画面下部に権限の許可ボタンがありますので、許可ボタンを押すと連携が完了します。
このような画面になればGoogle連携が完了です
Google認証完了_Google_authentication_completed.png

注意:Slackのユーザーアカウントの登録Emailアドレスと、Google連携用のEmailアドレスは同じである必要がありますのでご注意ください。違うメールアドレスを認証しても利用できません

2:アプリホーム画面を開いてください
スプレッドシート検索をONにしてください

DM___Party_on_Slack_-Party_on_Slack-_Slack-2.png
ボタンを押すと、このような画面が表示されますので、一覧ボタンを押します。
DM___Party_on_Slack_-Party_on_Slack-_Slack-3.png
ボタンを押すと、スプレッドシートの登録画面がモーダルで開きます
DM___Party_on_Slack_-Party_on_Slack-_Slack-4.png
追加するボタンを押して、追加画面を開きます

DM___Party_on_Slack_-Party_on_Slack-_Slack-5.png
アクセス権限のあるスプレッドシートを登録し、有効化してください。
これで準備は完了です

3:スレッドメニューで有効化する
Slack_-とりあえずテスト-_Party_on_Slack.png
こちらをONにします

3-2:スプレッドシートに情報を記載する
以下のように、セル一つに1テーマとなるように情報を記載してください。
Party_on_Slack_テスト用_-_Google_スプレッドシート-2.png

3-3:きちんと答えるか聞いてみましょう
まずはOFFの状態で、リバネスについて聞いてみます
スレッド___とりあえずテスト_-Party_on_Slack-_Slack.png
このように、弊社リバネス程度の知名度ではLLMに情報が組み込まれませんのでハルシネーションがおきます
次にONの状態で、スプレッドシートの情報を取得して答えてもらいましょう
スレッド___とりあえずテスト_-Party_on_Slack-_Slack-2.png
このように、正しい情報を返すようになります

データを更新したら、更新ボタンを押してください

先程のスプレッドシート登録画面に、Data更新ボタンがおいてありますので、そちらを押すことで情報の埋め込みが完了します。
DM___Party_on_Slack_-Party_on_Slack-_Slack-6.png

まとめ

Slack上でChatGPTを使うにはどのような機能を有していればよいかを検討した結果、色んな機能ができました。
日々3000チャット以上が使われています。
無料で使えますので、是非使ってみてくださいね!

関連記事

13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7