🕌

ChatGPTを用いた業務自動化に挑戦

2024/05/08に公開

はじめに

弊社のサービス、マイベストでは様々な商品やサービスの情報を比較でき、ユーザーが自分にあったものを選択できる仕組みを構築しています。
そのサービスの元となるデータベースは、次のどちらかの方法で商品情報が追加されていきます。

  • 自社で商品を購入し、検証・測定して情報を取得
  • メーカー公式サイト等からの商品情報のリサーチ

前者の自社で検証・測定するという方法は、マイベストならではのオペレーションで非常に面白いです。しかし、今回は後者のWebサイトからの商品情報のリサーチに着目し、ChatGPTを用いた業務改善に取り組んだというお話になります。

リサーチ業務改善のモチベーション

先述の通り、マイベストで扱っている商品情報の一部は、Web上からのリサーチによって取得しています。このリサーチ業務は、外注スタッフが担っており、情報の質を担保するため1商品に対して調査係1人・ファクトチェック係2人の計3人体制で行われています。

マイベストでは様々な商品を扱っており、データベースに新たに追加される商品は月間約1万7000商品と多いため、それらの商品情報のリサーチには大きなコストがかかっています。
そこで、ChatGPT等のAIを用いて、リサーチ業務の一部を自動化したいというモチベーションが生まれました。

さらに、将来的には、より幅広い商品を網羅的にリサーチできるようになったり、情報の更新頻度を上げてユーザーにより新しい情報を届けられるようになったりするかもしれません。

要件定義

リサーチ業務の改善を行うため、どのようなことを実現したいか、どんな機能が必要かなどを定めることにしました。

やりたいこと

リサーチ業務の一部をChatGPTを用いて自動で行えるようにする。

機能要件

  • URLを指定すると、そのサイトからリサーチ対象の商品情報を抽出できること
  • 抽出した商品情報を、データベースに格納可能な形に整形できること

非機能要件

  • 人がやる場合と同等かそれ以上の精度でリサーチ業務を行える
    (人間がリサーチを行った場合の誤情報率は約10%程度)

システム設計

システムの有用性を確かめるため、今回は仮実装として、スプレッドシート上で操作し、出力結果もスプレッドシート上で確認できるよう構成しました。

前準備

使用するスプレッドシートには事前に、商品の基本情報と、調査対象となる商品情報のマスタをエクスポートしておきました。

商品の基本情報には、次が含まれます。

  • メーカー名
  • 商品名
  • 型番
  • 参照したいURL

また、商品情報のマスタは、マイベストでは次のように用意されており、これをスプレッドシートにエクスポートしました。

動作と構成

次のような流れで動作します。

  1. スプレッドシート上の実行ボタンを押してGASのトリガを発火
  2. 商品の基本情報・マスタ情報・参照したいURLとともにリサーチ実行のリクエストをGCFに送信
  3. Scraper APIへ指定されたURLのスクレイピングを要求
  4. 指定されたURLのページからテキスト情報を抽出
  5. 商品情報を抽出するプロンプトを送信(商品の基本情報、マスタ情報、ページから得たテキストを含む)
  6. OpenAI APIから回答を取得し、商品情報を抽出
  7. 抽出した商品情報をデータベースに適した型に変換してスプレッドシートに出力

今回構築したリサーチシステムの構成の概略図を示しました。

動作の様子

実装したシステムの操作はすべてスプレッドシート上で行います。
商品の基本情報(メーカー名・商品名・型番・参照したいURL)を含むスプレッドシートの実行ボタンをクリックすると、商品情報のリサーチの実行が開始されます。(画像は、包丁研ぎ器の例)

実行が終了すると、実行に関するステータスがスプレッドシートに反映されます。

上と同時に結果出力用の別シートに、リサーチ結果が表示されます。

指定したURLのサイトから読み取れなかった情報は空白として出力されます。

自動リサーチの精度

今回実装したシステムを使って、いくつかのカテゴリの商品に対してリサーチ作業を行ってみました。
リサーチシステムの出力と、正しい商品情報を比較するための次のようなシートを作成し、出力結果の誤情報率の計算を行いました。(画像は、イヤホンの例)

自動リサーチによって得られた商品情報は、商品のカテゴリによって差があるものの、誤情報率は10~20%となりました。
人間がリサーチを行った場合の誤情報率が10%程度であることを考えると、商品のカテゴリによっては、リサーチ業務の一部を自動化することも可能といえます。

なぜ誤情報が発生するのか

リサーチシステムが出力した情報が間違えているケースを分析し、なぜ間違えているのかの原因を次の3つに分類しました。

情報ソースの問題

  • 参照したサイトに欲しい情報があるとは限らない
  • 情報が画像や動画で提供されていて、テキストで抽出できていない

考えられる対策

  • 欲しい情報を網羅できるよう複数サイトを参照するようにする
  • 画像から文字を抽出する処理を加える

ChatGPTの問題

  • 対象商品以外の情報を拾ってしまう(同じページに載っている関連商品の情報等)
  • 嘘を出力してしまう(与えたテキスト以外の知識から勝手に回答を生成する)

考えられる対策

  • プロンプトを可能な限り具体的にする
    • 例:"商品の重さを抽出して" → "型番〇〇の本体のみの重さを抽出して"
  • 入力と得られた出力を再度GPTに入力し、整合性を問う

商品情報マスタの問題

  • データベースのカラム名が曖昧
  • 期待する出力の説明が不足

考えられる対策

  • 人間もAIも理解しやすい明確なカラム名にする
  • 各カラムに対して、どのような情報を期待しているかの説明をDB内で付与する
    • 欲しい情報の詳細な説明や、その判断基準等を付与

まとめ

業務にChatGPTを導入する前に抑えるべきポイント

ChatGPTを使った業務改善にトライしてみて、こういったポイントを事前に考えていればスムーズに実装することができたな、という内容をまとめました。

回答の生成のために必要な事前情報を過不足なく与えられるか

  • 期待する回答をするために必要な情報をすべて与えられるか
  • 不必要な情報を多く与えすぎないこと (関係のない情報に惑わされ回答が得られないことがある)

ChatGPTに任せられる業務の範囲はどこまでか

  • 手続き的にできるデータの前処理・後処理などはChatGPTにやらせない
  • ChatGPTにさせるタスクはなるべくシンプルになるようにする

ChatGPTへの命令を具体的に表現できるか

  • GPTの回答が一意に定まるように、具体的な命令を記述できるか
  • 命令が曖昧だと、実行毎に結果が変わってしまう

今回の取り組み後の変化

社内の変化

データベースの商品情報マスタの各カラムに、AIが理解しやすい説明文を付与することになりました。そうすることで、人間もAIも毎回同じ基準でリサーチできるようにし、各カラムの定義が明確にされた良いデータベースを構築していこうという機運が高まりました。

自分の変化

リサーチシステムの実装を通して、ChatGPTをシステムに組み込む流れや、ChatGPTには何ができて何ができないのか等の知見を得ることができました。また、業務のどの部分を効率化できるかを考えることで、社内のオペレーションの全体像を理解する良い機会となりました。

Discussion