Agent Observability の用語と概念
This product is not supported for your selected
Datadog site. (
).
概要
Agent Observability UI には、会話のパフォーマンスをトラブルシューティングし、製品全体のデータを関連付けるためのツールが多数用意されています。これらを使用して、LLM (大規模言語モデル) の問題を特定し、解決することができます。
| 概念 | 説明 |
|---|
| スパン | スパンとは、LLM アプリケーション内で行われる操作を表す作業単位であり、トレースの構成要素です。 |
| トレース | トレースは、LLM アプリケーションでのリクエスト処理にかかわる操作を表し、1 つ以上のネストされたスパンで構成されます。ルートスパンはトレース内の最初のスパンであり、トレースの開始と終了を示します。 |
| 評価 | 評価は、LLM アプリケーションのパフォーマンスを測定する手法です。たとえば、回答がない場合やトピックの関連性といった品質チェックは、LLM アプリケーションで追跡できる評価の種類です。 |
スパン
スパンは、以下の属性で構成されます。
- 名前
- 開始時間と継続時間
- エラーの種類、メッセージ、トレースバック
- LLM のプロンプトや補完などの入力と出力
- メタデータ (例:
temperature、max_tokens などの LLM パラメーター) - メトリクス (例:
input_tokens や output_tokens) - タグ
スパンの種類
Agent Observability では、スパンが実行している作業の種類を定義する、スパン種別によってスパンを分類します。これにより、LLM アプリケーションによってどのような操作が実行されているかについて、より詳細な洞察を得ることができます。
Agent Observability は、次のスパン種別をサポートしています。
| 種別 | 内容 | 有効なルートスパンかどうか | 例 |
|---|
| LLM | LLM への呼び出し。 | はい | OpenAI GPT-4 などのモデルへの呼び出し。 |
| ワークフロー | LLM の呼び出しやその周辺のコンテキスト操作を含む、あらかじめ決められた操作のシーケンス。 | はい | URL を受け取り、ページの要約を返すサービス。これには、ページ取得のためのツール呼び出し、テキスト処理タスク、LLM による要約が含まれます。 |
| Agent | 自律エージェントによる一連の決定と操作。通常、ネストされたワークフロー、LLM、ツール、タスク呼び出しで構成されます。 | はい | 顧客の質問に答えるチャットボット。 |
| ツール | LLM が生成した引数で外部プログラムやサービスに呼び出しを行うこと。 | いいえ | Web 検索 API や電卓への呼び出し。 |
| タスク | 外部サービスを呼び出さないスタンドアロンのステップ。 | いいえ | データの前処理ステップ。 |
| 埋め込み | 埋め込みを返すモデルや関数への呼び出し。 | いいえ | text-embedding-ada-002 への呼び出し。 |
| 取得 | 外部のナレッジベースからデータを取得する操作。 | いいえ | ベクトルデータベースへの呼び出しで、ランク付けされた文書の配列を返します。 |
アプリケーションからスパンを作成する手順およびコード例は、Agent Observability SDK for Python のドキュメントでスパンのトレースを参照してください。
LLM スパン
LLM スパンは、LLM への呼び出しを表し、入力と出力はテキストで表されます。
トレースには LLM スパンが 1 つ含まれることがあり、その場合は LLM の推論操作を表します。
LLM スパンは通常、子スパンを持たず、LLM への直接呼び出しを表すスタンドアロンの操作です。
ワークフロースパン
ワークフロースパンは、静的な操作のシーケンスを表します。ワークフローを使用して、LLM 呼び出しと、ツール呼び出し、データ取得、その他のタスクなどの呼び出しを補助するコンテキスト依存の操作をグループ化します。
ワークフロースパンの多くは、標準シーケンスで構成されるトレースのルートスパンとなります。たとえば、関数が arXiv の論文リンクを受け取り、要約を返すことができます。このプロセスには、論文を取得するためのツール呼び出し、テキスト処理タスク、および LLM による要約などが含まれます。
ワークフロースパンは、ワークフローシーケンス内の子ステップを表す任意のスパンを子として持つことができます。
エージェントスパン
エージェントスパンは、大規模言語モデルが入力に基づいて操作を決定および実行する、動的な操作のシーケンスを表します。たとえば、エージェントスパンは、ReAct エージェントによって制御される一連のリーズニングステップを表すことができます。
エージェントスパンは、自律エージェントや推論エージェントを表すトレースのルートスパンとなることがよくあります。
エージェントスパンは、推論エンジンによって制御される子ステップを表す任意のスパンを子として持つことができます。
ツールスパンは、ワークフローやエージェントにおいて、Web API やデータベースなどの外部プログラムやサービスへの呼び出しを含むスタンドアロンステップを表します。
ツールスパンは通常、子スパンを持たず、ツールの実行を表すスタンドアロン操作です。
タスクスパン
タスクスパンは、ワークフローやエージェントにおいて、外部サービスへの呼び出しを伴わないスタンドアロンステップを表します。たとえば、プロンプトを LLM に送信する前のデータ無害化ステップなどです。
タスクスパンは通常、子スパンを持たず、ワークフローやエージェント内のスタンドアロンステップです。
埋め込みスパン
埋め込みスパンはツールスパンのサブカテゴリであり、埋め込みを作成するための埋め込みモデルまたは関数へのスタンドアロンの呼び出しを表します。たとえば、埋め込みスパンを使用して、OpenAI の埋め込みエンドポイントへの呼び出しをトレースできます。
埋め込みスパンはタスクスパンを子として持つことができますが、通常は子を持ちません。
取得スパン
取得スパンはツールスパンのサブカテゴリであり、外部のナレッジベースから返されるドキュメントのリストを含むベクトル検索操作を表します。たとえば、取得スパンを使用して、特定のトピックに関するユーザープロンプトを補強する関連ドキュメントを収集するために、ベクトルストアに対する類似性検索をトレースすることができます。
埋め込みスパンと併用することで、取得スパンは、RAG (取得拡張生成) 操作の可視化を提供することができます。
取得スパンは通常、子スパンを持たず、スタンドアロンの取得ステップを表します。
トレース
Agent Observability は、複雑さが異なる LLM アプリケーションの可観測性をサポートします。トレースの構造と複雑さに応じて、Agent Observability の以下の機能を使用できます。
LLM 推論のモニタリング
LLM 推論トレースは単一の LLM スパンで構成されます。
個々の LLM 推論をトレースすると、Agent Observability の基本機能が有効になり、以下のことが可能になります。
- LLM 呼び出しへの入力と出力を追跡します。
- LLM 呼び出しのトークン使用状況、エラーレート、レイテンシーを追跡します。
- モデルおよびモデルプロバイダー別に重要なメトリクスの内訳を示します。
詳細な例については、LLM 呼び出しの作成とトレース方法を示す LLM モニタリング Jupyter ノートブックをご覧ください。
SDK は、特定のプロバイダーへの LLM 呼び出しを自動的にキャプチャするための統合機能を提供します。詳細については、自動インスツルメンテーションを参照してください。サポートされていない LLM プロバイダーを使用している場合は、アプリケーションを手動でインスツルメンテーションする必要があります。
LLM ワークフローのモニタリング
ワークフロートレースは、ネストされた LLM、タスク、ツール、埋め込み、および取得のスパンを持つルートワークフロースパンで構成されます。
ほとんどの LLM アプリケーションには、LLM 呼び出しを囲む操作が含まれており、たとえば外部 API へのツール呼び出しや前処理タスクステップなど、アプリケーション全体のパフォーマンスに大きな役割を果たします。
LLM 呼び出しとコンテキストのあるタスクまたはツール操作をワークフロースパンで一緒にトレースすることで、LLM アプリケーションのより詳細な洞察とより全体的なビューを得ることができます。
詳細な例については、ツール呼び出しと LLM への呼び出しを含む複雑で静的な一連のステップを作成し、トレースする方法を示す LLM モニタリング Jupyter ノートブック、または RAG ワークフローの作成、トレース、評価の方法を説明する LLM モニタリング Jupyter ノートブックをご覧ください。
LLM エージェントのモニタリング
エージェントモニタリングトレースは、ネストされた LLM、タスク、ツール、埋め込み、取得、およびワークフロースパンを持つルートエージェントスパンで構成されています。
LLM アプリケーションに、意思決定などの静的なワークフローでは捕捉できない複雑な自律ロジックが含まれている場合、LLM エージェントを使用している可能性が高いです。エージェントは、ユーザーの入力に応じて複数の異なるワークフローを実行する場合があります。
LLM アプリケーションをインスツルメンテーションして、単一の LLM エージェントによって実行されたすべてのワークフローとコンテキスト操作をエージェントトレースとしてまとめてトレースすることができます。
詳細な例については、ツールを呼び出し、データに基づいて意思決定を行う LLM 搭載のエージェントを作成し、トレースする方法を示す LLM モニタリング Jupyter ノートブックをご覧ください。
評価
Agent Observability は、LLM 会話の品質、安全性、有効性を評価するためのマネージド評価および品質チェックを提供します。評価を使用することで、会話のパフォーマンスを把握し、LLM アプリケーションの応答を強化できます。これにより、ユーザーエクスペリエンスが向上し、価値のある正確な出力が保証されます。
Datadog は、評価のためのさまざまなオプションを提供しています。
さらに、Datadog の Sensitive Data Scanner は Agent Observability とネイティブに統合されているため、入力および出力に含まれる機密データを確実にスキャンして削除することができます。
参考資料