langfuse
🪢 Open source LLM engineering platform: LLM Observability, metrics, evals, prompt management, playground, datasets. Integrates with OpenTelemetry, Langchain, OpenAI SDK, LiteLLM, and more. 🍊YC W23
AIアプリケーション(大規模言語モデルを使ったアプリ)の動作を追跡・評価・改善するためのオープンソースの開発支援プラットフォームです。
・企業:AIチャットボットや文書処理などのLLMアプリケーションの品質を監視し、プロンプトの管理やA/Bテストを一元的に行うことで、安定したAIサービスを提供できます。 ・スタートアップ:LLMの呼び出しログやコスト、応答品質を可視化でき、限られたリソースで効率的にAI機能を改善できます。 ・個人事業主・フリーランス:自分のAIアプリの動作状況をダッシュボードで確認でき、プロンプトの調整や評価を手軽に行えます。
Weights & BiasesやDatadogのLLM監視機能は利用量に応じた課金が発生しますが、Langfuseはセルフホストで無料運用でき、LangChainやOpenAI SDKとの連携も充実しているため、追加コストなく本格的なLLM運用管理が始められます。
LangfuseはオープンソースのLLMエンジニアリングプラットフォームです。チームが協力してAIアプリケーションを開発、監視、評価、そしてデバッグすることを支援します。Langfuseは数分でセルフホスト可能で、本番環境で実証済みです。
✨ コア機能
-
LLMアプリケーションのオブザーバビリティ: アプリをインストルメント化してLangfuseへのトレース取り込みを開始し、LLM呼び出しやリトリーバル、エンベディング、エージェントアクションなどのアプリ内の関連ロジックを追跡します。複雑なログやユーザーセッションを検査・デバッグできます。インタラクティブなデモで実際の動作をお試しください。
-
プロンプト管理は、プロンプトを一元的に管理、バージョン管理し、チームで協力して反復改善することを支援します。サーバーとクライアント両方の強力なキャッシュにより、アプリケーションにレイテンシを追加することなくプロンプトを改善できます。
-
評価はLLMアプリケーション開発ワークフローの要であり、Langfuseはあなたのニーズに適応します。LLM-as-a-judge、ユーザーフィードバック収集、手動ラベリング、API/SDKによるカスタム評価パイプラインをサポートしています。
-
データセットにより、LLMアプリケーションを評価するためのテストセットやベンチマークが可能になります。継続的な改善、デプロイ前テスト、構造化された実験、柔軟な評価、LangChainやLlamaIndexなどのフレームワークとのシームレスな統合をサポートしています。
-
LLM Playgroundは、プロンプトとモデル設定のテストと反復のためのツールで、フィードバックループを短縮し開発を加速します。トレースで悪い結果を見つけた場合、Playgroundに直接ジャンプして改善を繰り返すことができます。
-
包括的なAPI: LangfuseはLangfuseがAPIを通じて提供するビルディングブロックを使用して、独自のLLMOpsワークフローを構築するために頻繁に使用されます。OpenAPI仕様、Postmanコレクション、Python・JS/TS用の型付きSDKが利用可能です。
📦 Langfuseのデプロイ
Langfuse Cloud
Langfuseチームによるマネージドデプロイメント。無料枠が充実しており、クレジットカード不要です。
Langfuseのセルフホスト
自社インフラでLangfuseを実行:
-
ローカル(docker compose): Docker Composeを使用して、5分で自分のマシンにLangfuseを実行できます。
# 最新のLangfuseリポジトリのコピーを取得 git clone https://github.com/langfuse/langfuse.git cd langfuse # Langfuseのdocker composeを実行 docker compose up -
VM: Docker Composeを使用して、単一の仮想マシンでLangfuseを実行します。
-
Kubernetes (Helm): Helmを使用してKubernetesクラスタでLangfuseを実行します。これが推奨される本番デプロイメント方式です。
アーキテクチャと設定オプションの詳細はセルフホスティングドキュメントをご覧ください。
🔌 インテグレーション
主要インテグレーション:
| インテグレーション | 対応環境 | 説明 |
|---|---|---|
| SDK | Python, JS/TS | SDKを使用した手動インストルメンテーションで、完全な柔軟性を実現します。 |
| OpenAI | Python, JS/TS | OpenAI SDKのドロップイン置換を使用した自動インストルメンテーション。 |
| Langchain | Python, JS/TS | Langchainアプリケーションにコールバックハンドラを渡すことによる自動インストルメンテーション。 |
| LlamaIndex | Python | LlamaIndexのコールバックシステムを介した自動インストルメンテーション。 |
| Haystack | Python | Haystackのコンテンツトレーシングシステムを介した自動インストルメンテーション。 |
| LiteLLM | Python, JS/TS(プロキシのみ) | GPTのドロップイン置換として任意のLLMを使用可能。Azure、OpenAI、Cohere、Anthropic、Ollama、VLLM、Sagemaker、HuggingFace、Replicate(100以上のLLM)に対応。 |
| Vercel AI SDK | JS/TS | React、Next.js、Vue、Svelte、Node.jsでAI搭載アプリケーションを構築するためのTypeScriptツールキット。 |
| Mastra | JS/TS | AIエージェントおよびマルチエージェントシステムを構築するためのオープンソースフレームワーク。 |
| API | パブリックAPIを直接呼び出し可能。OpenAPI仕様あり。 |
Langfuseと統合されたパッケージ:
| 名前 | 種別 | 説明 |
|---|---|---|
| Instructor | ライブラリ | 構造化されたLLM出力(JSON、Pydantic)を取得するためのライブラリ |
| DSPy | ライブラリ | 言語モデルのプロンプトと重みを体系的に最適化するフレームワーク |
| Mirascope | ライブラリ | LLMアプリケーション構築のためのPythonツールキット |
| Ollama | モデル(ローカル) | オープンソースLLMを自分のマシンで簡単に実行 |
| Amazon Bedrock | モデル | AWS上で基盤モデルとファインチューニングモデルを実行 |
| AutoGen | エージェントフレームワーク | 分散エージェントを構築するためのオープンソースLLMプラットフォーム |
| Flowise | チャット/エージェント UI | カスタマイズされたLLMフローのためのJS/TSノーコードビルダー |
| Langflow | チャット/エージェント UI | LangChain用のPythonベースUI。react-flowで設計されており、フローの実験とプロトタイピングを簡単に行えます。 |
| Dify | チャット/エージェント UI | ノーコードビルダーを備えたオープンソースのLLMアプリ開発プラットフォーム |
| OpenWebUI | チャット/エージェント UI | セルフホスト型およびローカルモデルを含む様々なLLMランナーをサポートするセルフホスト型LLMチャットWeb UI |
| Promptfoo | ツール | オープンソースのLLMテストプラットフォーム |
| LobeChat | チャット/エージェント UI | オープンソースのチャットボットプラットフォーム |
| Vapi | プラットフォーム | オープンソースの音声AIプラットフォーム |
| Inferable | エージェント | 分散エージェントを構築するためのオープンソースLLMプラットフォーム |
| Gradio | チャット/エージェント UI | チャットUIなどのWebインターフェースを構築するためのオープンソースPythonライブラリ |
| Goose | エージェント | 分散エージェントを構築するためのオープンソースLLMプラットフォーム |
| smolagents | エージェント | オープンソースのAIエージェントフレームワーク |
| CrewAI | エージェント | エージェント間の連携とツール使用のためのマルチエージェントフレームワーク |
🚀 クイックスタート
アプリをインストルメント化してLangfuseへのトレース取り込みを開始し、LLM呼び出しやリトリーバル、エンベディング、エージェントアクションなどのアプリ内の関連ロジックを追跡します。複雑なログやユーザーセッションを検査・デバッグできます。
1️⃣ 新しいプロジェクトを作成
- Langfuseアカウントを作成するか、セルフホストします
- 新しいプロジェクトを作成します
- プロジェクト設定で新しいAPI認証情報を作成します
2️⃣ 最初のLLM呼び出しを記録
@observe() デコレータを使うと、あらゆるPython LLMアプリケーションのトレースが簡単になります。このクイックスタートでは、LangfuseのOpenAIインテグレーションも使用して、すべてのモデルパラメータを自動的にキャプチャします。
[!TIP] OpenAIを使っていませんか? 他のモデルやフレームワークの記録方法についてはドキュメントをご覧ください。
pip install langfuse openai
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-..."
LANGFUSE_BASE_URL="https://cloud.langfuse.com" # 🇪🇺 EUリージョン
# LANGFUSE_BASE_URL="https://us.cloud.langfuse.com" # 🇺🇸 USリージョン
from langfuse import observe
from langfuse.openai import openai # OpenAIインテグレーション
@observe()
def story():
return openai.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "What is Langfuse?"}],
).choices[0].message.content
@observe()
def main():
return story()
main()
3️⃣ Langfuseでトレースを確認
言語モデルの呼び出しやその他のアプリケーションロジックをLangfuseで確認できます。
[!TIP]
Langfuseのトレースについて詳しく学ぶか、インタラクティブデモをお試しください。
⭐️ スターをお願いします
💭 サポート
質問への回答を見つけるには:
- まずドキュメントをご確認ください。包括的な内容で、メンテナンスに多大な時間を投資しています。GitHubを通じてドキュメントの編集提案も可能です。
- 最もよくある質問はLangfuse FAQでお答えしています。
- 「AIに聞く」を使って、質問への即座の回答を得ることができます。
サポートチャネル:
- GitHub Discussionsの公開Q&Aでどんな質問でもお寄せください。 質問を理解するのに役立つ詳細情報(コードスニペット、スクリーンショット、背景情報など)をできるだけ含めてください。
- GitHub Discussionsで機能をリクエストできます。
- GitHub Issuesでバグを報告できます。
- 緊急の問い合わせについては、アプリ内のチャットウィジェットからお問い合わせください。
🤝 コントリビュート
あなたの貢献を歓迎します!
- GitHub Discussionsでアイデアに投票してください。
- Issueを起票・コメントしてください。
- PRを開いてください - 開発環境のセットアップ方法についてはCONTRIBUTING.mdをご覧ください。
🥇 ライセンス
このリポジトリは ee フォルダを除きMITライセンスです。詳細はLICENSEとドキュメントをご覧ください。
依存関係
このコードベースはLinux Alpineイメージ(ソース)をベースにしたDockerコンテナでデプロイしています。Dockerfileはweb/Dockerfileとworker/Dockerfileにあります。
⭐️ スター履歴
❤️ Langfuseを使用しているオープンソースプロジェクト
Langfuseを使用しているトップのオープンソースPythonプロジェクト(スター数順)(ソース):
🔒 セキュリティとプライバシー
データセキュリティとプライバシーを重視しています。詳細はセキュリティとプライバシーページをご覧ください。
テレメトリ
デフォルトでは、Langfuseはセルフホストインスタンスの基本的な使用統計を中央サーバー(PostHog)に自動的に報告します。
これにより以下が可能になります:
- Langfuseの使用状況を把握し、最も関連性の高い機能を改善する。
- 社内外(資金調達など)の報告のために全体的な使用状況を追跡する。
テレメトリには、生のトレース、プロンプト、オブザベーション、スコア、データセットの内容は含まれません。収集される正確なフィールド、送信先、実装リファレンスはテレメトリドキュメントに記載しています。
Langfuse OSSでは、TELEMETRY_ENABLED=false を設定することでオプトアウトできます。