GoogleスプレッドシートとGASを活用した質問応答システムの構築

    目次

    システムの構築の手順

    実装に移る前に、必要なツールと前提条件を確認しましょう。本記事で紹介するシステムを実装するには、GoogleスプレッドシートとGoogle Apps Script(GAS)の基本的な操作が理解できている必要があります。また、スプレッドシートには、ジャンル、質問(または質問を識別するID)、回答が含まれていることが前提となります。

    1. スプレッドシートの準備とApps Scriptの起動

    まず最初に、質問と回答、それらのジャンルを記録するスプレッドシートを準備します。このスプレッドシートは、質問への回答を管理するデータベースの役割を果たします。

    スプレッドシートの例:

    • Column A: ID(質問の一意識別子)
    • Column B: ジャンル(質問のカテゴリー)
    • Column C: 質問
    • Column D: 回答

    スプレッドシートを用意したら、次にGoogle Apps Scriptを起動します。スプレッドシートの画面上部にある「拡張機能」メニューから「Apps Script」を選択し、新しいスクリプトプロジェクトを作成します。

    2. カテゴリー取得用スクリプトの設定

    スプレッドシートからカテゴリー一覧を取得するためのスクリプト(get category.gs)を設定します。このスクリプトは、スプレッドシートのデータを読み込み、重複なくカテゴリーの一覧を作成し、JSON形式で外部に提供します。

    function doGet() {
      var spreadsheetId = "YOUR_SPREADSHEET_ID"; // スプレッドシートのIDを設定
      var sheetName = "YOUR_SHEET_NAME"; // シート名を設定
      var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
      var data = sheet.getDataRange().getValues();
    
      var categories = new Set();
      data.forEach(function(row) {
        categories.add(row[1]); // 2列目がカテゴリーを表すと仮定
      });
    
      return ContentService.createTextOutput(JSON.stringify({ "categories": Array.from(categories) }))
        .setMimeType(ContentService.MimeType.JSON);
    }
    

    3. 回答取得用スクリプトの設定

    特定のジャンルに対する回答を検索するためのスクリプト(search from ID.gs)を作成します。このスクリプトは、入力されたIDまたはジャンルに基づき、スプレッドシートから適切な回答を検索し、JSON形式で返します。

    function doGet(e) {
      var searchId = e.parameter.id;
      var spreadsheetId = "YOUR_SPREADSHEET_ID"; // スプレッドシートのIDを設定
      var sheetName = "YOUR_SHEET_NAME"; // シート名を設定
      var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
      var data = sheet.getDataRange().getValues();
    
      var searchResult = null;
      data.forEach(function(row) {
        if (row[0].toString() === searchId) { // 1列目がIDを表すと仮定
          searchResult = row[3]; // 4列目が回答を表す
        }
      });
    
      if (searchResult !== null) {
        return ContentService.createTextOutput(JSON.stringify({ "content": searchResult }))
          .setMimeType(ContentService.MimeType.JSON);
      } else {
        return ContentService.createTextOutput(JSON.stringify({ "error": "No matching ID found." }))
          .setMimeType(ContentService.MimeType.JSON);
      }
    }
    

    4. スクリプトのデプロイメント

    作成したスクリプトを保存し、デプロイメントの手順に従ってWebアプリケーションとして公開します。公開することで、作成したAPIを外部からアクセス可能にし、GPTsとの連携を可能にします。

    右上のデプロイ→新しいデプロイを選択し、
    1.左上の歯車マークからwebアプリを選択
    2.アクセスできるユーザーを全員に変更
    3.デプロイを押してアクセスを承認

    5. GPTsの設定

    Google Apps Scriptで作成したAPIのURLを使用して、GPTsにジャンルと回答の取得機能を設定します。この設定により、GPTsはスプレッドシートに格納されたデータに基づいて、質問に適切な回答を自動的に選択し、返答できるようになります。

    このGPTの名前は「質問対応君」です。このGPTは、まず、使用者からの質問に対して、Actionsに登録されているスプレッドシートからカテゴリー一覧を取得します。次に、そのカテゴリー一覧と質問の内容を比較し、質問に当てはまるカテゴリーをAPIに送信します。その後、APIから返ってきたデータにIDとcontentのセットが複数ある場合は、contentの内容と質問を比較して、適しているものだけを回答としてユーザーに提供します。一つだけの場合はそのままcontentの内容をユーザーに答えます。

    Actionsの設定と動作テスト

    GPTsとGoogle Apps Scriptを組み合わせて質問に自動で回答するシステムを構築する際、重要なステップの一つがActionsの設定です。このセクションでは、Actionsを設定し、システムの動作テストを行う方法について説明します。

    Actionsの設定

    Actionsは、GPTsが質問に対して適切なジャンルを選択し、そのジャンルに基づいて最適な回答を検索するためのルールを定義します。ここでは、OpenAPI仕様を用いてActionsを設定する方法を示します。

    1. Get Categories Actionの設定: 最初に、カテゴリーを取得するためのActionを設定します。このActionは、Google Apps Scriptで作成したカテゴリー取得用のエンドポイント(WebアプリケーションのURL)を指定します。
    paths:
      /macros/s/{YOUR_SCRIPT_ID}/exec:
        get:
          summary: Get Categories
          operationId: getCategories
          responses:
            '200':
              description: Categories retrieved successfully
    

    Search Answers by Category Actionの設定: 次に、特定のジャンルに基づいて回答を検索するActionを設定します。このActionも、Google Apps Scriptで作成した回答検索用のエンドポイントを指定します。

    paths:
      /macros/s/{YOUR_SCRIPT_ID}/exec:
        get:
          summary: Search Answers by Category
          operationId: searchAnswersByCategory
          parameters:
            - in: query
              name: category
              required: true
              schema:
                type: string
          responses:
            '200':
              description: Answers for the specified category retrieved successfully
    

    動作テスト

    Actionsの設定が完了したら、実際にGPTsが質問に対して適切な回答を提供できるかどうかをテストします。動作テストは、以下のステップで行います。

    1. カテゴリー取得のテスト: 最初に、カテゴリー取得用のエンドポイントが正しく機能しているかを確認します。ブラウザからカテゴリー取得用のURLにアクセスし、カテゴリーの一覧がJSON形式で表示されることを確認します。
    2. 回答検索のテスト: 次に、回答検索用のエンドポイントをテストします。ブラウザから特定のジャンルを指定して回答検索用のURLにアクセスし、期待する回答がJSON形式で返されることを確認します。
    3. GPTsによる全体の動作テスト: 最後に、GPTsがユーザーからの質問に対して適切なジャンルを選択し、そのジャンルに基づいて回答を検索し、ユーザーに提供する全体の流れが正しく機能しているかをテストします。

    この動作テストを通じて、GPTsとGoogle Apps Scriptが正しく連携して動作していることを確認できます。問題が発生した場合は、設定の見直しやデバッグを行い、問題を解決します。

    GoogleスプレッドシートとGoogle Apps Scriptを使用して、質問に対してジャンル別に自動回答するGPTsの設計と実装について詳細に解説しました。このプロセスを通じて、質問の内容に応じて適切なジャンルを選択し、そのジャンルに基づいて最適な回答を選び出す仕組みを構築することができます。このアプローチは、回答の精度を向上させると同時に、扱える情報量を増やすことを目的としています。

    実装の重要ポイント

    • スプレッドシートの活用: スプレッドシートは、質問と回答、ジャンルを管理するデータベースとして機能します。この柔軟性が、GPTsの応用範囲を広げます。
    • Google Apps Scriptのカスタマイズ: GASを用いることで、スプレッドシート上のデータに基づいたAPIを簡単に作成でき、GPTsとの連携が可能になります。
    • Actionsの設定: GPTsにおけるActionsの設定は、システムの挙動を定義し、ユーザーの質問に対する回答のプロセスを自動化します。

    応用可能性

    この仕組みは、顧客サポート、FAQシステム、教育ツールなど、様々な分野で応用することが可能です。さらに、スプレッドシートに登録するデータを変更することで、特定の業界や分野に特化した質問応答システムを容易に作成できます。また、システムの精度と効率を高めるために、質問とジャンルのマッチングアルゴリズムを改善することも重要です。

    今後の展望

    今後は、AIと機械学習技術の進化を活かして、質問への理解とジャンル分類の精度をさらに高めることが期待されます。また、ユーザーからのフィードバックをシステムに組み込むことで、自動学習と改善が進む自己進化型の質問応答システムの開発も見込まれます。

    よかったらシェアしてね!
    • URLをコピーしました!
    目次