APIと連携するGPTsの作り方とは?郵便番号から住所を取得する

生成AI
このチュートリアルでは、GPTをカスタマイズして日本の郵便番号を提供すると、ZipCloud APIを使用して対応する住所情報を返すように設計する方法を説明します。 このGPTカスタムは、ユーザーが日本の郵便番号を提供するだけで、正確な住所情報を取得できるように設計されています。

1. ZipCloud APIの確認

郵便番号検索APIとして、ZipCloud APIを使用します。 https://zipcloud.ibsnet.co.jp/doc/api このAPIはAPIキーが不要であり、無料で利用可能です。ただし、利用にあたっては利用規約を遵守する必要があります。

2. GPTのプロンプト設計

プロンプトは、GPTに対する指示を定義するための重要な部分です。以下の例を参考にしてください。
Role and Goal: This GPTは、ユーザーが日本の郵便番号を提供すると、ZipCloud APIを使用して対応する住所情報を返すように設計されています。郵便番号はハイフンなしで入力することを推奨します。 Constraints: このGPTは、日本の郵便番号と住所情報にのみ焦点を当て、関連しないトピックや個人的なアドバイスを避けます。住所情報はZipCloud APIからのレスポンスを使用して提供されます。 Guidelines: 郵便番号が提供された場合、GPTは最も正確で最新の住所情報を提供しようとします。レスポンスは「100-0001は、東京都千代田区の郵便番号です。」のようにフォーマットされます。郵便番号はハイフンなしでの入力を推奨します。 Clarification: 提供された郵便番号が不完全またはあいまいな場合、GPTは明確化を求めます。 Personalization: GPTは、郵便番号に基づいて住所情報を効率的かつ正確に提供するために、プロフェッショナルなトーンを保ちます。ZipCloud APIからのデータを特に使用します。

3. API仕様書を登録

少し長めですが、このAPI仕様書をGPTsに登録します。 定義された仕様に基づき、GPTはAPIにリクエストを送信し、受け取ったレスポンスをチャットとしてユーザーに返します。 ChatGPTを活用すれば、この仕様書も迅速に作れます。

{
  "openapi": "3.1.0",
  "info": {
    "title": "Zipcode Search API",
    "description": "API for searching address information by zipcode",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://zipcloud.ibsnet.co.jp"
    }
  ],
  "paths": {
    "/api/search": {
      "get": {
        "summary": "Search address by zipcode",
        "operationId": "searchByZipcode",
        "parameters": [
          {
            "name": "zipcode",
            "in": "query",
            "description": "Zipcode to search for",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{7}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved address information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid Zipcode Format"
          },
          "404": {
            "description": "Not Found - Zipcode not found"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddressResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Success"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressItem"
            }
          },
          "status": {
            "type": "integer",
            "example": 200
          }
        }
      },
      "AddressItem": {
        "type": "object",
        "properties": {
          "address1": {
            "type": "string",
            "example": "Niigata"
          },
          "address2": {
            "type": "string",
            "example": "Nagaoka"
          },
          "address3": {
            "type": "string",
            "example": "Oshikiri"
          },
          "kana1": {
            "type": "string",
            "example": "ニイガタ"
          },
          "kana2": {
            "type": "string",
            "example": "ナガオカ"
          },
          "kana3": {
            "type": "string",
            "example": "オシキリ"
          },
          "prefcode": {
            "type": "string",
            "example": "15"
          },
          "zipcode": {
            "type": "string",
            "example": "9402031"
          }
        }
      }
    }
  }
}

4. 動作テスト

次のように、郵便番号を入力すると、住所を返答してくれるGPTsが完成しました。 郵便番号取得GPT API連携が可能なGPTsを開発することで、ChatGPTは単に決まった回答をするのではなく、APIからの最新情報を基にした適切な回答を提供することができます。 このアプローチが参考になれば幸いです。

ChatGPTと外部サービス連携でお困りではありませんか?

本記事で紹介したようなChatGPTと外部サービスとのAPI連携で、導入方法がわからない、不安がある、などお困りでしたら、当サイトPLAIN ASSISTがサポートいたします。 課題をお伺いして、解決方法の提示や実装について、お見積りいたします。 ご相談は無料です。お気軽にお問い合わせください。