외부 평가

이 제품은 선택한 Datadog 사이트에서 지원되지 않습니다. ().

개요

평가는 LLM 애플리케이션 응답의 품질을 측정합니다. Agent Observability는 트레이스에 대한 몇 가지 기본 제공 평가를 제공하며, Datadog의 SDK 또는 Agent Observability API를 사용하여 자체 평가를 Agent Observability에 제출할 수 있습니다. 평가 레이블에 다음 명명 규칙을 사용하세요.

  • 평가 레이블은 문자로 시작해야 합니다.
  • 평가 레이블에는 ASCII 영숫자 또는 밑줄만 포함되어야 합니다.
    • 공백을 포함한 기타 문자는 밑줄(_)로 변환됩니다.
    • 유니코드는 지원되지 않습니다.
  • 평가 레이블은 200자를 초과할 수 없습니다. UI 관점에서는 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를 참조하세요. 재사용 가능한 평가자를 구축하려면 Evaluation Developer Guide를 참조하세요.

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"
        }
      ]
    }
  }
}

지원되는 평가 프레임워크

다음 도구에서 평가를 제출하세요.


추가 자료