こんにちは、石原です。
私の所属しているエクスチュア株式会社では、パートナー様への日頃よりの感謝を込めてイヤーエンドパーティーの方開催させていただきました。
そのイベント内で実施する企画の一つとして今回ご紹介する「AIマーケティングゲーム」を実施予定でしたが、事前のテスト不足と皆様の積極的なアクセスによりOpenAIのAPIのレート上限になってしまいエラー祭りとなってしまいました。。。
ご参加していただいた皆様には不甲斐ない所をお見せしてしまいました。また、作成したアプリを楽しんでいただけなかったこと非常に残念でした。。。
今回のブログではアプリの供養とテスト不足の反省のため、アプリの内容のご紹介と原因調査の方行いたいと思います。
企画デザイン
今回の企画のテーマとして「AI」を何かに使えないかということで、弊社での取り組んでいる「マーケティング×データ分析」と絡めたアプリを作成することとなりました。アプリ作成にはStreamlitとLangChain、OpenAIを使用しています。
前述の通り弊社イヤーエンドパーティーにはパートナーの皆様にご参加いただいており、ネットワーキングの要素も取り入れればということでランダムなチームに分かれていただくことにしました。
アプリの概要
今回のアプリでは「マーケティング」と「データ分析」の大きく2つのポイントでAIを活用しています。
マーケティング
AIを使った顧客ペルソナの作成を実施しています。
もともとChatGPTなどはプロンプト作成の手法として役割を与えるという手法が存在していました。
例えば旅行の内容について相談する場合に「あなたは優秀な旅行ガイドです。観光名所を詳しく教えてください。文化的なスポットと自然の景観、どちらも含めておすすめを教えてください。」などと与えることで結果の品質が良くなることが知られています。これは生成AIの内部で旅行ガイドが関連するような内容を確率的に出力しやすくなることを利用しています。
今回は以下の様なプロンプトを与えることで設定の与えられたお客様として動くように動作しています。
|
上記で作成したAIカスタマーに対してイベントを入力して、イベントを採点してもらうという仕組みになっていました。カスタマーのモデルにはgpt-4o-miniを使用しています。
裏話
AIカスタマーは一人一人それぞれ別でチャットを投げるのでレート制限に引っかかりやすいなというのは事前に考えていました。(今回の例では10人)
そこで、チームごとに1名のみ入力可能という制限を設けてレート制限を超えないようにしていました。
データ分析
データ分析に関しては以前より調査を実施していたAIエージェントを使用しています。
AIエージェントはチャットのための生成AIとは異なり、チャットの入力と出力までの間にツールの処理を挟むものになってます。イメージとしては検索ツールを渡しておけば、AIが実際に内容を調べてから応答してくれるようなものになってます。
例えば生成AIに天気について質問してみます。
「今日の大阪の天気は?」
すると、生成AI自体には今日の天気を知るすべがないので回答できなくなったり嘘をついたりという結果になります。(最近のGeminiやChatGPTではデフォルトで検索ツールを使用する機能がついているので実は問題なく回答できたりもします。)
そこで「大阪 今日 天気」などのGoogle検索の結果などを裏側で合わせてから回答を生成することで正しい結果を出力することができます。
今回のアプリではLangChainで事前に定義されている関数を使用しています。
この関数ではpandasのDataframeに対するpythonコードを作成しています。
|
今回はAI秘書と名付けてデータベースへのアクセスを代替するような仕組みとして使っていました。
アプリの構成図
アプリの構成図としてはAI秘書を介してデータベースのデータを分析し、分析内容を元にAIカスタマーへ施策を実施し、評価を受けるという流れになっています。

実際に動かしてみる
AI秘書で年齢層を質問してみます。

ちなみに実際の年齢の分布は以下の通りでした。
|
結果としてはちぐはぐな回答が返ってくることも多いです。

属性について質問してみると正しく応答してくれています。
それでは施策の画面でクーポンを共有してみましょう!



厳しい評価でした。
今回レート制限はありつつも何とか入力していただいた結果の内、最高点だったものをご紹介します。
|
結果の方はこちらです。


合計ポイントは83ポイントです!
ご参加いただきありがとうございます!
レートエラーの原因
実際にイベントで発生したエラーが下記の通りです。
ご覧になるとわかる通り、1分当たりのトークン上限(TPM)に引っかかってしまっております。
|
実は今回のイベントに向けてレート制限を全く気にしていなかったわけではなく、事前チェックとしてTPMの値を確認しておりました。

今回AIカスタマーで使用したgpt-4o-miniはというと10,000,000TPMが上限になっていますね。
最大の入力トークンは128,000なので参加者100人とすると1,280,000TPMです。(入力がかなり長文になるのであり得ない数字ではありますが)
あれ、上限超えてないですね。
エラー文を再度見てみるとモデル名が記載されており、gpt-3.5-turbo-instructに設定されていました。そのレート制限は確かにエラー文に記載の値と一致していますね。

ただ、このモデルを指定した覚えがなく、LangChainのドキュメントを確認していると下記の内容が見つかりました。
|
勘の鋭い読者の皆様ならお気づきかもしれませんが、今回のレート上限に達してしまった原因はAI秘書のコードでOpenAI()のモデル呼び出し時にモデル名を指定していなかったことで、デフォルト値が使用されていたことです。。。
二つのAIシステムを作成したことで、モデルのバージョンがずれていることに気付かずにチェックを通してしまったというわけでした。
皆さんもモデルの設定とレート制限、テストにはお気を付けください。。。
完
エクスチュアはマーケティングテクノロジーを実践的に利用することで企業のマーケティング活動を支援しています。
ツールの活用にお困りの方はお気軽にお問い合わせください。






