こんにちは、2025年1月に入社したアスクルの松尾です。
業務で初めて生成AIに触れることとなり、入社間もない私がプロンプトを使ったレビュー要約機能の開発をお任せいただきました。 今回はそこで得た知見を共有していこうと思います。
はじめに
今回開発したレビュー要約機能について簡単に説明します。
お客様が書いてくださった商品レビューを生成AIを使って要約し、「この商品はどんな感じなんだろう?」と気になっているお客様に、より分かりやすく正確な情報をお届けしようというプロジェクトです。
プロンプト作りで分かったこと
最初はうまくいかなかった話
最初にレビューを要約してもらう時は、「完璧な指示書を作れば完璧な結果が返ってくるはず!」と思って、こんな感じでめちゃくちゃ細かく条件を指定していました。
- 商品の評価については言及しない
- メリット、デメリットについて記述する
- 箇条書きはせず自然言語で評価を要約する
- 誇張しすぎないこと
- 具体的な言い方を心がけること
- 簡潔に記述すること
などなど…。
ところが、これが大失敗。プロンプトが350文字くらいになってしまい、「要約された文よりもプロンプトの方が長い」という本末転倒な状況になってしまいました。
しかも精度も全然ダメで、何回か実行すると文章がおかしくなったり、せっかく指定した条件を無視したりと、とても実用的とはいえませんでした。
さらに、当初はお客様がページを見るたびにリアルタイムでAPIを呼び出して要約結果を表示しようと考えていたのですが、レスポンスに1〜4秒もかかってしまい、「ユーザ体験に悪影響を与える」という問題も発生しました。
「これはまずい」ということで、プロンプトについてちゃんと勉強することにしました。
改善して分かったこと
シンプルなプロンプトの方が効果的
- コンテキストプロンプト
調べてみると「コンテキストプロンプト」という手法があることを知りました。
これは、AIに対して「こういうデータを扱うよ」「こんな感じの出力が欲しいよ」という文脈を先に教えてあげる方法です。
たとえば、レビューデータの特徴(「商品の機能について書かれることが多い」など)や、期待する出力形式を事前に示すことで、生成AIがぐっと適切な要約を生成してくれるようになりました。
- 「やってほしくないこと」を伝える
一番驚いたのは、プロンプトをシンプルにした方が精度が上がったことです。
「あれもして、これもして、そうもして…」と細かく指示するよりも「こういうことはしないで」という禁止事項を中心に書く方が、生成AIが自然でよい文章を作ってくれました。
結果的に、プロンプトも200文字程度まで短くできて、レスポンス時間も短縮されて一石二鳥でした。
速度問題はアーキテクチャで解決
レスポンス時間の問題は、発想を変えることで解決しました。
リアルタイムで処理するのではなく、夜間のバッチ処理で事前にレビューを要約してデータベースに保存しておき、お客様がページを見る時はそこから取得するだけという仕組みに変更しました。
改善前後の比較
数字で見ると、こんなに変わりました!
項目 | 改善前 | 改善後 |
---|---|---|
プロンプト文字数 | 約350文字 | 約200文字 |
レスポンス時間 | 1〜4秒 | 1〜2秒 |
要約精度 | 低い(条件無視が頻発) | 高い(安定した出力) |
運用方法 | リアルタイム処理 | 夜間バッチ + DB格納 |
振り返ってみて
今回の開発を通して、生成AIとの付き合い方について大切なことを学びました。
最初は「AIにはこと細かに指示を出して、レールに沿って歩いてもらおう」と考えていました。でも、これって完全に逆だったんですね。
むしろ「ゴールはここだよ、でもこの道は通っちゃダメ」という感じで、必要最小限の情報だけ伝えて、あとはAIの判断に任せる方がずっとよい結果が出ました。
生成AIをうまく使えないなと感じている方がいたら、一度「指示を減らしてみる」ということを試してみてください。案外、期待以上の結果が返ってくるかもしれません。
最後まで読んでいただきありがとうございました! 要約レビュー機能は近々リリース予定ですので、ぜひお楽しみに。
生成AIについてはまだまだ知らないことばかりなので、もっと勉強していきたいと思います。この記事が誰かのお役に立てれば嬉しいです。
それではまた。