사용자 지정 LLM-as-a-judge 평가는 LLM을 사용하여 다른 LLM의 성능을 평가합니다. 자연어 프롬프트로 평가 로직을 정의하고, 주관적 또는 객관적 기준(어조, 유용성, 사실성 등)을 반영하여 다음 항목을 대규모로 평가할 수 있습니다.
스팬 범위—단일 LLM 호출, 에이전트 단계 또는 도구 호출의 입력과 출력을 개별적으로 평가합니다.
트레이스 범위—트레이스의 모든 스팬을 단일 프롬프트로 LLM 평가자에게 전달하여 평가 시 여러 단계에 걸쳐 추론할 수 있도록 합니다. 전체 워크스루, 사용 사례 및 프롬프트 예시는 트레이스 수준 평가를 참조하세요.
세션 범위—사용자 세션의 모든 트레이스(및 해당 트레이스의 모든 스팬)를 단일 프롬프트로 LLM 평가자에게 전달하여 평가 시 전체 멀티턴 상호작용을 기반으로 추론할 수 있도록 합니다. 전체 워크스루, 사용 사례 및 프롬프트 예시는 세션 수준 평가를 참조하세요.
사용자 지정 LLM-as-a-judge 평가 생성
Agent Observability의 평가 페이지에서 사용자 지정 평가를 생성하고 관리할 수 있습니다. 평가 설명을 제공하여 평가를 생성하거나, 당사에서 제공하는 기존 LLM-as-a-judge 평가 템플릿을 사용 및 확장하거나, 처음부터 직접 만들 수도 있습니다. 트레이싱을 활성화하여 평가에서 트레이스를 확인할 수 있습니다.
Datadog에서 Agent Observability 평가 페이지로 이동합니다. Create Evaluation을 선택한 다음 Create your own을 선택합니다.
평가에 대한 트레이스를 활성화하려면 Tracing Disabled 버튼을 클릭한 다음 Trace Evaluations 토글을 선택하여 트레이스를 활성화합니다. 이 평가가 실행되면 해당 트레이스가 datadog-evaluations 아래에 나타나 평가에 대한 가시성이 향상됩니다. 참고: 트레이싱을 활성화하면 Datadog으로 전송되는 청구 대상 스팬 수가 증가합니다.
명확하고 이름을 알기 쉽게 나타내는 evaluation name을 사용하세요(예: factuality-check 또는 tone-eval). 평가 결과를 쿼리할 때 이 이름을 사용할 수 있습니다. 이 이름은 애플리케이션 내에서 고유해야 합니다.
모델 구성:
드롭다운 메뉴를 선택하여 Account LLM 평가자에 사용할 LLM 공급자와 해당 계정을 선택합니다. 새 계정을 연결하려면 LLM 공급자 연결을 참조하세요.
계정을 선택하는 경우 Amazon Bedrock 계정이 구성된 리전을 선택합니다. 그런 다음 모델 이름을 선택하거나 추론 프로필 ARN을 제공할 수 있습니다.
계정을 선택하는 경우 Vertex 프로젝트와 위치를 선택합니다. Location 드롭다운에는 단일 리전, 다중 리전 및 글로벌 옵션이 포함되어 있습니다. 각 옵션에 대한 자세한 내용은 Google Vertex AI 위치 문서를 참조하세요.
드롭다운 메뉴를 사용하여 Model 모델을 선택합니다.
평가할 애플리케이션, 평가 대상(스팬, 트레이스 또는 세션) 및 샘플링 속도를 Runs On에서 선택합니다. 샘플링 속도 오른쪽에 있는 버튼을 선택하여 필터링 기준을 더 추가할 수 있습니다.
Template 섹션에서 드롭다운 메뉴를 사용합니다.
Create from scratch: 사용자 설정 프롬프트(다음 단계에서 정의됨)를 사용합니다.
Failure to Answer, Prompt Injection, Sentiment 등: 기존 프롬프트 템플릿을 채웁니다. 이러한 템플릿을 그대로 사용하거나 특정 평가 로직에 맞게 수정할 수 있습니다.
System Prompt 필드에 사용자 지정 프롬프트를 입력하거나 프롬프트 템플릿을 수정합니다.
사용자 지정 프롬프트의 경우 평가자가 무엇을 평가해야 하는지 설명하는 명확한 지침을 제공하세요.
단일 평가 목표에 집중하세요.
입력/출력 쌍, 예상 결과 및 추론을 보여주는 2~3개의 퓨샷(few-shot) 예시를 포함하세요.
사용자 정의 프롬프트 예시
시스템 프롬프트
You will be looking at interactions between a user and a budgeting AI agent. Your job is to classify the user's intent when it comes to using the budgeting AI agent.
You will be given a Span Input, which represents the user's message to the agent, which you will then classify. Here are some examples.
Span Input: What are the core things I should know about budgeting?
Classification: general_financial_advice
Span Input: Did I go over budget with my grocery bills last month?
Classification: budgeting_question
Span Input: What is the category for which I have the highest budget?
Classification: budgeting_question
Span Input: Based on my past months, what is my ideal budget for subscriptions?
Classification: budgeting_advice
Span Input: Raise my restaurant budget by $50
Classification: budgeting_request
Span Input: Help me plan a trip to the Maldives
Classification: unrelated
사용자
Span Input: {{span_input}}
User Prompt 필드에서 변수를 추가하여 평가할 스팬, 트레이스 또는 세션의 부분을 지정하세요. Span Input({{span_input}}), Output({{span_output}}), 또는 기타 스팬 필드와 같은 모든 스팬 속성을 추가할 수 있습니다. 트레이스 범위 평가에서 여러 스팬에 걸쳐 값을 읽으려면 {{spans...}} 경로를 사용하고, 세션 범위 평가에서 여러 트레이스에 걸쳐 값을 읽으려면 {{traces...}} 경로를 사용하세요. 전체 참조 문서는 프롬프트 템플릿을 확인하세요. 사용자 프롬프트를 직접 수정하려면 해당 프롬프트를 선택하고 텍스트를 수정하세요.
오른쪽 패널(Filtered Spans은 스팬 범위, Filtered Traces는 트레이스 범위, Filtered Sessions은 세션 범위)을 사용하여 스팬 데이터를 변수로 추가할 수도 있습니다.
스팬, 트레이스 또는 세션이 오른쪽에 표시되도록 계정과 애플리케이션을 선택하세요.
오른쪽에 있는 스팬 중 하나를 선택하여 해당 JSON을 확인하세요.
사용자 프롬프트에 JSON을 추가하려면
를 선택하세요.
평가 출력 정의
OpenAI, Azure OpenAI, Vertex AI, Anthropic 또는 Amazon Bedrock 모델의 경우 구조화된 출력을 구성하세요.
Anthropic 또는 Amazon Bedrock 모델의 경우, 대신 키워드 검색 출력을 구성할 수 있습니다.
AI Gateway의 경우 구조화된 출력과 키워드 검색 출력이 모두 지원됩니다. Datadog은 모델이 지원하는 경우 구조화된 출력을 사용하고, 그렇지 않은 경우 키워드 검색 출력으로 대체하는 것을 권장합니다.
Enable Reasoning을 선택합니다(선택 사항). 이는 LLM 평가자가 결정에 대한 짧은 근거를 제공하도록 구성합니다(예: 8점이 부여된 이유). 추론은 평가가 어떻게, 그리고 왜 이루어지는지 이해하는 데 도움을 주며, 어조, 공감, 유용성과 같은 주관적인 메트릭을 감사하는 데 특히 유용합니다. 추론을 추가하면 LLM 평가자의 정확도를 높일 수도 있습니다.
평가 출력 유형을 정의하는 JSON 스키마를 편집하세요.
Boolean 출력 유형의 경우, description 필드를 편집하여 사용 사례에서 true와 false가 무엇을 의미하는지 자세히 설명하세요.
Score 출력 유형의 경우:
평가를 위한 min 및 max 점수를 설정하세요.
평가 척도를 자세히 설명하려면 description 필드를 편집하세요.
Categorical 출력 유형의 경우:
JSON 스키마를 편집하여 카테고리를 추가하거나 제거하세요.
카테고리 이름을 편집하세요.
카테고리의 description 필드를 편집하여 평가 컨텍스트에서 각 카테고리가 무엇을 의미하는지 자세히 설명하세요.
카테고리형 평가를 위한 스키마 예시:
{"name":"categorical_eval","schema":{"type":"object","required":["categorical_eval","reasoning"],"properties":{"categorical_eval":{"type":"string","anyOf":[{"const":"budgeting_question","description":"The user is asking a question about their budget. The answer can be directly determined by looking at their budget and spending."},{"const":"budgeting_request","description":"The user is asking to change something about their budget. This should involve an action that changes their budget."},{"const":"budgeting_advice","description":"The user is asking for advice on their budget. This should not require a change to their budget, but it should require an analysis of their budget and spending."},{"const":"general_financial_advice","description":"The user is asking for general financial advice which is not directly related to their specific budget. However, this can include advice about budgeting in general."},{"const":"unrelated","description":"This is a catch-all category for things not related to budgeting or financial advice."}]},"reasoning":{"type":"string","description":"Describe how you decided the category"}},"additionalProperties":false},"strict":true}
JSON 출력 유형의 경우, 복잡하고 구조화된 평가 결과를 캡처할 수 있도록 자유 형식의 JSON 스키마를 정의합니다.
JSON 평가를 위한 스키마 예시:
{
"name": "json_eval",
"schema": {
"type": "object",
"required": [
"result",
"reasoning"
],
"properties": {
"result": {
"type": "object",
"description": "The structured evaluation result",
"properties": {
"is_compliant": {
"type": "boolean",
"description": "Whether the response meets compliance requirements"
},
"confidence_score": {
"type": "number",
"description": "Confidence level of the evaluation from 0 to 1"
},
"issue_count": {
"type": "integer",
"description": "Number of issues identified in the response"
}
},
"required": ["is_compliant", "confidence_score", "issue_count"],
"additionalProperties": false
},
"reasoning": {
"type": "string",
"description": "Describe the reasoning behind your evaluation"
}
},
"additionalProperties": false
},
"strict": true
}
Assessment Criteria를 구성하세요.
이러한 유연성을 통해 팀의 품질 기준에 맞춰 평가 결과를 조정할 수 있습니다. Pass/Fail 매핑은 Datadog Agent Observability 전반의 자동화에도 활용되며, 모니터와 대시보드가 성능 저하를 플래그하거나 전반적인 상태를 추적할 수 있도록 지원합니다.
결과를 ‘Pass’로 표시하려면 True를 선택하고, 결과를 ‘Fail’로 표시하려면 False를 선택하세요.
Pass 여부를 판단할 수치 임계값을 정의하세요.
Pass 상태로 매핑할 카테고리를 선택하세요. 예를 들어, Excellent, Good, Poor 범주가 있고 그중 Poor만 실패 상태에 해당하는 경우에는 Excellent와 Good을 선택하세요.
LLM-as-a-Judge 평가자의 출력에 기반하여 평가를 할당하는 JavaScript 함수를 제공하세요. 함수는 다음 형식의 json 객체를 반환해야 합니다.
and the function signature must be function __evalPostProcessing(input) and the input is the json from the evaluator. The function below is an example of a post processing function:
평가 결과가 각각 True 또는 False가 되는 경우를 정의하는 True keywords와 False keywords를 제공하세요.
Datadog은 LLM-as-a-judge의 응답 텍스트에서 정의한 키워드를 검색하여 평가에 적합한 결과를 제공합니다. 이러한 이유로 LLM에 사용자가 선택한 키워드로 응답하도록 지시해야 합니다.
예를 들어 다음과 같이 설정하는 경우:
True keywords: Yes, yes
False keywords: No, no
그러면 시스템 프롬프트에 Respond with "yes" or "no"과 같은 내용이 포함되어야 합니다.
Assessment Criteria의 경우:
True를 선택하여 결과를 ‘Pass’로 표시하세요.
False를 선택하여 결과를 ‘Fail’로 표시하세요.
이러한 유연성을 통해 팀의 품질 기준에 맞춰 평가 결과를 조정할 수 있습니다. Pass/Fail 매핑은 Datadog Agent Observability 전반의 자동화에도 활용되며, 모니터와 대시보드가 성능 저하를 플래그하거나 전반적인 상태를 추적할 수 있도록 지원합니다.
평가 범위 정의: 필터링 및 샘플링
평가에 사용되는 스팬 필드는 각각 250KB로 제한됩니다. 이 크기를 초과하는 필드는 LLM 평가자에게 전송되기 전에 잘립니다.
Evaluation Scope에서 평가가 어디서 어떻게 실행될지 정의하세요. 이를 통해 범위(어떤 스팬이나 트레이스가 포함되는지)와 비용(얼마나 샘플링되는지)을 제어할 수 있습니다.
Application: 평가하려는 애플리케이션을 선택하세요.
Evaluate On: 다음 옵션 중 하나를 선택하세요.
Trace: 모든 스팬을 포함한 전체 트레이스를 단일 단위로 평가하세요. 답변을 평가할 때 여러 스팬의 컨텍스트를 종합적으로 고려해야 하는 경우(에이전트 목표 완료, 도구 사용 과정, RAG 충실도)에 사용하세요. 트레이스 완료 여부를 판단하는 방법에 대한 예시와 자세한 내용은 트레이스 수준 평가를 참조하세요.
Span: 일치하는 스팬을 개별적으로 평가하세요. Query 필드를 사용하여 특정 스팬으로 범위를 지정하세요(예: 루트 스팬만, llm 스팬만, 또는 특정 태그가 있는 스팬만).
Session: 모든 트레이스와 해당 스팬을 포함한 전체 사용자 세션을 단일 단위로 평가하세요. 답변을 평가할 때 동일 세션 내 여러 트레이스의 컨텍스트를 종합적으로 고려해야 하는 경우(사용자 만족도, 멀티턴 일관성, 또는 시간 경과에 따른 사용자 행동)에 사용하세요. session_id로 태그된 스팬이 필요합니다. 세션 완료 여부를 판단하는 방법에 대한 예시와 자세한 내용은 세션 수준 평가를 참조하세요.
Query: (선택 사항) 평가할 스팬이나 트레이스를 필터링하려면 Datadog 쿼리 구문을 사용하여 쿼리를 입력하세요. 예를 들면 다음과 같습니다.