top of page

All post


Langfuse セルフホスト|OSS vs Enterprise機能比較
はじめに Langfuseは、LLMアプリケーションの観測性、プロンプト管理、評価を一元管理できるオープンソースプラットフォームです。セルフホストでの運用が可能で、多くの企業が自社環境での導入を進めています。 セルフホストには2つの選択肢があります OSS版(無料・MIT License) : すべてのコア機能が無制限で利用可能 Enterprise版(ライセンスキー必要) : OSS版の機能に加え、Enterpriseグレードのセキュリティ・管理機能を提供 本記事ではEnterprise版で追加される主要な機能と、その具体的なユースケースを詳しく解説します。「OSS版で十分なのか?」「Enterprise版が必要になるのはどんな時か?」という疑問に答えます。 OSS版 vs Enterprise版 重要なポイント:コア機能は完全に同じ まず理解すべき重要なポイントは、 OSS版でもEnterprise版でも、Langfuseのコア機能に一切の制限がない ということです。 両バージョンとも以下が利用可能: トレーシング(エージェント対応) プロ
2025年12月3日読了時間: 9分


Langfuseのマルチモーダル対応:画像・音声ファイルのトレース添付機能がGAに
はじめに LLMアプリケーション開発において、テキストだけでなく画像や音声などのマルチモーダルなデータを扱うケースが増えています。Langfuseは2024年8月に初めてマルチモーダルトレースのサポートを発表し、同年11月には画像、音声、PDFなどの添付ファイルにも対応する完全なマルチモーダルサポートを実現しました。 当該機能は長らくpreviewとされていましたが、先日GAとなったようです(※中の人がSlackでそう言ってました)。 そこで本記事では、Langfuseのマルチモーダル機能の概要、具体的な使い方、そして利用時の注意点について解説します。 Langfuseマルチモーダル機能の概要 たとえば画像ファイルを含んだトレースを送信した場合、LangfuseのWebUI上では以下のように表示されます。 このように、LLMを呼び出す際に画像データが含まれていた場合、テキストデータだけでなく画像データも同時に確認でき、改善活動の効率が大いに向上します。 (※余談ですが、gpt-4oは寿司ネタにそこまで詳しくないのかもしれません。上記画像にタコにみ
2025年12月2日読了時間: 6分


音声AIエージェントLiveKit × Langfuse連携 ~トレース分離問題の解決~
LiveKit Agentsは、WebRTCベースの音声AIアプリケーション開発フレームワークです。STT+LLM+TTSパイプラインでも約2.33秒という高速な応答を実現でき、プリエンプティブ生成やストリーミングTTSなどの最適化技術により自然な会話が可能です。
しかし、Langfuseを使った観測可能性の実装時に、各アクティビティ(agent_session、user_turn、agent_turnなど)が独立したトレースとして記録される問題が発生しました。これは非同期処理でOpenTelemetryのコンテキストが適切に伝播されないことが原因です。
解決策として、プログラム起動時にカスタムトレースIDを生成し、NonRecordingSpanを使ってグローバルコンテキストとして明示的に設定しました。これにより、すべてのスパンが同一トレースIDを継承し、階層化されたトレース構造を実現できました。非同期処理を多用するアプリケーションでは、コンテキストの明示的な管理が重要です。
2025年12月1日読了時間: 11分


Langfuseデータセット構築ガイド:UI・CSV・SDKの徹底比較
先日、新規アプリケーションのプロンプトを検討するにあたり、トレースデータ(ログ)が存在しない状態からデータセットを作成する必要がありました。 ある程度のデータ量を用意したかったため、手動入力を避ける方法(SDK や CSV)を調査・検証しました。 本記事では、 基本となる UI での登録手順と、今回試した一括登録の手順をそれぞれ整理し、使い勝手や特徴を比較した備忘録 として残します。 利用バージョン Langfuse : v3.127.0 OSS Python SDK : 3.9.0 全体の流れ Dataset が利用できるまでに以下の手続きが必要です。 データセット(dataset)の作成 データセットアイテム(items)の作成 本記事は、公式ドキュメントのこちらの 記事 を参考に実施しました。 1.データセット(dataset)の作成 UIを利用する方法 Datasets へ遷移し、[+ New Dataset] をクリックすることで新規のデータセットが作成できます。 Name のみ指定し、[Create dataset] で作成完了です。
2025年11月13日読了時間: 5分


Observation Types で mask オプション内での再起呼び出しを回避する
以前、Langfuse の mask オプションを利用する際のトレース保存方法について解説しました。( 該当記事 ) 当時、 mask オプションに設定した関数内でトレースを保存しようとすると、該当の関数が再帰的に呼び出されてしまう問題がありました。該当記事内では、グローバル変数を用いて制御しましたがあまりスマートな方法とは言えません。 しかし、この課題をよりスマートに解決出来そうなアップデートが行われました。 実際にどのように解決していけるか、試してみたいと思います。 以前のコードと課題 以前のコードでは、masking_function が再帰的に呼び出されないよう、グローバル変数で制御していました。 require_mask = True def masking_function(data: any, kwargs) -> any: global require_mask if require_mask and isinstance(data, str): try: require_mask = False # PII フィルター適用
2025年10月28日読了時間: 4分
bottom of page