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

概要

評価は、LLM アプリケーションの応答品質を測定します。 Agent Observability にはトレース用の評価機能がいくつか組み込まれていますが、Datadog の SDK または Agent Observability API を使用して、独自の評価を Agent Observability に送信することもできます。評価ラベルには、次の命名規則を使用してください。

  • 評価ラベルは文字で始める必要があります。
  • 評価ラベルには、ASCII 英数字またはアンダースコアのみを使用してください。
    • スペースなどの他の文字はアンダースコアに変換されます。
    • Unicode はサポートされていません。
  • 評価ラベルは 200 文字以内で指定してください。ユーザーインターフェイスの観点からは、100 文字未満をお勧めします。

評価ラベルは、特定の LLM アプリケーション (ml_app) および組織内で一意である必要があります。

ユーザーによる高評価や低評価、承認された変更、自由記述のコメント、その他のシグナルなどのフィードバックの送信については、エンドユーザーフィードバックを参照してください。

SDK を使用した外部評価の送信

Agent Observability SDK には、トレースされた LLM アプリケーションが Agent Observability に外部評価を送信するためのメソッド LLMObs.submit_evaluation() および LLMObs.export_span() が用意されています。詳細については、Python または Node.js SDK のドキュメントを参照してください。

豊富な結果メタデータを持つ再利用可能なクラスベースの評価器を構築する方法については、評価開発者ガイドを参照してください。

例

from ddtrace.llmobs import LLMObs
from ddtrace.llmobs.decorators import llm

def my_harmfulness_eval(input: Any) -> float:
  score = ... # custom harmfulness evaluation logic

  return score

@llm(model_name="claude", name="invoke_llm", model_provider="anthropic")
def llm_call():
    completion = ... # user application logic to invoke LLM

    # joining an evaluation to a span via span ID and trace ID
    span_context = LLMObs.export_span(span=None)
    LLMObs.submit_evaluation(
        span = span_context,
        ml_app = "chatbot",
        label="harmfulness",
        metric_type="score", # can be score or categorical
        value=my_harmfulness_eval(completion),
        tags={"type": "custom"},
        timestamp_ms=1765990800016, # optional, unix timestamp in milliseconds
        assessment="pass", # optional, "pass" or "fail"
        reasoning="it makes sense", # optional, judge llm reasoning
    )

API を使用した外部評価の送信

Agent Observability が提供する評価 API を使用して、スパン、トレース、またはセッションに関連付けられた評価を Datadog に送信できます。API 仕様の詳細については、Evaluations API を参照してください。再利用可能な評価器の構築については、評価開発者ガイドを参照してください。

OpenTelemetry スパンの評価を Evaluations API に直接送信するには、 source:otel 評価にタグを含める必要があります。さらに、span_id と trace_id の値は、10 進数の文字列として指定する必要があります。OpenTelemetry インスツルメンテーションが 16 進数の ID を生成する場合は、送信前に 10 進数に変換してください。たとえば、Python の場合は以下のようになります。str(int(hex_span_id, 16))。

例

{
  "data": {
    "type": "evaluation_metric",
    "id": "456f4567-e89b-12d3-a456-426655440000",
    "attributes": {
      "metrics": [
        {
          "id": "cdfc4fc7-e2f6-4149-9c35-edc4bbf7b525",
          "join_on": {
            "tag": {
              "key": "msg_id",
              "value": "1123132"
            }
          },
          "ml_app": "weather-bot",
          "timestamp_ms": 1765990800016,
          "metric_type": "score",
          "label": "Accuracy",
          "score_value": 3,
          "tags": ["source:otel"],
          "assessment": "pass",
          "reasoning": "it makes sense"
        }
      ]
    }
  }
}

サポートされている評価フレームワーク

これらのツールから評価を送信します。


参考資料