見出し画像

GPTs:Actionsを使った業務改善#05

はじめに

こんにちは、今回は、ChatGPTのActionsを設定する方法について説明します。Actionsで連携するAPIの仕様は、売上予算と実績の差異表を取得するものです。この連携により、売上レポーティングの効率化の検証をしてみました。やはり、APIの応答を自然言語処理を介してレポート化することで、レポーティングの一部を自動生成することが可能になると期待が持てました。今回は少し長い記事ですが、皆さんのGPTs開発にお役立てれば幸いです。


今回の完成形

まずは、完成したGPTsの動作を説明します。例えば、「商品別の売上を知りたい」とGPTに依頼すると、GASのAPIが呼び出され、以下のような回答を行います。

デバッグ画面より

Actionsの設定ですごいのが、Chatに入力した内容をGPTが判断し、APIのパラメータに値を設定することです。回答内容は、プロンプトの調整が必要ですが、ChatとAPIを組み合わせた業務の自動化、効率化の実現が期待できます。また今回の例のように、表形式の予算実績のデータを、テキスト変換し、予算の達成度や予算超過の原因などを端的に文書化する機能は、レポート作成の効率化にもつながります。

今回のフロー

今回使用したデータは、スプレッドシートに格納されており、GASのAPIは、リクエストパラメータに応じて、異なるシートの内容を回答するように設計されています。スプレッドシートの更新により、最新の情報をGPTsを通じて提供されるモデルケースです。

Actionsの設定

外部APIの呼出しには、GPTsの一般的な設定のほかに、Actionsを設定が必要で、重要なのは以下の設定です。部分記載となりましたので、巻末に全体を掲載します。

URLとpathsの設定(外部APIのアドレス)

parametersの設定(外部APIに送る値)

今回は、intentName、modeがパラメータです。

componentsセクション(項目定義を宣言)

今回は、SalesData、ChatUrl、Data、Textの4項目を、Gasresponseとして宣言をしています。

components:は共通定義で、他の設定から`$ref:`で参照可能です。

responsesセクション(外部APIからの回答値)

componentsの設定を参照することが理解できると、可読性も高まります。

GASの設定

GASのリクエストの受け方とレスポンスの返し方は、Actionsで設定した項目名と一致させることが重要です。以下に例を記載します。

doGetで、リクエストを取得する例

e.parameter.xxxでパラメータ値にアクセス(xxxは,-nameの設定と同値)

Responseデータの作成例

まとめ

今回は、ChatGPTのActionsを利用して外部APIを組み込む方法を経験しました。データ分析業務に自然言語処理を活用することは、要求と応答のプロセスを簡略化し、ビジネスにおける意思決定をよりデータ駆動型にする手段として有用であると実感した。昨年末のDialogflowを使用した実装とは異なり、GPTsを活用することでインテントの設定が容易になるなど、GPTsの持つ可能性は非常に大きいと感じています。まだ理解が及ばずブラックボックスなプロセスが多いので、引き続きOPENAPIの理解に進んでいこうと思います。最後までお読みいただき、ありがとうございます。

GPTsの設定(Schema、Instructions、全体)

Schema

以下は、売上情報を取得するためのGoogle Apps Script APIのスキーマです。このAPIは、売上確認または掲載情報の確認といった文脈に基づいて、異なるデータを取得できるように設計されています。

openapi: 3.1.0
info:
  title: Get sales data
  description: Get Salesdata and chat by mode
  version: v1.0.0
servers:
  - url: https://script.google.com
paths:
  /macros/s/XXXXXXXXX/exec:
    get:
      description: 売上情報の取得
      operationId: GetSales
      parameters:
        - name: intentName
          in: query
          description: 文脈(売上確認 or 掲載情報の確認)
          required: true
          schema:
            type: string
        - name: mode
          in: query
          description: 売上確認時の条件(エリア別、サービス別)
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        "200":
          description: リクエスト成功
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Gasresponse"
components:
  schemas:
    Gasresponse:
      type: object
      properties:
        SalesData:
          type: string
        ChatUrl:
          type: string
        Date:
          type: string
        Text:
          type: string

Instructions

Instructionsでは、予算と実績の差異分析に関する指示、収録情報の更新日に関する指示、および、Chatの入力フレーズとActions実行パラメータの関連を記載しています。

予算と実績の差異について、以下の通り分析する。
{
    分析結果は、コンサルタントのフレーズで、解説する。
    Actionsの結果{SalesData}を使用し、差異の原因を分析し回答する。さらに、データは表形式で表示。
    Actionsの結果{ChatUrl}を使用して、画像を表示。
},
{
    収録情報の更新日について、以下の通り分析する。
    *Actionsの結果{Date}を使用して、収録情報の更新日を説明する。日本時間です。
},
{
    Chat入力フレーズと、Actions実行パラメータは、以下の関係がある。
    *エリア別の売上が知りたい:{intentName:"Order",mode : '部門別'}
    *商品別の売上が知りたい:{intentName:"Order",mode : '商品別'}
    *収録情報の更新日を知りたい:{intentName:"Info"}
}

全体

GPTsの設定

Actionsの設定

GASのコード

今回呼び出したAPIとスプレットシートになります。


この記事が参加している募集

GPTsつくってみた

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