ENECHANGE Developer Blog

ENECHANGE開発者ブログ

ChatGPT APIで自社サービスの口コミを分析したら業務効率爆上がりだけじゃなくみんなハッピーになった話

概要

ENECHANGEが提供するアプリ『EV充電エネチェンジ』には、ユーザーが充電器の口コミを書き込めるコメント機能が組み込まれています。

このコメント機能を快適にご利用いただき、また自社サービスの改善に活かすためには、数多くの口コミを読み解く必要があります。増え続けるコメントをどう管理するか、という課題をトリガーとしてChatGPT API(最終的にはAzure OpenAI API)を使った支援システムを開発したことで、業務の効率化と即時性の向上、活用範囲の拡大が実現されました。 この具体的な開発プロセスや成果、困難だった点、そして今後の展望についてご説明します。

DALL・E3さんが描いてくれたコメント管理支援装置

自己紹介

このブログでは初めまして。ENECHANGE エネルギークラウド事業部でサービスデザイナーとして活動しています草間です。 サービスデザイナーは提供するサービスのユーザー向けUX/UIのデザインをするだけでなく、サービスが高いレベルで効率よく機能するために必要なあらゆる要素を検討し、デザイン的・技術的アプローチで解決を試みるのが仕事です。(要するになんでも屋です)

導入の動機

『EV充電エネチェンジ』のコメント機能に寄せられるコメントには、さまざまな内容があります。EV充電器の設置場所に対するレビューや故障情報などだけでなく、弊社や他社さまの充電器・サービスに対する不満や、残念ながら一部利用規約に違反したコメントもあります。

それらすべてについて、従来はスタッフによる目視確認を行っておりましたが、1日に100件を超えるコメントをいただくこともあり、今後充電器が増えていく(2030年に30万基が政府目標)なかでサービスをサスティナブルに運営するためには、業務の効率化・自動化が確実に求められるセクションとなっていました。

DALL・E3さんが描いてくれた大量のコメントをチェックする様子

その検討をしていた2023年2月頃、ちょうど話題になっていたChatGPTが、この課題を解決するための最適なツールであると考え、プロトタイピングを開始しました。

開発プロセス

初期開発

プロトタイプ作成を始めた頃は、まだ社内の生成AI利用ルールが定まっていない状況でした。またAPIもオープンになっておらず、WebUIを使用するしかない状態でした。そのため情報管理に配慮する必要がありましたが、幸いコメントは公開情報だったため、いくつかのコメントを手作業でピックアップしてコピペし、それらをまとめてChatGPTに評価させるプロンプトを作成、実験を繰り返しプロンプトの改善を行いました。

また、満足度以外にもコメントの充実度を計る評価軸を設定し、複数の軸でChatGPTによる評価を行うことで、ユーザーにとって価値の高いコメントを検出することを試みました。

この時点ではGPT-3で駆動していましたが、以下の点が明らかになりました。

  • 評価指標を前提として与えることで、ユーザーの満足度を安定的に評価する事ができる。
  • 故障や不具合を示唆しているコメントを安定的に抽出することができる。
  • 利用規約で禁止している事項について、具体的に指示することで抵触コメントを安定的に抽出することができる。
  • 情報の充実度判定も、具体的な評価軸を与えれば安定して動く。ただし5段階評価の4と5の判定などがゆらぎがち。
  • 結果をJSON形式で出力して、後続のシステムに引き渡すことができる

API化・本格開発

その後APIが公開され、社内の利用ルールも定まったことでChatGPT APIが利用可能になりました。この時点ではまだ1人プロジェクトだったため、ChatGPTでPythonスクリプトやSQLコマンドを出力させ、DBからデータを取得し、APIで評価するところまでのプロトタイプを作成しました。 APIが叩けるようになったことでコメント評価プロンプトの実際のコストが判明し、1コメントごとに同じプロンプトを繰り返し叩いても全くコスト的に問題にならないとわかったので、以後のプロトタイプは1コメントごとに評価するプロンプトとなりました。また、社内の現状業務・サービス内容の現状を踏まえ、初期リリースにおける評価のスコープを満足度と不具合言及、規約違反検出に絞り込みました。精度は十分に出たため、APIのバージョンはGPT-3.5で進めることとしました。

