ChatGPTプラグイン開発の実践:さけのわの事例紹介
さけのわChatGPTプラグインを公開しました。さけのわのデータを使って日本酒の銘柄について詳細情報を教えてもらったり、おすすめを相談できるプラグインです。

この記事ではChatGPTプラグイン開発において困ったところ、勘所などを開発者視点で書きます。これから開発しようという方のお役に立てば幸いです。
ローカル開発
開発時はAPIサーバーをローカル環境に配置しても構いません。
本番環境では次のようにChatGPTのサーバーがAPIサーバーと通信します。

ローカル環境ではブラウザーが直接通信します。

ブラウザーがChatGPTのページ(chat.openai.com
)から別のホストのAPIサーバーに通信するため、APIサーバーにはCORSの設定が必要です。
認証
APIサーバーの認証方法はマニフェストファイル(ai-plugin.json
)で指定します。さけのわChatGPTプラグインではservice_http
を使いました。事前に登録したキーをAuthorization
ヘッダーにBearer
トークンとして設定してくれるので、API側で確認すればよいです。
Authorization
ヘッダーの例:
Authorization: Berer [API-KEY]
キーの登録はプラグインの申請フロー中に行います。
マニフェストファイル
マニフェストファイル(ai-plugin.json
)は公開サーバーの /.well-known/ai-plugin.json
として配置しておく必要があります。
いろんなプラグインのマニフェストファイルとAPI仕様ファイルをまとめている方がいらっしゃいます。https://github.com/sisbell/chatgpt-plugin-store
ここでわかるように、ほとんどのプラグインでは誰でもアクセスできるようになっていますがプラグインが動作するためにはChatGPTのサーバーからアクセスできれば十分なので、アクセスを制限も可能です。ChatGPTのサーバーが使うIPアドレスの範囲はChatGPTプラグインのドキュメントに記載されています。
ChatGPTのPlugin devtoolsによればマニフェストファイル中のdescription_for_model
の値はそのままプロンプトに埋め込まれるため、隠してもあまり意味はありません。マニフェストファイルの他の部分も将来に渡って埋め込まれない保証はありません。マニフェストファイルには公開しても良い情報だけを記載します。
ちなみにプロンプトに埋め込まれている部分はChatGPTに聞けば答えてくれます。さけのわChatGPTプラグインはマニフェストファイルを公開していませんが、ChatGPTが教えてくれます。

API仕様ファイル
ChatGPT Plugin devtoolsによれば、API仕様ファイルの中身はいったんTypeScriptに変換されてプロンプトに埋め込まれます。さけのわChatGPTプラグインの場合は次のような内容が埋め込まれます。(多少省略しています)
namespace sakenowa {
// Search brands by query
type search__brands = (_: {
// query string that will match with brand name. Can be Japanese name (Kanji or Hiragana), English name and also part of them.
brand?: string,
// search by area. It should be official Japanese prefecture numbers
area?: number[],
)} => any;
} // namespace sakenowa
API仕様ファイルでは戻り値の型も定義していて、最適なエンドポイントを選択するための重要な情報になるはずなのですが、ここではany
になっていますね。また配列の長さ制限などもAPI仕様ファイルに記載していますがここには現れていません。一方でdescription
の値はコメントとして出力されるようなので、ここに情報を書くのが良さそうですね。
こういう形式のためAPIサーバーのURLなどの情報はプロンプトには埋め込まれないようです。ただし将来どうなるかわからないので、基本的に公開されるものとして扱う必要があります。なおこちらもIPアドレスの範囲指定でChatGPTのサーバーだけのアクセス制限が可能です。

公開!使ってもらうにはどうすれば?
2023年5月29日時点では申請してから7日以内でレビューが完了するとされています。さけのわChatGPTプラグインはちょうど7日かかりました。
公開後にプレスリリースを配信しました。スマートフォンアプリならストアのURLを掲載してそこから使ってもらうと思いますが、ChatGPTプラグインのストアにはURLがないんですよね。検索機能もないので20ページくらいある一覧から探してもらうことになります。きっとこれも直に改善されると思うので期待ですね。
再承認(Re-verification)
プラグインが承認されてストアに並んだ後でマニフェストファイルを変更するとストアから取り下げられ再承認が必要になります。現在聞いている話では次のような状態です。
- ストアから取り下げられても利用中のユーザーはそのまま使えるらしい
- 再承認にかかる時間は3日の場合もあれば1週間かかったという話もある
これは相当に厳しいです。ChatGPTプラグインはベータだからこうした不便が解消されるには少し待つ必要があるでしょう。私もちょこっとマニフェストファイルを変更したいのですが我慢しています。
OpenAIのフォーラムでも議論になっているのでそのうちに改善すると思いますが、今はリリースされたらマニフェストファイルの変更は難しいと考えておく必要があります。
まとめ
ChatGPTプラグイン開発については公式のドキュメントによく書かれているので情報不足で困ることは少ないでしょう。しかし、ベータ版ならではの練れていない部分や、公開後の再承認プロセスなど、開発者が直面する可能性のある難しさも存在します。
この記事では、さけのわChatGPTプラグインの開発過程で得た知識と経験を共有しました。公式ドキュメントの補足として、これからChatGPTプラグインを開発する方のお役に立てれば幸いです。