【入門編】Grafana with LLMs: OpenAIやLangChainのメトリクス・コストを可視化するAI監視ダッシュボードの作り方 – 運用監視・オブザーバビリティ活用バイブル

エンジニアの皆さん、こんにちは。システムが「動いているか」だけでなく「どう振る舞っているか」を解き明かすオブザーバビリティの世界へようこそ。

最近、生成AIアプリケーションを開発していて、こんな不安を感じたことはありませんか?
「気がついたらOpenAIの請求額が跳ね上がっている……」
「プロンプトの修正で、どのくらいレイテンシが変わったのか感覚でしかわからない……」

従来のサーバー監視とは異なり、「AIの知能」を監視するには、レイテンシやCPU負荷だけでなく「トークン」と「コスト」という新しい次元のメトリクスを捉える必要があります。

今日は、Grafanaを使って、AIの消費コストとパフォーマンスを可視化する「AIオブザーバビリティ」の第一歩を解説します。これをマスターすれば、あなたのプロダクトは「ブラックボックス」から「制御可能な資産」に変わります。

—

1. なぜAI監視にGrafanaなのか?

AIの監視において重要なのは、「推論コスト」と「ユーザー体験」の相関関係を可視化することです。

  • トークン消費量: どのプロンプトが課金額を押し上げているか?
  • レイテンシ: ユーザーを待たせているボトルネックはどこか?
  • コスト効率: 1リクエストあたりの単価は適正か?

Grafanaは、これらバラバラなデータを一元管理し、ダッシュボードとして「ビジネス価値」を可視化する最強のツールです。

—

2. アーキテクチャの全体像

今回は、最もシンプルかつ強力な構成で構築します。

1. データソース: OpenAI APIの呼び出しログ(LangChain等のトレーシング)
2. コレクター: Prometheus (メトリクス収集のデファクト)
3. 可視化: Grafana

—

3. 実装のHelloWorld:コストをメトリクスへ変換する

初心者の方でも迷わないよう、Pythonコードで「推論コストをPrometheus形式で公開する」仕組みを作ります。

ステップ1:必要なライブラリのインストール

pip install prometheus_client openai langchain

ステップ2:監視用スクリプト(AI実行のラッパー)

AIを呼び出すたびに、トークン数をメトリクスとしてPrometheusに渡します。

from prometheus_client import Counter, start_http_server
from langchain.callbacks import get_openai_callback

1. Prometheusのメトリクスを定義
累積コストを記録するカウンター
AI_COST_COUNTER = Counter(‘ai_total_cost_usd’, ‘Total cost of OpenAI API calls’)
トークン数を記録するカウンター
AI_TOKEN_COUNTER = Counter(‘ai_total_tokens’, ‘Total tokens consumed’)

2. Prometheusサーバーを起動(ポート8000で公開)
start_http_server(8000)

def ask_ai_with_monitoring(prompt):
with get_openai_callback() as cb:
# ここにLangChain等のAI実行処理を書く
# result = llm.invoke(prompt)

# 3. 実行結果からコストを吸い上げ、Prometheusに渡す
AI_COST_COUNTER.inc(cb.total_cost)
AI_TOKEN_COUNTER.inc(cb.total_tokens)
print(f”コスト: ${cb.total_cost}, トークン: {cb.total_tokens}”)

実行テスト
ask_ai_with_monitoring(“AIの未来について教えて”)

—

4. Grafanaでの可視化セットアップ

ここからが魔法の時間です。

1. Data Sourceの追加: Grafanaの設定画面から「Prometheus」を選択し、`http://localhost:8000` を指定します。
2. ダッシュボード作成: 「Add Panel」をクリックし、以下のクエリを入力します。

  • コスト推移: `rate(ai_total_cost_usd_total[5m])`
  • トークン効率: `rate(ai_total_tokens_total[5m])`

3. グラフの見た目を整える:

  • 「Graph」パネルを選択し、折れ線グラフにします。
  • 単位設定(Unit)で「Currency -> US Dollar」を選択すると、グラフに「$」マークがついて一目瞭然になります。

—

5. 伝説のエンジニアからのアドバイス:ここが「差」を生む

ただグラフを作るだけでは、「監視」とは言えません。現場で生き残るための知見を二つ授けます。

  • アラート設定の極意:

「コストが急増した時」に通知を飛ばすのはもちろんですが、「コストに対するレスポンス速度の悪化」を監視してください。コストが上がっているのに速度が落ちているなら、それは「プロンプトの非効率性」のサインです。

  • タグ付けの重要性:

本番環境では `model_name` や `feature_name` をラベルとして付与してください。`AI_COST_COUNTER.labels(model=”gpt-4″, feature=”chat_bot”).inc(…)` のようにタグ付けすることで、「どの機能が一番金を食っているか」が瞬時に判明します。

—

最後に

AIを導入するということは、無限の可能性を手にすることと同時に、「制御不能なコスト」というリスクを背負うことでもあります。

今回構築したGrafanaダッシュボードは、あなたのAIアプリケーションの「心拍数」と「体温」を測る聴診器です。まずはこのHelloWorldから始めて、次はより詳細なトレース情報(LangSmith等との連携)へステップアップしてみてください。

あなたの手元で、AIがより健全に、より賢く育っていくことを応援しています!何か詰まったら、いつでも聞いてくださいね。

タイトルとURLをコピーしました