DALL・E3さんが描いてくれたコメント評価の流れ、流石に苦しい。。。

ここからエンジニアが参画したプロジェクトとなり、スクリプトの定期実行や、DBからユーザーIDやコメントURLを取得する機能などを追加し、運用チームがGoogle Spread Sheetでコメントを閲覧できるようにまで進めました。これによって、コメント評価機能が実運用に供用されるようになりました。

なお実運用へのリリース後、社内の環境整備にともなってAzure OpenAI APIへの移植が行われましたが、この移行もスムーズに実施できました。

成果

本プロジェクトの実運用開始により、利用規約違反が疑われるコメントの検出が容易になりました。これによりコメント管理業務の工数を1/3程度まで圧縮することに成功し、月間で数人日の削減になりました。

DALL・E3さんが描いてくれたタスクが圧縮された様子

さらに満足度評価と不具合言及抽出の実現により、充電器の通信機能では検出できない付随設備の機械的不具合であったり、充電器の実運用や使いやすさに対する不満の早期検知といったサービス面の改善につなげることができています。

またこの満足度評価結果については、高・低に振り分けてそれぞれ専用Slackでコメントのサマリーを共有することにより、コメント管理チームからアラートを上げる必要がなく、各部署が自律的に情報を得ることができるようになりました。

まさに業務効率としては爆上がりに加えて、ただのサービス内の口コミ機能 → サービス改善上重要な情報を吸い上げる機能 へと進化を果たしてみんなハッピーになった、ということがおわかりいただけるかと思います。

問題と課題

開発の初期段階では、ChatGPTに関する情報が少なく、安定した出力を得ることが難しいシーンがありました。多くは入力されるデータの前提理解が不十分であることや、逆に過剰な条件入力をしてしまったことなどが原因でした。いくつかのコメントを処理した後に、存在しないコメントを創作してそれを評価するというハルシネーションが発生したり、試行するたびに星1つから星4つと大ブレの評価を下してしまうなどの事象に悩まされました。

後続のサービスに引き渡すためのJSON形式での出力が安定しなかったり、「こちらがコメントの評価です」などの余計な文章を出力する事象には最後まで悩まされました。

DALL・E3さんが描いてくれた挙動が不安定なAIの様子

しかし、プロンプトに出力文のヒントとして「{」を渡すことを含めることでJSONでの出力を安定させたり、APIのrole活用や指示とガイドラインの分離等で問題は解消され、現在では安定した処理が可能となりました。

今後の展望

現在は定期処理でまとめてコメントをチェックしているので、基準に抵触するコメントであっても一旦公開されてしまい、その後システムの支援下で人間による非表示処理が行われます。この方式ですと、コメントを可能な限り早くチェックしなければいけないことには変わりがないため、これを投稿時にAIチェックするようにして、不適切な疑いのあるコメントを保留できるような安全側に倒した運用にすることで、コメントチェック担当者の仕事量を安定させることを考えています。

また、今後はプロトタイプで作成していたコメントの情報の充実度評価を活用し、情報価値の高いコメントが優先的に表示されたり、投稿しようとしているコメントの内容を確認して、追加してほしい情報をユーザーに示唆するなどの活用方法も検討の対象になってくるでしょう。

DALL・E3さんが描いてくれたAIと人間が共創するUXの様子、なんだかよくわからんがご機嫌だったのでヨシ!

現時点の生成AIを取り巻く環境においては、生成される情報そのものをユーザーに直接出力するような用途よりも、多様なユーザーの入力について、言語処理能力を用いてモデレートした結果を業務効率の改善、UXや付加価値の向上に繋げるような使い方が実用的であると考えています。そうした視点で、今回のプロジェクトは理想的な成果を上げており、弊社サービスと生成AIの関わり方のモデルケースになると考えています。

なお、このブログ記事は弊社SlackにインテグレートされたChatGPTが筆者にインタビューする形でアウトラインを作成し、執筆されました。