こんにちは!逆瀬川 ( @gyakuse ) です!
きょうは発表があったばかりのChatGPT Pluginについて紹介していきたいと思います。
ChatGPT Pluginとは
かんたんに言ってしまうと、ChatGPTの能力を拡張するためのプラグインです。よくわかりませんね。
わかりやすくいうと、
「来週の土日に旅行いきたいんだけど2万円以下で適当にいいとこ見繕って予約しといて」
「アイヨー」
みたいなことができるやつです。
もちろんこれらはChatGPTのAPIを用いてもできましたが、これを容易に実現する手段として提供されました。
BingGPT (正式名称New Bing) のように検索して回答してくれたり、会社の文章群をもとに質問回答してくれたり、
商品を注文してくれるなどのアクションを行う機能が追加された、と理解しておくとよさそうです。
これはまだWaitlistであり、今後公開されていく機能です。
初期に提供される公式のプラグイン
- Expedia
- 旅行計画をつくる - 交通手段、宿泊先、観光やアクティビティを見つける
- FiscalNote
- 法律、政治、規制データ・情報の選択された先導的なリアルタイムデータセットへのアクセスを提供・可能にする
- Instacart
- お気に入りの地元の食料品店から注文する
- KAYAK
- フライト、宿泊、レンタカーを検索。予算内で行けるすべての場所のおすすめ情報を入手
- Klarna Shopping
- 数千のオンラインショップから価格を検索・比較
- Milo Family AI
- 謎
- OpenTable
- レストランのおすすめ情報を提供し、直接予約するリンクを提供
- Shop
- 世界最高のブランドから何百万もの商品を検索
- Speak
- Speak を使って、AIチューターと任意の言語を学ぶ
- Wolfram
- Wolfram|AlphaとWolfram Languageを通じて、計算、数学、キュレーションされた知識、リアルタイムデータにアクセス。
- Zapier
- Googleシート、Trello、Gmail、HubSpot、Salesforceなど、5,000以上のアプリと連携する。
とくにインパクトが強いのがZapierでしょう。これだけで、ほぼ (ネット上なら) 何でもできる気がします。
公式のプラグイン群と、独自のプラグインを使用することができます。
独自のプラグインでは、社内文章をもとにしたAIとか作っておくと便利そうです。
ChatGPTの課題
さて次に、ChatGPT Pluginが必要になった背景を考えてみましょう。
ChatGPTをはじめとする言語モデルは、なんでもできるように見えていくつかの課題を持っています。顕著なものを上げると以下があるでしょう
- モデルの学習時点の知識に縛られてしまう
- 複雑な計算ができない
- 複数の書類を参考にして人間のように回答してくれない
これはいわば、言語モデルが脳だけあって、手足がないことに基因します。
人間と同じように、わからないことはGoogleで検索したり、数学なら電卓を使ったり、何かをするときはWebサービスを使ったりできるようにしてあげれば良いのです。
さいきんのテキストに制御された画像生成はtext to imageと呼ばれていましたが、これらの技術群はtext to action(文章指示から任意の行動へ)と呼ばれるようになるでしょう。
ChatGPT Pluginができること
では技術面を見ていきましょう。ChatGPT Pluginは主に、以下のことができるようになります。
- リアルタイム情報の取得: スポーツの試合結果、株価、ニュース等
- ナレッジベースの参照: 会社の文章、自分のメモ等
- アクションの実行: 旅行予約、商品注文等
ただし、重要なアクション (決済が必要な行為) はデモ動画を見る限り、まだ組み込まれていないように見えます。
InstaCartの例 (Blogの一番下から2番目の動画 ) では、購入候補を一括して見られるURLを提示するまでにとどまっていました。
けっきょくアクションの自動化は承認の自動化と紐付いてしまうために、ユーザーにどの段階でどのように承認 (選択) させるかが重要になります。
ChatGPT Pluginのつくりかた
まだアクセスできていないのでここでは軽く触れるだけに留めますが、独自のPluginはAPIのendpointを登録することで使うことができます。個人または組織の文章と組み合わせるためのプラグインが公開されており、これが参考になります。
このプラグインが達成しようとしていることは以下のようなものです。
Pluginの危険性
さいごにプラグインの危険性にも触れておきましょう。以前触れたように、言語モデルはその出力をコントロールしようとするような命令をすることが可能です。これをプロンプトインジェクションといいます。ブログ記事でもその危険性に触れられています。
たとえばドキュメントベースのプラグインを公開した際に、もとのドキュメントをそのまま表示させてしまうような命令が考えられます。Pythonの実行を行えるプラグインの場合、環境変数の表示、データベースの書き換え等が安易に実装された場合、できてしまいます。
実はすでにそのような機構が組み込まれている可能性はありますが、入力値や言語モデルの出力値の検証をして、安全に実行できるようにしなければなりません。