Langfuse は、LLM アプリの挙動を記録・評価・改善するための OSS プラットフォームです。トレース収集、プロンプト管理、スコアリング、データセット、オンライン / オフライン評価を 1 つに束ねます。
本連載の他記事で扱った LangSmith や Phoenix と並ぶ主要ツールのひとつで、特に セルフホストが現実的に運用できる 点で、他と性格が異なります。
作っているのは誰か、ライセンスは何か
Langfuse はドイツ・ベルリン発のスタートアップ Langfuse GmbH が開発しています。コードは github.com/langfuse/langfuse にあり、ee/ 配下を除く本体は MIT ライセンス です。
提供形態は 2 系統あります。
- クラウド版: US / EU リージョンのマネージドサービス。無料枠あり
- セルフホスト版: docker compose / Kubernetes (Helm) / Terraform テンプレートで AWS・GCP・Azure に展開可能
重要なのは、商用機能の多くがクラウド独占ではなく、セルフホストでも使える点です。トレース、スコア、データセット、プロンプト管理、評価、ユーザー / セッション追跡はすべて MIT ライセンス側に含まれます。
なぜセルフホストが重要か
LLM アプリの開発で、トレースには 本番ユーザーのプロンプトと応答がそのまま載ります。問い合わせ内容、個人情報、社内文書の抜粋などが含まれやすく、これを第三者 SaaS に送れないチームが一定数います。
典型的には以下です。
- EU で GDPR の対象になるサービス
- 医療・金融・法務など、業界規制でデータ越境を禁じられている領域
- 大企業の社内アシスタント(社員発話を外に出せない)
- 政府・公共系のプロジェクト
LangSmith はこうした要件に対して長らくマネージド版しか提供していませんでした。Langfuse はここを埋めるポジションを取り、「LangSmith の OSS 代替」として知られるようになっています。
GDPR のデータ主権 (data sovereignty) 要件は「どの国のサーバに保存されるか」「誰が復号できるか」まで問うため、US 本社のクラウドに流す構成は説明が難しくなります。自社 VPC 内で完結する Langfuse のセルフホストは、法務とのやり取りを数ラウンド減らせます。
主な機能
Langfuse のオブジェクトモデルは次のとおりです。
- Traces: 1 リクエストに対応する最上位の記録。ネストした Observation(span, generation, event)を持つ
- Scores: トレースや Observation に対する評価値。人手レビュー、コードベース評価器、LLM-as-a-judge の 3 種が主な入力源
- Datasets: 入出力ペアの集合。回帰テストや Experiments の対象になる
- Prompts: バージョン管理されたプロンプト。クライアント側キャッシュでレイテンシ劣化を抑える
- Evaluations: 到来する新規トレースへ自動で評価器を適用する機能(オンライン評価)
- Users / Sessions: トレースをユーザー ID やセッション ID で束ね、コスト・レイテンシ・満足度を人単位で見る
これらが 1 つのスキーマで繋がっているので、「スコアが低いトレースを集めてデータセット化し、プロンプトを変えて再評価」というループが UI だけで回ります。
最小動作例
Docker を使ってローカルで立ち上げます。
git clone --depth=1 https://github.com/langfuse/langfuse.git
cd langfuse
docker compose up -d
# http://localhost:3000 を開き、Organization と Project を作って API Key を発行
Python SDK から送信します。
pip install langfuse openai
import os
from langfuse import get_client
from langfuse.openai import openai # 自動計装された OpenAI クライアント
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-..."
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-..."
os.environ["LANGFUSE_HOST"] = "http://localhost:3000"
langfuse = get_client()
with langfuse.start_as_current_observation(
as_type="span", name="answer-question"
) as span:
response = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Langfuse って何?"}],
)
span.update(output=response.choices[0].message.content)
span.score(name="helpfulness", value=0.9)
langfuse.flush()
langfuse.openai を import するだけで OpenAI 呼び出しが自動でトレース化され、トークン使用量・コスト・レイテンシが Observation として記録されます。短命プロセスでは flush() を忘れると送信前に終了するので注意してください。
向くケース・向かないケース
向くのは次のような場合です。
- データを外部クラウドに出せない規制業界・EU 企業
- 本番運用に乗せる予定で、将来的に SOC2 や ISO27001 のエビデンスも用意したい
- プロンプトやデータセット管理まで含めて 1 ツールで完結させたい
- LangChain / LlamaIndex / OpenAI SDK / LiteLLM などを既に使っている
一方、向かないのは次のケースです。
- ローカルで数十行のスクリプトを一度書くだけ(オーバースペック)
- Jupyter 中心で、永続的な UI を立ち上げる必要がない(Phoenix のほうが素直)
- 既に Datadog や Grafana で LLM 以外の観測を厚く作り込んでおり、専用 UI を増やしたくない
競合比較
| ツール | 立ち位置 | セルフホスト | 強み |
|---|---|---|---|
| LangSmith | LangChain 社の公式 | 制限あり(有料プラン) | LangChain との密結合、スムーズな体験 |
| Langfuse | OSS LLM Ops 全部入り | MIT で完全対応 | データ主権、プロンプト管理、Experiments |
| Phoenix | OSS 可観測性寄り | MIT、ローカル実行容易 | OpenTelemetry と相性が良い、研究者向け |
Phoenix は「ローカルで深掘り分析」に強く、Langfuse は「本番でチームが継続運用」に強いという役割分担です。両方を併用し、Phoenix で探索して Langfuse で監視する構成も見かけます。
エコシステム統合
直接統合: OpenAI (Python / JS)、Anthropic、LangChain、LlamaIndex、Haystack、LiteLLM、Vercel AI SDK。フレームワーク支援: AutoGen、CrewAI、Instructor、DSPy、Ollama、Amazon Bedrock など 20 以上。
OpenTelemetry でも受けられるので、既存の OTel コレクタ経由で送る構成も取れます。LiteLLM と組み合わせると、複数ベンダー横断で同じスキーマのトレースが取れて便利です。
ハマりポイント
いくつか先に書いておきます。
- ClickHouse が必須: v3 以降はトレースストアに ClickHouse を使います。docker compose なら同梱ですが、Kubernetes では別途管理が要ります
- flush 忘れ: サーバレス関数や短命スクリプトで
flush()を呼ばず、送信前にプロセスが終わる事故が頻発します。context manager で囲むか、終了時フックで flush してください - プロンプト管理のキャッシュ TTL: デフォルトのクライアントキャッシュは短めで、頻繁に取りに行くと負荷が上がります。本番では TTL を伸ばす設定を検討
- バージョンアップ時のマイグレーション: v2 → v3 でストレージが変わりました。本番運用中なら公式のマイグレーションガイドを事前に通し読みしてください
- Observations の命名: span / generation / event を混在させると後で集計しづらくなります。チームで命名規約を決めておくと後で楽です
価格と無料枠
- Hobby: 無料。50k ユニット / 月、データ保持 30 日、ユーザー 2 名まで
- Core: $29 / 月。100k ユニット込み、保持 90 日、ユーザー無制限、超過は $8 / 100k
- Pro: $199 / 月。3 年保持、SOC2 / ISO27001 レポート、Teams Add-on で SSO
- Enterprise: $2,499 / 月。監査ログ、SCIM、SLA、専任サポート
- セルフホスト: ライセンス料は無料。インフラコストのみ
ユニットは「トレース + Observation + スコア」の総数で課金されるため、Observation の付け方次第で消費が変わる点は意識しておきたいところです。
まとめ
Langfuse は、「LLM の挙動をチームで継続観測・評価する基盤がほしい、ただしデータは自社に置きたい」という要求に正面から応える OSS です。MIT ライセンスで機能制限が少なく、ClickHouse を背後に据えた堅めの構成で、本番運用に耐えます。
まず無料クラウドで試し、本番運用の目処が立った時点でセルフホストに切り替える、という経路が現実的でしょう。GDPR 対象や規制業界であれば、最初からセルフホストで始める意思決定も十分に合理的です。
chaff grade との連携 — 決定論的スコアを trace に添える
Langfuse は trace に対して自由にスコアを添付できます。LLM-judge のスコアに加えて、chaffjs の grade が返す決定論的スコアも langfuse.score.create() で記録すると、ダッシュボードで両者を同じ軸で追えます。
import { Langfuse } from "langfuse";
import { grade } from "chaffjs/grade";
const result = await grade(output, { reference });
await langfuse.score.create({
traceId: traceId,
name: "chaff-grade",
value: result.score,
comment: result.reason,
});
実装例: isamu/lab: examples/evals/langfuse(push-score.mjs 参照)
LLM-judge と決定論採点のスコアを trace 単位で並べて見られると、「意見だけ落ちた回」「事実だけ落ちた回」の切り分けが dashboard でできます。
関連記事
- AI エージェント評価サーベイ論文を読み解く
- AI の評価って何?なぜ難しい?
- AI エージェントの evaluation (evals) 入門
- AI eval ツール: LangSmith
- AI eval ツール: Phoenix
- AI eval ツール: Ragas
Singularity Society はテクノロジー集団として MulmoClaude / MulmoTerminal / MulmoCast を開発しています。エンジニア・起業家向けの実践プログラム BootCamp も運営しています。
