Langfuse: データを外に出さず LLM を観測する OSS 基盤

Langfuse: データを外に出さず LLM を観測する OSS 基盤

Langfuse は、LLM アプリの挙動を記録・評価・改善するための OSS プラットフォームです。トレース収集、プロンプト管理、スコアリング、データセット、オンライン / オフライン評価を 1 つに束ねます。

本連載の他記事で扱った LangSmith や Phoenix と並ぶ主要ツールのひとつで、特に セルフホストが現実的に運用できる 点で、他と性格が異なります。

作っているのは誰か、ライセンスは何か

Langfuse はドイツ・ベルリン発のスタートアップ Langfuse GmbH が開発しています。コードは github.com/langfuse/langfuse にあり、ee/ 配下を除く本体は MIT ライセンス です。

提供形態は 2 系統あります。

重要なのは、商用機能の多くがクラウド独占ではなく、セルフホストでも使える点です。トレース、スコア、データセット、プロンプト管理、評価、ユーザー / セッション追跡はすべて MIT ライセンス側に含まれます。

なぜセルフホストが重要か

LLM アプリの開発で、トレースには 本番ユーザーのプロンプトと応答がそのまま載ります。問い合わせ内容、個人情報、社内文書の抜粋などが含まれやすく、これを第三者 SaaS に送れないチームが一定数います。

典型的には以下です。

LangSmith はこうした要件に対して長らくマネージド版しか提供していませんでした。Langfuse はここを埋めるポジションを取り、「LangSmith の OSS 代替」として知られるようになっています。

GDPR のデータ主権 (data sovereignty) 要件は「どの国のサーバに保存されるか」「誰が復号できるか」まで問うため、US 本社のクラウドに流す構成は説明が難しくなります。自社 VPC 内で完結する Langfuse のセルフホストは、法務とのやり取りを数ラウンド減らせます。

主な機能

Langfuse のオブジェクトモデルは次のとおりです。

これらが 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() を忘れると送信前に終了するので注意してください。

向くケース・向かないケース

向くのは次のような場合です。

一方、向かないのは次のケースです。

競合比較

ツール 立ち位置 セルフホスト 強み
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 と組み合わせると、複数ベンダー横断で同じスキーマのトレースが取れて便利です。

ハマりポイント

いくつか先に書いておきます。

価格と無料枠

ユニットは「トレース + 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 でできます。

関連記事


Singularity Society はテクノロジー集団として MulmoClaude / MulmoTerminal / MulmoCast を開発しています。エンジニア・起業家向けの実践プログラム BootCamp も運営しています。

この記事をシェア

関連記事

記事一覧に戻る