メインコンテンツへスキップ

Langfuse連携で比べるAI Gateway 3選:Bifrost・LiteLLM・Kong

著者
Tomoyuki Kurosawa

こんにちは。ガオ株式会社の黒澤です。LLMアプリケーションを複数開発する環境では、それらを統合する基盤であるAI Gatewayを活用するケースがあります。本記事では、AI Gatewayとして3つの製品を、Langfuseと組み合わせた場合のポイントとともに解説します。

結論から言うと、Langfuse連携の見やすさを重視するならLiteLLMが最も扱いやすいです。すでにKongをAPI Gatewayとして運用している組織ではKong連携が自然な選択肢です。一方、Bifrostは手元で素早く試せる軽量さが魅力ですが、v1.4.24時点ではOTelスパンが多く、Langfuse上の視認性には課題があります。

想定読者・この記事でわかること
#

想定読者:

  • LangfuseでLLMのトレースを取りたい方
  • AI Gatewayの導入を検討中で、製品選定に迷っている方

この記事でわかること:

  • Bifrost・LiteLLM・Kongの3製品をLangfuse連携の観点で比較
  • 3製品のLangfuseトレースの見え方の違い(スクリーンショット付き)
  • BifrostをVertex AI + Langfuse OTelで動かす際のセットアップのポイント

すでにBifrostを動かしている方は「Langfuseのトレース品質比較」セクションへどうぞ。


課題:AI Gatewayを入れてLangfuseでトレースを見たい、でも製品によって差があり
#

LLMを本番サービスに組み込む際、複数プロバイダーの切り替えやコスト管理、オブザーバビリティを一元化するためにAI Gatewayを挟む構成が増えています。本記事ではその中でもLangfuse連携によるオブザーバビリティの観点に絞って比較します。

当社ブログではすでに Kong AI Gateway + Langfuse連携LiteLLM Proxy on Google Cloud を紹介してきましたが、機能比較表ではどれも「Langfuse対応」と書かれています。しかし実際に使ってみると、トレースの視認性や設定コストに差がありました。

製品によってLangfuseへの連携方法も、実際のトレースの見え方も大きく異なります。今回はその比較を一本の記事にまとめることにしました。

今回の検証で扱う構成の全体像は次のとおりです。

graph LR
  Client[クライアント SDK] --> GW[AI Gateway
Bifrost / LiteLLM / Kong] GW --> LLM[LLM Provider
Vertex AI 等] GW -->|トレース送信| LF[Langfuse]

この構成のポイントは、アプリ側(クライアント SDK)に Langfuse の設定を一切書かなくてよい点です。トレースの収集は AI Gateway が担うため、既存のアプリコードを変更せずにオブザーバビリティを追加できます。


検証対象と前提
#

比較対象はこの3製品です。

製品概要検証方法
BifrostGo製のAI専用OSSゲートウェイ。npxまたはDockerで即起動できる自社でVertex AI + Langfuse OTel構成を実際に構築・検証(本記事)
LiteLLMPython製のOSSゲートウェイ。100以上のLLMプロバイダーに対応し、Langfuse連携をネイティブサポート既存記事 のトレーススクリーンショットを参照
Kong汎用APIゲートウェイとして広く使われており、AI Gateway機能をプラグインで追加できる既存記事 を参照

検証について: BifrostはVertex AI + Langfuse OTel構成を本記事で実際に構築・検証しています。LiteLLMとKongは当社の既存記事で詳しく解説しているため、本記事ではトレースの見え方の比較にとどめています。

検証環境の前提:

  • Langfuseはセルフホスト版を使用しています(Cloud版とはOTelエンドポイントのホスト名が異なりますが、Cloud・self-hosted問わずパス /api/public/otel/v1/traces まで含める必要があります。BifrostはこのパスをURL補完しません)
  • Bifrostはdockerイメージ maximhq/bifrost:v1.4.24 を使用(検証日: 2026年5月1日)。Bifrostは更新が速く、v1.5系(2026年5月6日リリース)ではTelemetryやTransport周りの変更が入っているため、最新バージョンではLangfuse上の見え方が変わる可能性があります
  • LLMプロバイダー:Vertex AI(gemini-2.5-flash)

