68
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「ねこGPT」GPTsのActionsを理解して、外部APIをコールする

Last updated at Posted at 2023-11-11

GPTsのActionsを使って、カスタムアクションを定義して、外部APIをコールできるようになるまでのハウツーです。

公式のActionsのドキュメントを読んでもいまいちピンと来なかったので、CAAS(Cats as a Service)こと、The Cat APIからねこ画像を取得してアンサーしてくれるGPTsを実装してみました。完成したサンプルはこちらから。

スクリーンショット 2023-11-11 21.57.03.png

The Cat API

まずはThe Cat APIの利用方法です。サンプルでは、以下のエンドポイントをGPTsからコールしてねこ画像を取得します。

ランダムでねこ画像を取得する

https://api.thecatapi.com/v1/images/search?breed_ids=beng
breed_idsで品種、猫種?を指定できます。bengはベンガルネコです。

猫種の一覧を取得する

https://api.thecatapi.com/v1/breeds
Abyssinian - abys
Aegean - aege
American Bobtail - abob .... など

GPTs

左側のメニューバーから「Explore」->「Create a GPT」をクリックして、GPTSの編集画面に入ります。

「ねこ画像を表示するねこねこGPTを作成します。」とします。ここは何でも構いません。入力内容に合わせて基本設定と、プロフィール画像のアイコンを生成してもらいます。

スクリーンショット 2023-11-11 22.06.09.png

「Configure」に切り替えて、手動で設定していきます。既に多くの部分が、自動的に入力されているはずです。

スクリーンショット 2023-11-11 22.06.37.png

さて、いくつかの変更を行います。Instructionsには、期待する動作内容を記述します。ここでは、説明のため極力シンプルに以下のようにします。

ねこGPTはユーザーが「ねこ画像を見せて」とリクエストした際に、api.thecatapi.comを使用して「/v1/images/search」エンドポイントからランダムなねこ画像を取得して提供します。

ここでは、APIから取得したデータだけを利用したいので、Web BrowsingDALL·E Image GenerationCode Interpreterはオフにしておきます。

スクリーンショット 2023-11-11 22.11.26.png

Actionsから「Add Actions」をクリック。

右上の「Example」から「Get wether data」をクリック。これ自体はダミーのAPIであり動作しませんが、記述方法は参考になります。

それではCat APIからデータを取得するために、Schemaを以下に置き換えてください。

{
  "openapi": "3.1.0",
  "info": {
    "title": "Get cat images",
    "description": "Retrieves cat images.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api.thecatapi.com"
    }
  ],
  "paths": {
    "/v1/images/search": {
      "get": {
        "description": "Get ther url of random cat image.",
        "operationId": "GetRandomCat",
        "parameters": [
          {
            "name": "breed_ids",
            "in": "query",
            "description": "Used to filter cat based on their bleed. For example, ?breed_ids=beng will return bengal cat.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {}
  }
}

descriptionの内容にしたがって(=ここでは、ねこ画像が必要な場合)、AIは外部のAPIhttps://api.thecatapi.com/v1/images/searchを呼び出します。

また、the cat apiは以下のように猫種の指定をすることもできました。https://api.thecatapi.com/v1/images/search?breed_ids=beng
ここではbreed_idsをparametersとして設定しています。requiredがfalseになっているので、このパラメーターは必須ではなく、AIがAPIのリクエストにパラメーターを付加するかどうかを判断します。つまり、ユーザーが特定の猫種について知りたい(とAIが判断した)場合、AIはbreed_idsを指定してAPIリクエストを行います。

それでは、最後にPrivacy Policyには以下のURLを記述します。

https://thecatapi.com/terms

スクリーンショット 2023-11-11 22.12.56.png

以上で、設定は完了です。

ねこの画像を見せて!

画面右側のプレビューから「ベンガルネコの画像をみせて!」とお願いしてみましょう。

「このサイトを信頼しますか?(Some info will be sent to api.thecatapi.com, only do this for sites you trust)」と聞かれるので、「Allow」をクリックして許諾

スクリーンショット 2023-11-11 22.16.51.png

ベンガルネコの画像、表示されたでしょうか?

Talked to api.thecatapi.comという文字をクリックすると、bengというパラメーターがAIにより設定されて、データ取得が行われたことがわかります。

ここでは設定していませんが、breed_idsはエンドポイント https://api.thecatapi.com/v1/breedsから取得できます。schemaを変更して、こちらもAIから呼び出しできるようにしてあげると、AIにとってできることが広がっていきます。

それでは、楽しいねこライフをお送りくださいね!

スクリーンショット 2023-11-11 22.49.01.png

68
48
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?