自作のChat GPTプラグインをlocalhostで動かす
ChatGPTのプラグインをlocalhostで動かしてみた。
ちなみにこの機能はまだ招待された人にしか使えない。
作ったもの。
文中に含まれる人名をイニシャルに変えるプラグイン。
昔作ったGoのツールを応用してる。
Chat GPTを作るのに必要なもの
- ai-plugin.json
- openapi.yaml
- Webサーバー
たったこれだけでプラグインが作れる。
ai-plugin.json
ai-plugin.jsonという名前でプラグインを説明するJsonを作る。
{
"schema_version": "v1",
"name_for_human": "Anony",
"name_for_model": "Anony",
"description_for_human": "文中に含まれる人名をイニシャル化して匿名にするときに使います。",
"description_for_model": "文中に含まれる人名をイニシャル化して匿名にするときに使います。",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "http://localhost:3333/openapi.yaml",
"is_user_authenticated": false
},
"logo_url": "https://avatars.githubusercontent.com/u/4569916?v=4",
"contact_email": "xiidec@gmail.com",
"legal_info_url": "http://www.example.com/legal"
}
重要なのはこの2箇所
"description_for_model": "文中に含まれる人名をイニシャル化して匿名にするときに使います。",
プラグインの説明と使い方を自然言語で書く。
普段のドキュメントはついつい適当に書いてしまいがちだが、ここで書く文章は非常に重要。
Chat GPTはこの文章を読んでプラグインをどのような場面で使うかを判断する。
"url": "http://localhost:3333/openapi.yaml",
そしてここも重要。
OpenAPIのスキーマファイルを配置している場所を書く。
「OpenAPI」と「OpenAI」は似ているので混同しがちだが、関係ない。
Open APIとはこんな感じのもの。
openapi.yaml
Open APIとは、ようするにこんな感じのツール。
こんな感じのyamlファイルを作って置くと、そこから型定義などを勝手に作ってくれたりする。
Chat GPTはこの定義ファイルを読み取ってAPIの叩き方を知る。
openapi: 3.0.1
info:
title: Anony Plugin
description: 文中に含まれる人名をイニシャル化して匿名にするプラグインです。
version: 'v1'
servers:
- url: http://localhost:3333
paths:
/query:
post:
operationId: query
summary: 文中に含まれる人名をイニシャル化して匿名にするときに使います。
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Req'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Res'
components:
schemas:
Req:
type: object
properties:
query:
type: string
description: Text to be initialed with a person's name
required:
- query
Res:
type: object
properties:
answer:
type: string
description: Sentences initialed with the person's name
required:
- answer
Webサーバー
Webサーバーには以下の機能が求められる。
-
/.well-known/ai-plugin.json
- ファイルの置き場所はこの場所でなくてはならない。
-
openapi.yaml
- これがどこにあるかはai-plugin.jsonで指定する。openapi.yamlでもopenapi.jsonでもいい。
- Chat GPTに利用してもらいたいAPI
- 利用してもらいたいAPIを用意する。ai-plugin.jsonを配信するドメインと同じである必要がある。Chat GPTはai-plugin.jsonとopenapi.yamlの情報だけを手がかりにしてAPIを叩いてくれる。適切な形で利用してくれるかどうかは説明文とプロンプトと運にかかっている。
Web APIで提供した機能の中身
人名のイニシャル化については昔作ったやつを流用した。
Chat GPTでの読み込み
プラグイン機能のWaitlistから招待されたら、チャットの開始時に右側にプラグイン選択のUIが追加される。
選択肢の一番下のPlugin Storeをクリックする。
するとプラグインをインストールするUIが表示されるので、一番下の真ん中の「
Develop your own plugin」をクリックする。
URL指定画面が出てくるので、ドメインを入れる。
localhost:3333でサーバーを起動しているのであれば、localhost:3333を指定する。
もしlocalhost:3333
を指定したのなら、localhost:3333/.well-known/ai-plugin.json
にai-plugin.jsonが無くてはならない。他の場所はNG。
ここまでやるとプラグインの一覧に自分が作ったプラグインが表示されるようになるので、クリックして有効にする。
有効にしたプラグインはアイコンが点灯するようになる。
使ってみる
プラグインを有効にした状態でChat GPTと会話すると、プラグインを使ってくれるようになる。
使ってくれない場合は、説明文をもっと分かりやすくする必要がある。
おわり。