Bifrostとは
#

Bifrost はGo製のAI専用OSSゲートウェイです。Goバイナリをnpmパッケージでラップしているため、npx @maximhq/bifrost で即起動できます(Docker起動も可能です)。

  • ゼロコンフィグ起動:設定ファイルを置くだけで動きます。データストア不要です
  • OpenAI互換API:OpenAI SDK は base_url、google-genai SDK は http_options={"base_url": ...} のように接続先を変えるだけで動作します
  • 軽量・低コストで試せる:OSSとして無料で利用でき、基本的なAI Gateway機能はすぐに使えます。なお、SSO・詳細なガバナンス・ガードレールなどはEnterprise扱いの機能もあるため、本番利用時は必要機能のライセンス条件を確認してください

Langfuseのトレース品質比較
#

前提を確認したところで、本題の比較に入ります。3製品でLangfuseのトレースUIの見え方がどう異なるかを見ていきます。本記事では、以下の観点でトレース品質を比較しています。

評価軸見るべきポイント
入出力の見つけやすさprompt / completion がどのスパンにあるか
コスト・トークンtoken usage / cost が自動で記録されるか
レイテンシリクエスト全体のレイテンシが見えるか
フォールバック・リトライtool call / fallback / retry が追えるか
ノイズGateway内部スパンが多すぎないか

Bifrost
#

prehook・posthook(リクエスト処理の前後に実行されるフック処理)のスパン(処理ステップの記録単位)が多数生成されるため、ツリービューが深い階段状になります。LLMの入出力がどのスパンにあるかを追うのに手間がかかります。

