本文へスキップ
実績一覧へ
フルスタック稼働中

LLM評価・監視ダッシュボード

AIアプリケーション向けの本番オブザーバビリティ基盤。1日1万件以上の推論の精度、レイテンシ、コスト、有害性を追跡し、100msごとに更新されるライブダッシュボードで見せる。

20263.5か月
1日1万件以上の推論ダッシュボードは100msごとに更新評価スコアが90%未満ならCI/CDが停止
LLM評価・監視ダッシュボード

担当領域

フルスタックで担当。オブザーバビリティの設計、評価パイプライン、リアルタイムのダッシュボード、CI/CD連携を構築した。

期間

3.5か月

2026

技術スタック

Next.js 15TremorClickHouseOpenTelemetryDeepEvalRAGASPagerDutyVercel Edge

ステータス

稼働中
概要

AIアプリケーション向けの本番オブザーバビリティ基盤。1日1万件以上の推論の精度、レイテンシ、コスト、有害性を追跡し、100msごとに更新されるライブダッシュボードで見せる。

解決すべき課題

多くのAIチームは、本番でモデルが本当に機能しているかを知らないままリリースしている。1日数千件の推論について精度、レイテンシ、コストを追う標準的な方法はなく、品質の劣化をユーザーより先に検知することも、AIがSLAを満たしていると関係者に示すこともできない。劣化は指標ではなく、ユーザーからの苦情で気づくことになる。

アプローチ

OpenTelemetryでAIアプリケーションを計装し、DeepEvalで15の品質指標をすべての推論に対して評価し、結果をClickHouseに蓄えて100ms未満でダッシュボードを引けるようにした本番オブザーバビリティ基盤を構築した。CI/CDと連携し、評価スコアが閾値を下回るとデプロイを止める。

主な機能
1

推論のリアルタイム監視

OpenTelemetryで計装したパイプラインが、LLM呼び出しごとのレイテンシ(p50/p95/p99)、トークン量、1回あたりのコスト、エラー率を追跡し、ダッシュボードを100msごとに更新する。

2

15指標の評価スイート

DeepEvalが忠実性、関連性、幻覚の検出、有害性、バイアス、一貫性など15の指標を推論ごとに評価する。RAG特有の品質にはRAGASのスコアを使う。

3

CI/CDのデプロイゲート

評価スイートはCIのpytestフィクスチャとして走る。いずれかの指標が設定した閾値を下回るPRは、劣化の詳細レポートとともに自動でブロックされる。

4

異常検知とアラート

移動窓の指標に統計的な異常検知をかけ、7日移動平均から2σ以上外れた場合にPagerDutyとSlackへ通知する。

技術選定

このプロジェクトを形づくった技術選定と、それぞれを選んだ理由。

ClickHouse

データ

列指向の圧縮と、10億行規模での10〜50倍速い集計のため、指標の保存先にTimescaleDBではなくClickHouseを選んだ。Postgresで3秒かかっていたダッシュボードのクエリが80msで返る。

Tremor v3.0

フロントエンド

既製のダッシュボード部品が、エンジニアの見慣れた監視画面の作法に合っているため、独自のD3ではなくTremorを選んだ。フロントエンドの開発期間を60%短縮できた。

OpenTelemetry

インフラ

特定のベンダーに縛られないよう、独自の計装ではなくOTelを選んだ。アプリのコードを変えずにDatadog、Grafana、Jaegerへトレースを送れる。セマンティック規約により、サービス間で指標の命名も揃う。

DeepEval 0.4.2

AI・ML

pytestと統合でき、指標のライブラリも揃っているため、自作の評価スクリプトではなくDeepEvalを選んだ。評価スイートをテストファイルとして書けるので、既存のCI基盤をそのまま再利用でき、別の評価プラットフォームを作る必要がない。

アーキテクチャ

計装からリアルタイムのダッシュボード、CI/CD連携までを通したフルスタックのオブザーバビリティ。

01

計装

OpenTelemetryのSDKがLLM呼び出しをラップ → レイテンシ、トークン、コスト、応答を記録

02

評価

DeepEvalが推論ごとに15の指標を評価 → スコアをトレースと並べて保存

03

保存

ClickHouseが指標イベントを取り込み → 列指向の圧縮で10億行超でも100ms未満のクエリ

04

ダッシュボード

Next.jsとTremorがリアルタイムのグラフを描画 → 精度、レイテンシ、コスト、有害性のパネル

05

アラート

移動窓での異常検知 → 品質の劣化をPagerDutyとSlackへ通知

06

CI/CDのゲート

CIでpytestの評価スイートを実行 → 設定した閾値を下回る指標があればデプロイを停止

技術的な壁と学び

開発中にぶつかった難所と、どう乗り越えたか。

技術課題1

規模拡大にともなうダッシュボードの性能

問題

1日1万件以上の推論がそれぞれ15の指標を生むため、グラフの更新ごとに15万行以上を走査していた。当初のPostgres構成ではダッシュボードの読み込みに3〜5秒かかり、リアルタイム監視には使えなかった。

解決策

指標の保存先をClickHouseへ移し、よく使う集計(時間別・日別のロールアップ)にマテリアライズドビューを用意した。閲覧の多いパネルにはRedisで10秒のTTLのクエリキャッシュを挟んだ。

結果

ダッシュボードの読み込みは4.2秒から180msへ短縮した。エンジニアは常時開いた監視タブとして使っている。

技術課題2

本番での評価コスト

問題

推論ごとに15のDeepEval指標を回すと800ms以上のレイテンシが加わり、LLMのコストも倍になった。各指標が判定用のLLM呼び出しを伴うためである。レイテンシに敏感な本番経路では受け入れられない。

解決策

評価を非同期にした。推論の結果はすぐ返し、指標はバックグラウンドのキュー(CeleryとRedis)で計算する。CI/CDのゲートについては、全件ではなく代表サンプル(5%)に対して同期的に評価する。

結果

本番の推論にレイテンシは一切加わらない。非同期の評価キューは中央値12秒の遅れで処理され、ダッシュボードのリアルタイム更新には十分だった。

NEXT

LumoraTechと、次のシステムをつくりませんか。

エンジニアリングの質を重視するチームや創業者のために、こうした本番システムを構築しています。東京のチームが日本語と英語の両方で対応します。