この記事のポイント
- この記事では、ChatGPTプラグインの作成方法について詳しく解説しています。
- プラグイン開発に必要なマニフェストファイルの作成から公開プロセスまでをステップバイステップで説明しています。
- プラグイン開発にはある程度の技術力が求められ、ハードルが高いイメージがありますが、この記事を参考に独自のプラグインを作成することができます。
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
ChatGPTのプラグインはすでに数多くリリースされていますが、「こんな機能があれば便利なのに」と感じた経験がある方も多いのではないでしょうか。
しかし、プラグイン開発にはある程度の技術力が求められ、ハードルが高いイメージがあるのも事実です。「試してみたいけどコーディングできる自信がない」と感じている方も少なくないはずです。
そこでこの記事では、ChatGPTのプラグイン開発に興味を持つ方々に向けて、その基本的な方法とプロセスについて分かりやすく解説していきます。 興味はあるが実際に作ったことはないという方は、ぜひこの記事を参考に独自のプラグインを作成してみて下さい。
最新モデル、ChatGPT4o(GPT-4o)について詳しく知りたい方は、こちらの記事もご覧ください⬇️
ChatGPT-4o(GPT4 omni)とは?使い方、料金など詳細を徹底解説!
目次
ChatGPTのプラグインとは?
ChatGPTプラグインは、ChatGPTの能力さらに引き出し、特定のタスクやニーズに対応するための追加機能です。
例えば、天気情報を提供するAPIとそれを接続するプラグインを作成すると、ユーザーからの「東京の今日の天気は?といった質問に対して、実際の天気データに基づいた正確な出力が可能になります。
このように、プラグインによってChatGPTの回答能力が格段に向上し、より特定のタスクに特化した応答を得ることができるようになるのです。
ChatGPTプラグインの開発から公開までのフロー
ChatGPTプラグインの開発プロセスは、以下のようなステップからなります。
プラグイン開発の流れ
- マニフェストファイルを作成し、ホストする。
- ChatGPT UIでプラグインを登録する。
- プラグインをActiveにし、会話を開始する。
- モデルがプラグインの説明を挿入し、必要に応じてAPIを呼び出す。
- モデルがAPIの結果を返す。
1. マニフェストファイルの作成
マニフェストファイルとは、プラグインのメタデータを記述するJSONファイルです。ChatGPT側でプラグインの存在を認識するために必要な情報を定義します。ここではai-plugin.jsonという名前で定義します。
マニフェストファイルには、一般情報(名前、説明、アイコン等)に加え、アクション定義を記述します。
アクションとは、ユーザーの質問に対して外部APIにアクセスするための手順です。複数のアクションを定義できます。
ai-plugin.jsonファイルの最小限の定義は以下の通りです。
jsonファイルの定義
2. OpenAPIドキュメントの作成
OpenAPIドキュメントは、外部APIの仕様を記述したファイルです。プラグインがどのエンドポイントにアクセスするかを定義します。
ドキュメントには、APIのURL、メソッド、リクエスト/レスポンス形式などの情報を記述します。この定義に基づき、プラグインからAPIが呼び出されます。
3. プラグインの実装
プラグイン自体はNode.jsで記述されます。マニフェストファイルやOpenAPIドキュメントに定義したとおりに、外部APIを呼び出し、レスポンス結果をChatGPTに返します。
プラグインコード内では、API呼び出しのエラー処理や、レスポンスデータの加工などを実装します。
4. テスト
Developer Portal上でプラグインをテストします。想定した入力に対して、意図した出力が返ってくるかを確認します。
必要に応じて、コードの修正やAPI・マニフェストの見直しを行ないます。
5. ストアへの公開
テストが完了したら、OpenAIの審査をパスすれば、公式ストア上でプラグインを公開できます。
公開が完了すると、ユーザーはChatGPTの公式ストアからプラグインを利用することが可能です。
ChatGPTプラグイン作成時の注意点
ChatGPTでプラグインを開発する際には、OpenAIの利用規約に遵守する必要があります。
主な注意点は以下の通りです。
-
OpenAIのブランドガイドラインを理解する
OpenAIのブランドガイドラインには、使用許可された表現や技術の説明が含まれています。これを遵守することが重要です。
-
誤解を生む表現や技術の避ける
OpenAIのモデルや技術に関して正確でない情報を提供することや、混乱を招く表現を避ける必要があります。 -
プラグイン名やサービス名の慎重な選定
プラグイン名やサービス名は、OpenAIのブランドイメージに影響を与える可能性があるため、慎重に選定する必要があります。
-
OpenAI製品の類似した製品や公式パートナーでないことの明示
ユーザーがOpenAI製品と混同しないように、プラグインやサービスがOpenAIの公式パートナーではないことを明確に示す必要があります。また、OpenAIのモデルで生成されたテキストや画像を公開する場合、明示的な属性の追加は不要です。例えば、OpenAIのモデルで生成した記事を公開する際に、特に「OpenAIのモデルによって書かれた」ということを明示する必要はありません。
-
ブランドガイドラインに適合した表現の使用
OpenAIのブランドガイドラインに適合した表現を使用し、ユーザーが混乱するような表現を避ける必要があります。例えば、「GPT-3」や「GPT-4」、「ChatGPT API」などが適切です。間違ったモデル名やOpenAI以外のブランドを使わないようにしましょう。
-
オリジナルなサービスやプラグインの提供
OpenAIのブランドと同様に、プラグインやサービスもオリジナルであり、他の製品やサービスとの区別がつくようにする必要があります。
上記に違反する場合、プラグインの公開停止だけでなく、OpenAIのアカウントが利用停止になる可能性もあります。
そのため、プラグイン作成時には十分注意する必要があります。
【関連記事】
➡️ChatGPTポリシー違反とは?回避する方法や警告メールについて解説
ChatGPT プラグインコードのサンプル集
ここでは、OpenAIが公開しているプラグインのサンプルコードを紹介していきます!
ChatGPT用のチュータープラグインを作成することで、教育的なプラグインを作成することができます。今回は例として、家庭教師プラグインを作成するための基本的な概要を説明します:
まず、以下のフィールドを持つplugin.jsonファイルを定義します
{
"schema_version": "v1",
"name_for_human": "Tutor",
"name_for_model": "tutor",
"description_for_human": "Get instant tutoring on various subjects.",
"description_for_model": "Get instant tutoring on various subjects. ChatGPT will provide personalized assistance based on your questions.",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "PLUGIN_HOSTNAME/openapi.yaml",
"is_user_authenticated": false
},
"logo_url": "PLUGIN_HOSTNAME/logo.png",
"contact_email": "support@example.com",
"legal_info_url": "https://example.com/legal"
}
次に、このプラグインを動かすためのmock.py を作成しましょう。
import json
import requests
import urllib.parse
import quart
import quart_cors
from quart import request
app = quart_cors.cors(quart.Quart(__name__), allow_origin="https://chat.openai.com")
HOST_URL = "https://example.com"
@app.get("/tutor")
async def get_tutor_response():
query = request.args.get("query")
response_data = {"response": query}
return quart.Response(response=json.dumps(response_data), status=200)
@app.get("/logo.png")
async def plugin_logo():
filename = 'logo.png'
return await quart.send_file(filename, mimetype='image/png')
@app.get("/.well-known/ai-plugin.json")
async def plugin_manifest():
host = request.headers['Host']
with open("ai-plugin.json") as f:
text = f.read()
text = text.replace("PLUGIN_HOSTNAME", f"https://{host}")
return quart.Response(text, mimetype="text/json")
@app.get("/openapi.yaml")
async def openapi_spec():
host = request.headers['Host']
with open("openapi.yaml") as f:
text = f.read()
text = text.replace("PLUGIN_HOSTNAME", f"https://{host}")
return quart.Response(text, mimetype="text/yaml")
def main():
app.run(debug=True, host="0.0.0.0", port=5001)
if __name__ == "__main__":
main()
このファイルは、ChatGPT用のチュータープラグインに関連するリクエストを処理するAPIを作成します。ルート (tutor) を定義し、ユーザーからのクエリ情報に基づいたチュータープラグインへのレスポンスのリクエストを処理します。この例では、get_tutor_response() 内の返答される仕組みは簡単に作成されています。実際のシナリオでは、これをユーザーのクエリに基づいて関連する個別指導のレスポンスを生成する実際のロジックに置き換えます。get_tutor_response()内のロジックは、個別指導の応答を生成するための実際の要件に合わせて調整してください。
さらに、プラグインのロゴ(/logo.png)、AIプラグインのマニフェスト(/.well-known/ai-plugin.json)、OpenAPIの仕様(/openapi.yaml)を提供するルートが含まれています。
ChatGPT プラグイン作成に関するよくある質問
Q.ChatGPTプラグインは無料で使えますか?
ChatGPTプラグインは基本的にChatGPTプラス(有料版)に課金すれば無料で利用できます。ただし、一部のプラグインは有料版もあり、高度な機能やサポートが提供されます。
Q.ChatGPTプラグインは自分で作れますか?
はい、ChatGPTプラグインは自作できます。公式サイトの「Create Plugin」タブから必要事項を入力すれば、簡単に作成することができます。
Q.ChatGPTプラグインはどのように使えますか?
まずプラグインを有効化し、導入、設定します。ChatGPTとの会話中にプラグインの名前や機能を入力すると呼び出せます。例えば、「Instacart」と入力すれば、Instacartプラグインがどのようなものが市場に上がっているのかまとめて教えてくれます。
また、ChatGPTのプラグインが使えない場合の対処法については、こちらの記事で解説しています。
➡️ChatGPTのプラグイン機能が使えない!エラー時の対処法を解説
まとめ
- ChatGPTプラグインは、マニフェスト、OpenAPI、コードから構成される
- 開発後は必ずテストを行ない、問題ないことを確認する
- ユーザー体験を大切に考え、プライバシー保護に配慮することが重要
この記事を参考に、あなたもChatGPTの能力を拡張するプラグインを開発してみませんか。