Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AI POSにおけるLLM Observability基盤の導入 ― サイバーエージェントDX...

AI POSにおけるLLM Observability基盤の導入 ― サイバーエージェントDXインターン成果報告

株式会社サイバーエージェントDXでのインターンで、生成AIを活用した小売DXサービス「AI POS」の開発に取り組みました。
サービス品質や運用のしやすさを高めるため、LangfuseやOpenTelemetryを使ってLLMの動きを可視化するObservability基盤を構築しました。

GCP上での実装を通じて、AIの品質評価や監視の仕組みづくりを実践した内容を紹介します。

Avatar for ♛Heitor Hirose

♛Heitor Hirose

November 03, 2025
Tweet

Other Decks in Programming

Transcript

  1. プロダクトの問題点 - 課金体系が分散し、コストが把握しづらい - LLM周辺の不具合を簡単に追跡できない (普通のログからAIエージェントの推論を追うのは手間) - 定量的にLLMシステムを評価できないので 改善もできない。 Service

    A ? $
 Service B ? $
 Service C ? $
 OpenAI
 Python SDK
 128 $
 別々のモデル ・ ライブラリ 複数のマイクロサービス(Cloud Run) UX悪化とコスト増加の要因に なり得る。
  2. 2. 開発者の原因追及 LLMがデータベースから取得した数値を計算し間違えたの か? 参照したデータが古かったり、不正確だったりしたのか? 他の店の情報と混同してしまったのか? 呼び出すべき関数を間違えたのか? 生成したSQLが不適切だったのか? 記録が一連の流れとして残っていなかった結果、点在する ログを個別に追跡せざるを得ない状況に。

    グリーンティー(15万円)と、人気の新商品スパークリング ウォーター(8万円)を比較した結果、グリーンティーの売上 が大幅に上回っています。 先月、A店で最も売れたドリンク上位2つの売上を比較して 顧客 自然 言語 モデ ル 実際の正しい比較対象は売上2位の『ブラックティー』で デタラメな回答を行っていた。 本当か...?、間違ってるな
  3. AIエージェントの行った処理の流れ(イメージ) 1. 思考: 「A店の上位2ドリンクの比較だな。まず、1位のドリンクを特定しよう」 2. ツール利用 (SQL生成) : SELECT product,

    SUM(sales) FROM ... WHERE store='A店' ... ORDER BY sales DESC LIMIT 1 3. 観察 : 結果が返ってくる。「1位は『グリーンティー』で売上は15万円か。」 4. 思考 :「よし、1位は分かった。次に比較する対象は…。そうだ、最近人気の新商品と比較してみよう」 ※ 「2位のドリンクを探す」という本来の目的を忘れ、全く新しい目的を勝手に設定してしまった 5. ツール利用 (別の関数呼び出し) : 「A店の新商品で最も人気なもの」を取得する get_popular_new_product() を呼び出す。 ※ 目的と関係ないツール呼び出し (´ ・ω・) 6. 観察 : 結果が返ってくる。人気の新商品は『スパークリングウォーター』で売上は8万円。 … いくつかの処理終了時に最終回答の生成 ※ 自信をもって、間違った回答を生成 ユーザの要望 : 先月、A店で最も売れたドリンク上位2つの売上を比較して ※ これはイメージであり、実際のプロダクトの動作と違います
  4. 「定量的評価」の仕組み作り 改善 計測 分析 繰り返し 計測:
 Langfuseなどの監視基盤を導入し、本番環境で行われるすべてのリクエストに関する「品 質」「コスト」「パフォーマンス」のデータを自動的に収集 
 分析:


    開発者が正解データセットを用意して比較したり、ユーザーからのフィードバックなどを使 用してモデルやエージェント評価を行ったり、プロダクトの傾向をダッシュボードなどから確 認する。
 改善:
 Langf収集したデータから判明した事実に対して修正やアクションを行い、実施した改善が 正しかったかどうかを計測のフェーズから繰り返す。 
 感覚的な「良い/悪い」の判断から脱却し、客観的な指標に基づいた評価に 

  5. OpenTelemetry の導入 • 処理の流れや依存関係を可視化できる 
 • パフォーマンスのボトルネックを特定しやすくなる 
 • trace_id

    などでログ・メトリクスと紐づけ可能 
 ◦ 個別ユーザー、チャットなどを指定して紐付き 
 • 他の監視ツールと統合しやすい 
 ◦ Jaeger, Prometheusなど 
 • 標準化形式で将来の拡張が容易 
 
 トラブルシュートが簡単になるけれども、運用コストは増える 

  6. LLM Observability基盤「Langfuse」の導入 
 主な機能 - LLM向けのオブザーバビリティツール - トレーシングとログの収集 - 評価とモニタリング

    - プロンプト管理 - コスト可視化 - セッション/ユーザー単位のトレーシング - OpenTelemetryの入力に対応
  7. GCPでLangfuseを構築する方法 調査したところ、主に構築ができた構成として ① GKEベース (Autopilot)x HelmChart ★ 公式推奨 ② Cloud Runベース

    常時稼働の必要性と公式が推奨しているという点と、プロダクトの規模 が大きくなった際に最終的に移す必要が出てくると考えたのでGKEベース を選択しました。
  8. 陥った問題。 - Terraformわからない - Kubernetes, GKEわからない - OpenTelemetryわからない - ネットワークわからない

    - Langfuseもわからない 今回使用したほとんどすべての技術は初めて触ったので、 ひたすら知識を得るために勉強していました。