This product is not supported for your selected Datadog site. ().

概要

Prompt Tracking は、プロンプトテンプレートとバージョンを LLM 呼び出しにリンクします。Prompt Tracking は、Agent Observability のトレース、スパン、Playground、およびプロンプトの作成とバージョン管理のための集中レジストリを提供する Prompt Management と連携して動作します。

Prompt Tracking では、以下のことが可能です。

  • LLM アプリケーションまたはエージェントで使用されるすべてのプロンプトを、呼び出し回数とレイテンシーの経時的な推移とともに確認します。
  • 呼び出し数、レイテンシー、使用トークン数、コスト別にプロンプトやバージョンを比較します。
  • プロンプトに関する詳細情報を確認します。バージョン履歴の確認、テキスト差分の表示、および特定のバージョンを使用したトレースへの移動が可能です。
  • Trace Explorer をプロンプト名、ID、またはバージョンでフィルタリングして、影響を受けたリクエストを特定します。
  • 任意のスパンから正確なテンプレートと変数を Agent Observability Playground に入力して、実行を再現します。
Agent Observability におけるアプリのプロンプトビュー。

Prompt Tracking をセットアップする

Agent Observability が有効な場合、LLMObs.get_prompt() を使用して Prompt Management レジストリから取得されたプロンプトは、prompt.format() によって返された値がサポートされている自動インスツルメンテーション済みの LLM 呼び出しに直接渡されると、自動的に追跡されます。フォーマットされた値がコピーまたは変換される場合は、Prompt Management のドキュメントで説明されているように LLMObs.annotation_context() を使用します。以下のセットアップオプションは、レジストリ外で定義されたプロンプトに適用されます。

構造化プロンプトメタデータを使用する場合

Prompt Tracking を使用するには、構造化プロンプトメタデータ (ID、オプションのバージョン、テンプレート、変数) を送信できます。

Agent Observability Python SDK

Agent Observability Python SDK (dd-trace v3.16.0 以降) を使用している場合は、prompt 引数またはヘルパーを使用して、LLM スパンにプロンプトメタデータを添付します。Agent Observability Python SDK のドキュメント を参照してください。

Agent Observability Node.js SDK

Agent Observability Node.js SDK (dd-trace v5.83.0 以降) を使用している場合は、prompt オプションを使用して LLM スパンにプロンプトメタデータを添付します。Agent Observability Node.js SDK のドキュメント を参照してください。

Agent Observability API

Agent Observability API インテークを使用している場合は、Spans API エンドポイントにプロンプトメタデータを送信します。Agent Observability HTTP API リファレンスドキュメント を参照してください。

OpenTelemetry Instrumentation

OpenTelemetry Instrumentation を使用している場合は、プロンプト情報を含む JSON 文字列を _dd.ml_obs.prompt_tracking 属性に設定することで、LLM スパンにプロンプトメタデータを添付できます。

任意の LLM スパンに属性を設定します。

import json

span.set_attribute("_dd.ml_obs.prompt_tracking", json.dumps({
    "name": "greeting-prompt",
    "version": "v1",
    "template": "Hello {{name}}, tell me about {{topic}}",
    "variables": {"name": "Alice", "topic": "weather"}
}))
span.setAttribute("_dd.ml_obs.prompt_tracking", JSON.stringify({
    name: "greeting-prompt",
    version: "v1",
    template: "Hello {{name}}, tell me about {{topic}}",
    variables: { name: "Alice", topic: "weather" }
}));
span.SetAttributes(attribute.String("_dd.ml_obs.prompt_tracking",
    `{"name":"greeting-prompt","version":"v1","template":"Hello {{name}}, tell me about {{topic}}","variables":{"name":"Alice","topic":"weather"}}`,
))

Prompt Tracking JSON では、以下のフィールドがサポートされています。

フィールド型必須説明
templatestringはい (または chat_template)単一メッセージプロンプトのテンプレート文字列
chat_templatearrayはい (または template){"role": "...", "content": "..."} メッセージテンプレートのリスト
idstringいいえプロンプトの一意の識別子。省略された場合は {ml_app}_unnamed-prompt にデフォルト設定されます
namestringいいえプロンプト名。id が省略された場合の id のフォールバックとして使用されます
versionstringいいえユーザー指定のバージョンタグ
variablesobjectいいえテンプレート変数の置換
rag_context_variablesarray of stringsいいえRAG コンテキスト (グラウンドトゥルース) を含む variables 内の変数名。RAG 評価ツールで使用されます
rag_query_variablesarray of stringsいいえユーザーのクエリを含む variables 内の変数名。RAG 評価ツールで使用されます
プロンプトテンプレートを使用している場合、Agent Observability はプロンプトの内容に基づいてバージョン情報を自動的に付与できます。

LangChain テンプレートを使用する場合

LangChain プロンプトテンプレートを使用している場合、Datadog はコードを変更することなくプロンプトメタデータを自動的に取得します。ID はモジュール名またはテンプレート名から生成されます。これらの ID を上書きするには、Agent Observability 自動インスツルメンテーション: LangChain を参照してください。

Agent Observability で Prompt Tracking を使用する

Agent Observability でアプリを表示し、左側の Prompts を選択します。_プロンプトビュー_には、以下の情報が表示されます。

  • Prompt Call Count: プロンプト (またはバージョン) ごとの呼び出し回数を時系列で表示するチャート
  • Recent Prompt Updates: 最終更新日時、呼び出し回数、平均レイテンシー、呼び出しごとの平均トークン数など、最近のプロンプト更新に関する情報
  • Most Tokens Used: 合計 (入力または出力) トークン数でランク付けされたプロンプト
  • Highest Latency Prompts: 平均実行時間でランク付けされたプロンプト
単一プロンプトの詳細ビュー。

プロンプトをクリックすると、バージョンアクティビティや各種メトリクスに関する情報を含む詳細サイドパネルビューが開きます。また、2 つのバージョンの差分表示、選択したバージョンを使用するスパンで事前フィルタリングされた Trace Explorer の起動、選択したバージョンのテンプレートと変数が事前入力された Playground セッションの開始も可能です。

Agent Observability におけるアプリのプロンプトビュー。

Agent Observability の Trace Explorer を使用して、プロンプトの使用状況からリクエストを検索できます。プロンプトの名前、ID、バージョンを、トレースレベルおよびスパンレベルの検索のファセットとして使用できます。LLM スパンをクリックすると、それを生成したプロンプトが表示されます。

参考資料