Open10

自作のChat GPTプラグインをlocalhostで動かす

kurehajimekurehajime

ChatGPTのプラグインをlocalhostで動かしてみた。
ちなみにこの機能はまだ招待された人にしか使えない。

kurehajimekurehajime

Chat GPTを作るのに必要なもの

  • ai-plugin.json
  • openapi.yaml
  • Webサーバー

たったこれだけでプラグインが作れる。

kurehajimekurehajime

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とはこんな感じのもの。

kurehajimekurehajime

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
kurehajimekurehajime

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を叩いてくれる。適切な形で利用してくれるかどうかは説明文とプロンプトと運にかかっている。
kurehajimekurehajime

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。

ここまでやるとプラグインの一覧に自分が作ったプラグインが表示されるようになるので、クリックして有効にする。

有効にしたプラグインはアイコンが点灯するようになる。

kurehajimekurehajime

使ってみる

プラグインを有効にした状態でChat GPTと会話すると、プラグインを使ってくれるようになる。
使ってくれない場合は、説明文をもっと分かりやすくする必要がある。