見出し画像

GPTsでGoogleのAPIを使う方法。2つのAPIを設定する。

GPTsのAPI呼び出しで非常に便利なGPTsを作成することが可能。
特に2つ以上のAPIを使う場合は、プログラムと比べても非常に汎用性の高いものを作成することが可能です。
GoogleのPlaceAPIを使った例についてす。
プログラムでPlaceAPIを使う場合は初めにキーワード検索でなどでいくつかの候補を抽出して、PlaceIDを知る必要があります。その後、PlaceIDを元に店舗の詳細情報から住所や口コミ、評価などを探すという処理になります。
イメージは下記の感じです。

Google検索

これをGPTsで作るとどうなるかというと。

「渋谷のカフェの口コミで一番評価の高い店と口コミを2つ教えて」というと以下の回答を返してくれます。

ChatGPTはJSONを理解することができるので、このAPIをレスポンスを整理して答えることができるという訳です。1つのパターンの回答を作成するだけならプログラムでもいいですが、いろんな組み合わせで出力するのをプログラムでやろうと思ったら相当大変だと思います。

2つのGoogleAPIの設定方法

APIの設定はActionで行います。

ここに2つAPIを設定しようと思ったら、同じドメインのAPIを2つ書くことができなかったので、1つにまとめました。Actionを開いて下記をコピーしてもらえば動作します。
<PlaceAPIはGoogleでKeyを取得する必要があります>

openapi: 3.1.0
info:
  title: Google Places API
  description: Google Places APIを通じて場所のテキスト検索と詳細情報を取得するサービスです。
  version: "1.0.0"
servers:
  - url: 'https://maps.googleapis.com/maps/api/place'
paths:
  /details/json:
    get:
      operationId: getPlaceDetails
      summary: 特定の場所の詳細情報を取得
      description: 与えられたplace_idに基づいて場所の詳細情報を取得します。
      parameters:
        - name: place_id
          in: query
          description: 取得したい場所のGoogle Place ID。
          required: true
          schema:
            type: string
        - name: key
          in: query
          description:  キーをここに書く
          required: true
          schema:
            type: string
        - name: language
          in: query
          description: 結果を返す言語。
          required: false
          schema:
            type: string
            default: 'ja'
      responses:
        '200':
          description: 正常にレスポンスが返された場合
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaceDetailsResponse'
  /textsearch/json:
    get:
      operationId: performTextSearch
      summary: テキストに基づいた場所の検索を行う
      description: 与えられたクエリテキストに基づいて場所を検索します。
      parameters:
        - name: query
          in: query
          description: 検索するテキストクエリ。
          required: true
          schema:
            type: string
        - name: key
          in: query
          description: キーをここに書く
          required: true
          schema:
            type: string
        - name: language
          in: query
          description: 結果を表示する言語。
          required: false
          schema:
            type: string
            default: 'ja'
      responses:
        '200':
          description: 正常にレスポンスが返された場合
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextSearchResponse'
components:
  schemas:
    PlaceDetailsResponse:
      type: object
      properties:
        status:
          type: string
          description: APIのリクエストステータス。
        result:
          $ref: '#/components/schemas/PlaceDetails'
    TextSearchResponse:
      type: object
      properties:
        status:
          type: string
          description: APIのリクエストステータス。
        results:
          type: array
          description: 検索結果の配列。
          items:
            $ref: '#/components/schemas/Place'
    PlaceDetails:
      type: object
      properties:
        name:
          type: string
          description: 場所の名前。
        formatted_address:
          type: string
          description: 場所の正式な住所。
        geometry:
          $ref: '#/components/schemas/Geometry'
    Place:
      type: object
      properties:
        name:
          type: string
          description: 場所の名前。
        place_id:
          type: string
          description: 場所の一意のID。
        formatted_address:
          type: string
          description: 場所のフォーマットされた住所。
    Geometry:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/Location'
    Location:
      type:

Instractionには
performTextSearchに$場所を設定して実行。
ぐらい書くだけで準備完了です。


この記事が気に入ったらサポートをしてみませんか?