なお、この問題は既知のissue として上がっており、対応PR(#2279)も存在しますが、2026年5月時点では未マージです。将来的に改善されている可能性があるため、最新状況はissueを確認してください。

Bifrostのトレースツリー(階段状)
Bifrostのトレース:prehook/posthookスパンが多数生成され、ツリーが深くなる

なお、BifrostはMCPゲートウェイ機能も持っており、MCPツールを使うとツール実行1回ごとにさらにスパンが追加されます。

BifrostのMCP使用時トレース(Agent Mode)
MCPゲートウェイ使用時のトレース

LiteLLM
#

litellm-acompletion という単一スパンにInput・Output・コスト・レイテンシがまとまっており、見通しが良いです。LiteLLM独自のLangfuse連携ライブラリを使ってLangfuseへ直接データを送る「ネイティブサポート」のため、OTel(OpenTelemetry:分散トレーシングの標準規格)を経由せずに設定できます。OTel経由での連携も可能で、LiteLLM公式ドキュメントでは Langfuse v3 向けに OTel 連携が推奨されています。

LiteLLMのトレース(フラット)
LiteLLMのトレース:単一スパンにInput・Output・コストがまとまっている

Kong
#

KongはLangfuse docsで紹介されているKong向けトレーシングプラグインを使用するため設定がシンプルで、LiteLLMと同様にフラットで見やすいトレースが生成されます。

Kongのトレース
Kongのトレース:Kong経由のスパンにコスト・レイテンシがまとまっている


Bifrost セットアップのはまりポイント
#

ここからはBifrostを実際にVertex AI + Langfuse OTel構成で動かした際のはまりポイントです。LiteLLM・Kongと比較検討してBifrostを選んだ方や、これから試す方の参考になれば幸いです。

モデル名は明示列挙が必要
#

config.jsonmodels"*" を指定すると、ADC(Application Default Credentials:GCPの認証情報)の authorized_user タイプでモデル一覧取得が失敗し、キーが無効化されます。使用するモデル名を明示的に列挙してください。

"models": ["gemini-2.5-flash", "gemini-2.5-flash-001"]

OTelコレクターURLはパスまで含める
#

OTelのエンドポイントURLをBifrostは自動補完しません。セルフホストLangfuseの場合はパスまで明記が必要です。

https://your-langfuse-host/api/public/otel/v1/traces

Virtual Keyが必須
#

/genai エンドポイントはVirtual Key(Bifrostが発行する仮想APIキー)がないとルーティングされません。Virtual Keyは config.jsonvirtual_keys セクションで定義します。

"virtual_keys": [
  {
    "name": "my-key",
    "value": "sk-bf-vertex",
    "allowed_models": ["vertex/gemini-2.5-flash"]
  }
]

定義したKeyをリクエストヘッダーに x-bf-vk として付けて送信します。

client = genai.Client(
    api_key="dummy",
    http_options={"base_url": "http://localhost:8080/genai", "headers": {"x-bf-vk": "sk-bf-vertex"}},
)

/genai はBifrost専用エンドポイントです。OpenAI互換の /v1 エンドポイントとは異なる点に注意してください。

設定変更後はDBを削除して再起動
#

BifrostはSQLiteに設定をキャッシュします。config.json を変更しても反映されない場合は config.dblogs.db を削除してから再起動してください。Docker構成の場合はボリュームマウントしているパスに注意してください。


3製品まとめ比較
#

ここまでの比較とセットアップの知見をもとに、3製品を整理します。

比較軸BifrostLiteLLMKong
起動の手軽さnpxまたはdocker runで数秒Docker/Cloud Runデータストア込みの構成が必要
Langfuse連携方法OTel(要パス指定)ネイティブ / OTel(v3 では OTel 推奨)プラグイン
トレース品質スパンが多くノイジーフラットで見やすいフラットで見やすい
フォールバックあり(リクエスト時に fallbacks 配列で指定)→ 次回 でLangfuseトレースを詳しく解説ありあり
ガードレール(入出力の自動検査・制御)Enterprise版のみEnterprise版のみ正規表現ベースの AI Prompt Guard は OSS 版で利用可。Semantic Prompt Guard(ベクトル検索)は AI License 必要
有償サポート不明要問い合わせあり(価格非公開)
ガードレール機能は日本語環境では正しく動作しないケースがあります。日本語でのPII検出の精度検証例はこちら も参考になります。

Bifrostのパフォーマンスについて
#

BifrostはGo製のため、公式README では5,000+ RPS・11µsオーバーヘッドを報告しています。ただし、LLM推論自体に数秒かかるため、ゲートウェイのオーバーヘッドが体感レベルで差になるケースは少ないです。スループットよりも、運用コストや連携のしやすさで選ぶのが現実的だと思います。


どれを選ぶか
#

Langfuse連携のしやすさを重視するなら:

こんな場合おすすめ
Langfuse連携を最小設定でやりたいLiteLLM(ネイティブ連携、トレースが見やすい)
開発からスモールな本番まで一気通貫で使いたいLiteLLM
すでにKongを運用している・エンタープライズ実績を重視Kong

まず手元で動かして感触を掴みたいなら:

Bifrostは現時点でLangfuse連携のトレース品質では他製品に劣りますが、npx一発で起動できる手軽さは際立っています。本番導入前の評価・プロトタイピング用途では有力な選択肢です。

こんな場合おすすめ
素早く試してBifrostを評価したいBifrostnpxで即起動、設定最小)

まとめ
#

Langfuse連携のしやすさという観点では、現時点ではLiteLLMが最も使いやすいという結論になりました。ネイティブサポートによる設定のシンプルさと、フラットなトレース表示が決め手です。

一方でBifrostは手軽に試せることが強みです。トレース品質の問題はissue対応中のため今後改善される可能性があり、引き続き注目したいツールです。

各製品の詳細なセットアップ手順は既存の記事をご参照ください:LiteLLM on Google Cloud / Kong AI Gateway + Langfuse