見出し画像

GPTs版「人生スナックみちこ」接待にオススメの料理屋も紹介!

去年リリースした「人生スナックみちこ」をGPTsで作成してみました!
また、GPTsのActionsを利用して、ママがオススメする接待にイチオシな料理屋も紹介してくれるように実装してます。
リリースから時間が経っていることもあり、プロンプトの技術が向上していたりもするので、前回以上に「スナックのママ」らしさが出せているのでは無いでしょうか?

みちこオススメの料理屋紹介

人生スナックみちこについては以下の記事で紹介しています。↓

今回GPTs Actionsの連携先としてSupabaseを利用しました。Supabaseを利用した理由ですが、テーブルを作成するだけでAPIが自動生成され、データの取得、追加、更新、削除が容易だからです。
今回は単純に料理屋情報を全件取得し、GPTに適切な料理屋を提案させていますが、実装によっては場所やジャンルを聞いた上でAPIのパラメータを設定し検索させるというようなことも可能です。

GPTsのActionsについてわからないことがあればOpenAIが作成したActionsGPTがあるので、そこで確認出来ます。特にOpenAPI(OpenAIと混同しそうですねw)の仕様を知っていないと実装が難しいのですが、ActionsGPTに聞けばだいたい分かるはずです。

多分多くの人がAuthenticationの部分で引っかかると思いますので、少し説明しようかなと思います。
GPTs ActionsとSupabaseの基本的な連携については以下の記事を参考にしてください。

上記の記事ではAuthenticationの部分の詳細があまりされていません。記事内でもActionsGPTでcurlを貼り付けてOpenAPIを取得していますが、以下のようにsecurityとsecuritySchemesの部分が生成されると思います。(GPTが生成しているので、人によっては違う結果を得ているかもしれないです。)

OpenAPIの例

このまま利用したらエラーが出てしまうので戸惑う方も多いのではないかと思います。そもそもこの部分の記述は必要が無いので削除しても問題ありません。というのもAuthenticationの設定を使うため、自動でヘッダーに埋め込んでくれているようです。むしろ使わないとAPIKeyが漏れるので、Authenticationの設定をしっかりしておけば大丈夫です!

Authentication
Authentication設定画面

今回利用したOpenAPIのSchemaは以下です。私はデータの取得のみが必要だったので、get用のSchemaになります。
componentsのpropertiesは自身のテーブルのカラムを元に修正すれば利用できるかと思います。urlの部分は伏せてますので、自身のAPIのエンドポイントに設定し直してください。

openapi: 3.0.0
info:
  title: Supabase Restaurants API
  description: This API is used to retrieve information about restaurants from a Supabase database.
  version: 1.0.0
servers:
  - url: https://***************pkrrurntwfd.supabase.co/rest/v1
    description: Supabase API server
paths:
  /restaurants:
    get:
      operationId: getRestaurants
      summary: Retrieves a list of restaurants.
      description: Fetches all records from the restaurants table.
      parameters:
        - name: select
          in: query
          description: Selects which columns to return.
          required: true
          schema:
            type: string
            default: "*"
      responses:
        "200":
          description: A JSON array of restaurants
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Restaurant"
components:
  schemas:
    Restaurant:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the restaurant.
        created_at:
          type: string
          description: Created datetime for the record.
        location:
          type: string
          description: Location or address of the restaurant.
        name:
          type: string
          description: Name of the restaurant.
        comment:
          type: string
          description: A comment for the restaurant.
        link:
          type: string
          description: URL of the restaurant info.
        cuisine:
          type: string
          description: Type of cuisine the restaurant serves.

余談ですが、「Knowledge」にテーブルと同等のCSVをアップロードして試したところ、同じような結果が得られました。OpenAPIの設定のハードルが高いなぁと感じる方はこちらの方法でも実装は可能かもしれません。ただし、データの更新があるたびCSVの更新とGPTsの更新が必要になるのでデータの内容に変化が少ない(例えば会社紹介など)であれば有効ですね。GPTsの内容によって使い分けると良いと思います。

Knowledgeに料理屋リスト.csvをUpload

「人生スナック - みちこママ」は以下から試すことが出来ます。気になった方はママと会話してみてくださいー。



本記事の著者

W&Dコンサルティング合同会社
代表者:代表CEO 西本亮一、代表COO 犬飼泰一
設立:2021年4月
事業内容: ITコンサルティング事業、コンテンツ企画制作事業

企業理念
Well Think and Design
よく考え、よいアイデアをカタチにする

Mission
私たちは、アイデア力とデザイン力で、ヒトとヒトが笑顔でつながる社会づくりに貢献します。

Vision
お客さまの抱える問題の本質を捉え、普遍的な価値を追求することで、デジタル活用をとおして、企業の能力を発揮できる仕組みをデザインします。

Value
お客さまも社員も関わる人たちが、共にワクワク・ドキドキできる取り組みをします。

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