TruLensでLLMアプリの失敗を追跡可能な評価に変える
プロジェクト概要:LLM 実験と AI エージェントの評価と追跡。トレースは OpenTelemetry ネイティブであるため、トレースはあらゆる OTLP バックエンドに移植可能で、評価はトレースが到着するとき、または事後にデータセット上で実行されます。
ひと目でわかる
- これは何?
- truera/trulensのREADMEをもとに、OpenTelemetryのトレース、LLM評価、版比較、バッチ実行を導入判断の単位へ分解します。
- 誰に向いている?
- TruLensは、LLMアプリやエージェントの入力、出力、検索、ツール呼び出し、トークン、コストを追跡し、版ごとの評価を比較したいチームに向きます。READMEが示す精度や導入実績は自報値として扱い、自分のデータと人手評価で再確認してください。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 3 日前です。
- 何の言語で書かれている?
- 主に Python です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
LLMアプリの失敗箇所を記録する出発点
TruLensは、LLM実験とAIエージェントの評価および追跡を目的とするオープンソースのPythonプロジェクトです。READMEは、エージェントがどこで失敗し、品質を落とさずにどこでコストを減らせるかを見つける道具として説明しています。ここでの主役は、回答の印象を後から採点することだけではありません。アプリの処理を観測可能な単位へ分け、判断材料を残すことです。\n\nREADMEによれば、関数呼び出し、LLM生成、検索、ツール実行を構造化されたOpenTelemetryのスパンとして扱えます。入力、出力、レイテンシ、トークン、コストをステップごとに記録するため、悪い回答の原因を追いやすくなります。観測できる項目と実際の保存先、保持期間は利用環境で決める必要があり、計測できることだけで品質改善が完了するわけではありません。
OTLPへ運べるトレースと既存基盤の接点
TruLensのトレーシングはOpenTelemetryを基盤にしています。READMEは、トレースが移植可能で、OTLP互換のバックエンドへ送れると説明しています。例としてJaeger、Grafana Tempo、Datadogが挙げられており、既存の観測基盤へ接続する設計を検討できます。独自形式に閉じた記録を増やしたくないチームには、出力形式を合わせられる点が判断材料になります。\n\nPythonの例では、instrumentデコレーターにスパン種別と属性を指定し、検索語や取得したコンテキストを記録しています。自分のアプリへ組み込む際は、入力文、検索結果、ツール引数、応答のどこまでを保存するかを先に決めます。個人情報や秘密情報が混じる場合、バックエンドのアクセス制御とマスキングは別の審査事項です。READMEは相互運用性を示しますが、組織の環境で接続が済んだことを保証するものではありません。
エージェント評価を七つの観点に分ける
READMEには、エージェント向けに七つの評価器が紹介されています。LogicalConsistencyは推論の一貫性、ExecutionEfficiencyは冗長な手順や不要な再試行、PlanAdherenceは計画どおりに実行したか、PlanQualityは結果とは別に計画そのものの質を見ます。ToolSelectionは仕事に合うツールを選んだか、ToolCallingは引数と出力解釈が妥当か、ToolQualityは外部ツールやサービスの信頼性を測る位置付けです。\n\nこの分類は、エージェントの正解率だけでは見えにくい失敗を分解する枠組みになります。ただし、各評価器の閾値、対象データ、判定誤差はアプリの目的に依存します。計画に従ったが計画自体が悪い、正しいツールを選んだが外部サービスが失敗した、といった事象を別の問題として扱えるかを確認します。導入時は人手ラベル付きの小さな評価セットを作り、自動評価との違いを記録します。
インライン評価と後処理バッチを使い分ける
評価は、アプリの実行と並行して行うインライン方式、保存済みのデータを後から処理する方式、オフラインのバッチ方式に対応するとREADMEにあります。インラインの例では、tru_recorderでアプリの問い合わせを記録します。バッチの例ではRunConfigに実行名、データセット名、入力欄、ワーカー数を指定し、実行後に関連性やgroundednessを計算しています。\n\nインライン方式は新しい応答をすぐ見たいときに便利ですが、推論や評価のコストが本番処理へ重なる可能性があります。バッチ方式は固定したデータで版を比較しやすく、評価器を変更して再計算する用途にも向きます。どちらを選ぶかは速度だけでなく、評価結果を意思決定へ使うタイミング、データの保持方法、失敗時の再実行単位で決めます。READMEのコードは流れを示す例であり、運用設定の完成形ではありません。
MCPとSelector APIで評価対象を絞る
Model Context Protocolのツール呼び出しも計測対象です。READMEの例では、MCPスパン種別でツール名、引数、出力、レイテンシを記録しています。エージェントが外部ツールへ依存する場合、回答だけを見るより、どのツールをどの引数で呼び、どれだけ時間がかかったかを追跡できます。\n\nSelector APIでは、記録の入力やコンテキストなど、評価へ渡すスパン属性を選びます。例ではContext RelevanceというMetricを作り、record inputとcontextをセレクターで指定しています。柔軟に対象を変えられる一方、選択先が曖昧だと評価の意味も揺れます。評価名、対象属性、使ったデータセット、プロバイダーを実行記録に残し、版をまたいで同じ条件を再現できるようにします。
プロバイダーとフレームワークの依存関係
READMEは、OpenAIとAzure OpenAI、LiteLLM、Google Gemini、AWS Bedrock、Snowflake Cortex、HuggingFace向けのプロバイダーパッケージを案内しています。LangChainモデル向けのパッケージもあり、アプリフレームワークとしてLangChain、LangGraph、LlamaIndexの統合が示されています。基本パッケージに加えて必要なプロバイダーやアプリ連携を選ぶ構成です。\n\nインストールの入口はpip install trulensです。特定の評価プロバイダーを使う場合は、trulensと対応するtrulens-providersパッケージを一緒に入れる例が示されています。実際の導入では、利用するモデルサービスの認証、API料金、データ送信先、依存パッケージの版を切り分けます。プロバイダーが一覧にあることは、組織の契約やネットワークから利用できることを意味しません。開発用の資格情報と本番の資格情報を分け、最初は評価用データだけで接続を確認します。
READMEの評価数値を自分の基準へ戻す
READMEには、Agent GPAによるエージェントエラー検出95パーセント、LLM-AggreFactでのGroundedness F1が0.81、Context relevance NDCG@5が0.93、敵対的な近似文との勝敗比が4.2対1という数値が掲載されています。これらはREADMEに掲げられた評価結果であり、特定のデータセット、比較対象、測定条件に結び付いた自報値として読みます。全アプリで同じ精度になるという意味ではありません。\n\nREADMEは、人手アノテーションを基準にジャッジを評価すると説明し、TRAIL/GAIA、LLM-AggreFactなどへのリンクを示しています。導入可否を決めるときは、この数値をそのまま採用条件にせず、自社の質問、検索コーパス、失敗分類、人手判定で再測定します。TruLensの採用チームとしてWalmart Global Techなどを挙げる記述もありますが、他社名は自分の運用結果の代わりにはなりません。MITライセンスとリリース履歴を確認し、観測データの扱いを含む実装レビューを終えてから範囲を広げます。
編集部の結論
TruLensは、LLMアプリやエージェントの入力、出力、検索、ツール呼び出し、トークン、コストを追跡し、版ごとの評価を比較したいチームに向きます。READMEが示す精度や導入実績は自報値として扱い、自分のデータと人手評価で再確認してください。導入前にOTLPバックエンド、プロバイダー、個人情報の記録範囲、評価の再現手順を決めることが必要です。
コミュニティノート