Evaluaciones personalizadas de LLM-as-a-judge

Este producto no es compatible con el sitio Datadog seleccionado. ().

Las evaluaciones personalizadas de LLM-as-a-judge utilizan un LLM para evaluar el rendimiento de otro LLM. Defina la lógica de evaluación con prompts en lenguaje natural, capture criterios subjetivos u objetivos (como el tono, la utilidad o la veracidad) y ejecute las evaluaciones a escala en:

  • Contexto de tramo—califique la entrada y la salida de una llamada a un LLM, un paso de agente o una invocación de herramienta de forma aislada.
  • Contexto de traza—envíe cada tramo de una traza al LLM juez en un solo prompt, para que la evaluación pueda razonar a través de los pasos. Consulte Evaluaciones a nivel de traza para ver el tutorial completo, los casos de uso y ejemplos de prompts.
  • Contexto de sesión—envíe cada traza en una sesión de usuario (y cada tramo en esas trazas) al LLM juez en un solo prompt, para que la evaluación pueda razonar a través de toda una interacción de varios turnos. Consulte Evaluaciones a nivel de sesión para ver el tutorial completo, los casos de uso y ejemplos de prompts.

Crear una evaluación personalizada de LLM-as-a-judge

Puede crear y gestionar evaluaciones personalizadas desde la página de Evaluaciones en Agent Observability. Puede proporcionar una descripción de evaluación para generar una evaluación, utilizar y desarrollar plantillas de evaluaciones de LLM-as-a-judge que proporcionamos, o comenzar desde cero. Puede habilitar el rastreo para ver las trazas de sus evaluaciones.

Si ya tiene un LLMJudge definido en el SDK, puede publicarlo directamente en Datadog sin tener que reconstruir la configuración en la interfaz de usuario. Consulte Publicar un LLMJudge como una evaluación gestionada por Datadog.

Obtenga más información sobre los requisitos de compatibilidad.

Configure el prompt

  1. En Datadog, navegue a la página de Evaluaciones de Agent Observability. Seleccione Create Evaluation, luego seleccione Create your own.
    La página de Evaluaciones de Agent Observability después de seleccionar Crear evaluación.
  2. Para habilitar el rastreo para las evaluaciones, haga clic en el botón Tracing Disabled, luego seleccione el interruptor Trace Evaluations para habilitar el rastreo. Cuando se ejecuta esta evaluación, sus trazas aparecen bajo datadog-evaluations, lo que le brinda una mayor visibilidad de sus evaluaciones. Nota: Habilitar el rastreo aumenta la cantidad de tramos facturados enviados a Datadog.
    Evaluaciones de traza habilitadas después de haber seleccionado el interruptor para habilitar el rastreo de evaluaciones.
  3. Proporcione un evaluation name claro y descriptivo (por ejemplo, factuality-check o tone-eval). Puede usar este nombre al consultar los resultados de la evaluación. El nombre debe ser único dentro de su aplicación.
  4. Configure el modelo:
    1. Seleccione el menú desplegable Account para elegir el proveedor de LLM y la cuenta correspondiente que usará para su LLM juez. Para conectar una cuenta nueva, consulte conectar un proveedor de LLM.
      • Si selecciona una cuenta Amazon Bedrock, elija una región para la cual esté configurada la cuenta. Luego puede seleccionar un nombre de modelo o proporcionar el ARN del perfil de inferencia.
      • Si selecciona una cuenta Vertex, elija un proyecto y una ubicación. El menú desplegable Location incluye opciones de región única, multirregión y globales. Para obtener detalles sobre cada opción, consulte la documentación de ubicaciones de Vertex AI de Google.
    2. Utilice el menú desplegable Model para seleccionar un modelo.
  5. En Runs On, seleccione la aplicación que desea evaluar, qué desea evaluar (tramo, traza o sesión) y la tasa de muestreo. Puede agregar más criterios de filtrado seleccionando el botón a la derecha de la tasa de muestreo.
  6. En la sección Template, utilice el menú desplegable:
    • Create from scratch: Utilice su propio prompt personalizado (definido en el siguiente paso).
    • Failure to Answer, Prompt Injection, Sentiment, etc.: Complete una plantilla de prompt preexistente. Puede usar estas plantillas tal cual o modificarlas para que coincidan con su lógica de evaluación específica.
  7. En el campo System Prompt, ingrese su prompt personalizado o modifique una plantilla de prompt. Para prompts personalizados, proporcione instrucciones claras que describan lo que el evaluador debe valorar.
    • Concéntrese en un único objetivo de evaluación
    • Incluya 2-3 ejemplos de few-shot que muestren pares de entrada/salida, resultados esperados y razonamiento.

Prompt del sistema

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

Usuario

Span Input: {{span_input}}
  1. En el campo User Prompt, especifique qué partes del tramo, traza o sesión evaluar agregando variables. Puede agregar cualquier atributo de tramo, como Tramo Input ("{{tramo_input}}), Output ({{tramo_output}}), or any other span field. For trace-scoped evaluations, use {{tramos...}} paths to read across spans; for session-scoped evaluations, use {{trazas...}} rutas para leer a través de las trazas. Consulte Plantillas de prompts para obtener la referencia completa. Para editar el prompt del usuario directamente, selecciónelo y edite el texto.

    También puede usar el panel de la derecha (Filtered Spans en el ámbito del tramo, Filtered Traces en el ámbito de la traza, Filtered Sessions en el contexto de la sesión) para agregar datos de tramo como una variable:

    1. Elija una cuenta y una aplicación para que los tramos, trazas o sesiones aparezcan a la derecha.
    2. Seleccione uno de los tramos a la derecha para ver su JSON.
    3. Seleccione
      para agregar el JSON a su prompt de usuario.
El contenido del menú de la visualización JSON en el panel derecho de configuración de evaluación personalizada, que muestra la opción para Agregar variable al mensaje.

Defina la salida de evaluación

Para modelos de OpenAI, Azure OpenAI, Vertex AI, Anthropic o Amazon Bedrock, configure Salida estructurada.

Para modelos de Anthropic o Amazon Bedrock, también puede configurar Búsqueda por palabras clave.

Para AI Gateway, se admiten tanto Salida estructurada como Búsqueda por palabras clave. Datadog recomienda usar Salida estructurada cuando su modelo la admita y, de lo contrario, recurrir a Búsqueda por palabras clave.

Salida estructurada (OpenAI, Azure OpenAI, Anthropic, Amazon Bedrock, AI Gateway, Vertex AI)

  1. Seleccione un tipo de salida de evaluación:

    • Boolean: Resultados verdadero/falso (por ejemplo, “¿El modelo siguió las instrucciones?”)
    • Score: Calificaciones numéricas (por ejemplo, una escala del 1 al 5 para la utilidad)
    • Categorical: Etiquetas discretas (por ejemplo, “Bueno”, “Malo”, “Neutral”)
    • JSON: JSON permite esquemas de formato libre
  2. Opcionalmente, seleccione Enable Reasoning. Esto configura al juez LLM para que proporcione una breve justificación de su decisión (por ejemplo, por qué se otorgó un puntaje de 8). El razonamiento le ayuda a comprender cómo y por qué se realizan las evaluaciones, y es particularmente útil para auditar métricas subjetivas como el tono, la empatía o la utilidad. Agregar razonamiento también puede hacer que el juez LLM sea más preciso.

  3. Edite un esquema JSON que defina el tipo de salida de sus evaluaciones:

Para el tipo de salida Booleano, edite el campo description para explicar mejor qué significan verdadero y falso en su caso de uso.

Para el tipo de salida Puntaje:

  • Establezca un puntaje min y max para su evaluación.
  • Edite el campo description para explicar mejor la escala de su evaluación.

Para el tipo de salida Categórico:

  • Agregue o elimine categorías editando el esquema JSON.
  • Edite los nombres de las categorías.
  • Edite el campo description de las categorías para explicar mejor qué significan en el contexto de su evaluación.

Un ejemplo de esquema para una evaluación categórica:

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

Para el tipo de salida JSON, defina un esquema JSON de forma libre para capturar resultados de evaluación estructurados y complejos.

Un esquema de ejemplo para una evaluación 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
}
  1. Configure Assessment Criteria. Esta flexibilidad le permite alinear los resultados de la evaluación con el estándar de calidad de su equipo. El mapeo de aprobado/reprobado también impulsa la automatización en Datadog Agent Observability, permitiendo que seguimientos y dashboards alerten sobre regresiones o hagan un seguimiento del estado general.

Seleccione True para marcar un resultado como “Pass”, o False para marcar un resultado como “Fail”.

Defina umbrales numéricos para determinar el rendimiento de aprobación.

Seleccione las categorías que deben asignarse a un estado de aprobación. Por ejemplo, si tiene las categorías Excellent, Good y Poor, donde solo Poor debe corresponder a un estado de reprobación, seleccione Excellent y Good.

Proporcione una función de JavaScript para asignar una evaluación basada en el resultado del evaluador LLM-as-a-Judge. La función debe devolver un objeto json con el siguiente formato

{
    assessment: "pass", // "pass" | "fail" [REQUIRED],
    value: "evaluation_label" // string [OPTIONAL],
    reasoning: "explanation behind the assessment" // string [OPTIONAL]

}

y la firma de la función debe ser function __evalPostProcessing(input) y input es el json del evaluador. La siguiente función es un ejemplo de una función de posprocesamiento:

function __evalPostProcessing(input) {
    /*
     * Expected input shape (from LLM evaluator [this depends on the JSON Structured Output]):
     * {
     *   criteria: {
     *     quality_score: { score: number (01), category: "excellent"|"good"|"poor", reasoning: string },
     *     toxicity:      { score: number (01), category: "safe"|"unsafe",           reasoning: string },
     *     completeness:  { score: number (01), category: "complete"|"incomplete",   reasoning: string },
     *     relevance:     { score: number (01), category: "relevant"|"irrelevant",   reasoning: string },
     *   },
     *   overall_reasoning: string  // (optional) top-level summary from LLM evaluator
     * }
     */

    const SCORE_THRESHOLD = 0.7;

    // Category  pass/fail mappings per criterion
    const CATEGORY_PASS_MAP = {
        quality_score: ["excellent", "good"],
        toxicity:      ["safe"],
        completeness:  ["complete"],
        relevance:     ["relevant"],
    };

    const criteriaResults = {};
    const failures = [];
    const passes = [];

    for (const [criterionName, passCategories] of Object.entries(CATEGORY_PASS_MAP)) {
        const criterion = input?.criteria?.[criterionName];

        if (!criterion) {
            failures.push(`[${criterionName}] Missing from evaluator output.`);
            criteriaResults[criterionName] = false;
            continue;
        }

        const { score, category, reasoning } = criterion;

        const scorePass    = typeof score === "number" && score >= SCORE_THRESHOLD;
        const categoryPass = typeof category === "string" && passCategories.includes(category.toLowerCase());

        // Both score AND category must pass
        const criterionPass = scorePass && categoryPass;
        criteriaResults[criterionName] = criterionPass;

        if (criterionPass) {
            passes.push(`[${criterionName}] PASS  score: ${score.toFixed(2)}, category: "${category}". ${reasoning ?? ""}`);
        } else {
            const reasons = [];
            if (!scorePass)    reasons.push(`score ${score?.toFixed(2) ?? "N/A"} below threshold (${SCORE_THRESHOLD})`);
            if (!categoryPass) reasons.push(`category "${category}" not in acceptable set [${passCategories.join(", ")}]`);
            failures.push(`[${criterionName}] FAIL  ${reasons.join("; ")}. ${reasoning ?? ""}`);
        }
    }

    // Determine overall assessment
    const passed = Object.values(criteriaResults).every(Boolean);
    const failCount = failures.length;

    const assessment = passed ? "pass" : "fail";

    const label = passed
        ? "high_quality_response"
        : failCount === 1
            ? "minor_quality_issue"
            : failCount === 2
                ? "moderate_quality_issue"
                : "low_quality_response";

    const reasoningParts = [
        passed
            ? "All criteria passed."
            : `${failCount} criterion/criteria failed.`,
        ...failures,
        ...passes,
        input?.overall_reasoning ? `Evaluator summary: ${input.overall_reasoning}` : ""
    ].filter(Boolean);

    return {
        assessment: assessment,
        value: label,
        reasoning: reasoningParts.join(" | ")
    };
}

Posprocesamiento (OpenAI, Azure OpenAI, Anthropic, Amazon Bedrock, AI Gateway, Vertex AI)

  1. Seleccione el tipo de salida JSON.

  2. Proporcione una función de JavaScript para identificar la evaluación, el valor y el razonamiento del evaluador. El posprocesamiento le permite realizar una evaluación más compleja que simplemente usar una salida estructurada booleana, de puntuación o categórica.

    La función de posprocesamiento debe devolver un objeto que contenga una evaluación con el valor “pass” o “fail” y, opcionalmente, cadenas de valor o razonamiento. La función debe devolver un objeto json con el siguiente formato:

    {
        assessment: "pass", // "pass" | "fail" [REQUIRED],
        value: "evaluation_label" // string [OPTIONAL],
        reasoning: "explanation behind the assessment" // string [OPTIONAL]
    
    }
    

    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:

    function __evalPostProcessing(input) {
        /*
        * Expected input shape (from LLM evaluator [this depends on the JSON Structured Output]):
        * {
        *   criteria: {
        *     quality_score: { score: number (01), category: "excellent"|"good"|"poor", reasoning: string },
        *     toxicity:      { score: number (01), category: "safe"|"unsafe",           reasoning: string },
        *     completeness:  { score: number (01), category: "complete"|"incomplete",   reasoning: string },
        *     relevance:     { score: number (01), category: "relevant"|"irrelevant",   reasoning: string },
        *   },
        *   overall_reasoning: string  // (optional) top-level summary from LLM evaluator
        * }
        */
    
        const SCORE_THRESHOLD = 0.7;
    
        // Category  pass/fail mappings per criterion
        const CATEGORY_PASS_MAP = {
            quality_score: ["excellent", "good"],
            toxicity:      ["safe"],
            completeness:  ["complete"],
            relevance:     ["relevant"],
        };
    
        const criteriaResults = {};
        const failures = [];
        const passes = [];
    
        for (const [criterionName, passCategories] of Object.entries(CATEGORY_PASS_MAP)) {
            const criterion = input?.criteria?.[criterionName];
    
            if (!criterion) {
                failures.push(`[${criterionName}] Missing from evaluator output.`);
                criteriaResults[criterionName] = false;
                continue;
            }
    
            const { score, category, reasoning } = criterion;
    
            const scorePass    = typeof score === "number" && score >= SCORE_THRESHOLD;
            const categoryPass = typeof category === "string" && passCategories.includes(category.toLowerCase());
    
            // Both score AND category must pass
            const criterionPass = scorePass && categoryPass;
            criteriaResults[criterionName] = criterionPass;
    
            if (criterionPass) {
                passes.push(`[${criterionName}] PASS  score: ${score.toFixed(2)}, category: "${category}". ${reasoning ?? ""}`);
            } else {
                const reasons = [];
                if (!scorePass)    reasons.push(`score ${score?.toFixed(2) ?? "N/A"} below threshold (${SCORE_THRESHOLD})`);
                if (!categoryPass) reasons.push(`category "${category}" not in acceptable set [${passCategories.join(", ")}]`);
                failures.push(`[${criterionName}] FAIL  ${reasons.join("; ")}. ${reasoning ?? ""}`);
            }
        }
    
        // Determine overall assessment
        const passed = Object.values(criteriaResults).every(Boolean);
        const failCount = failures.length;
    
        const assessment = passed ? "pass" : "fail";
    
        const label = passed
            ? "high_quality_response"
            : failCount === 1
                ? "minor_quality_issue"
                : failCount === 2
                    ? "moderate_quality_issue"
                    : "low_quality_response";
    
        const reasoningParts = [
            passed
                ? "All criteria passed."
                : `${failCount} criterion/criteria failed.`,
            ...failures,
            ...passes,
            input?.overall_reasoning ? `Evaluator summary: ${input.overall_reasoning}` : ""
        ].filter(Boolean);
    
        return {
            assessment: assessment,
            value: label,
            reasoning: reasoningParts.join(" | ")
        };
    }
    

Resultado de búsqueda por palabra clave (Anthropic, Amazon Bedrock, AI Gateway)

  1. Seleccione el tipo de salida Boolean.

    Para el Resultado de búsqueda por palabra clave, solo está disponible el tipo de salida Booleano.
  2. Proporcione True keywords y False keywords que definan cuándo el resultado de la evaluación es verdadero o falso, respectivamente.

    Datadog busca en el texto de respuesta del LLM-as-a-judge sus palabras clave definidas y proporciona los resultados adecuados para la evaluación. Por esta razón, debe indicar al LLM que responda con las palabras clave que usted eligió.

    Por ejemplo, si usted configura:

    • True keywords: Sí, sí
    • False keywords: No, no

    Entonces, su prompt del sistema debe incluir algo como Respond with "yes" or "no".

  3. Para Assessment Criteria:

    • Seleccione True para marcar un resultado como “Aprobado”
    • Seleccione False para marcar un resultado como “Reprobado”

    Esta flexibilidad le permite alinear los resultados de la evaluación con el estándar de calidad de su equipo. El mapeo de aprobado/reprobado también impulsa la automatización en Datadog Agent Observability, permitiendo que seguimientos y dashboards alerten sobre regresiones o hagan un seguimiento del estado general.

Configuración de la salida de evaluación personalizada en Structured Output, incluyendo el razonamiento y los criterios de evaluación.

Defina el contexto de la evaluación: Filtrado y muestreo

Los campos de tramo utilizados en las evaluaciones están limitados a 250 KB cada uno. Los campos que excedan este tamaño se truncan antes de enviarse al LLM-as-a-judge.

En Evaluation Scope, defina dónde y cómo se ejecuta su evaluación. Esto ayuda a controlar la cobertura (qué tramos o trazas se incluyen) y el costo (cuántos se muestrean).

  • Application: Seleccione la aplicación que desea evaluar.
  • Evaluate On: Elija una de las siguientes opciones:
    • Trace: Evalúe la traza completa, incluidos todos sus tramos, como una sola unidad. Use esto cuando la respuesta dependa del contexto en múltiples tramos (finalización del objetivo del Agent, cadenas de uso de herramientas, fidelidad de RAG). Consulte Evaluaciones a nivel de traza para ver ejemplos y detalles sobre cómo se determina la finalización de la traza.
    • Span: Evalúe los tramos coincidentes individualmente. Use el campo Query para limitar a tramos específicos (por ejemplo, solo tramos raíz, solo tramos llm, o tramos con una etiqueta específica).
    • Session: Evalúe una sesión de usuario completa, incluyendo cada traza y sus tramos, como una sola unidad. Use esto cuando la respuesta dependa del contexto en múltiples trazas en la misma sesión (satisfacción del usuario, coherencia de múltiples turnos o comportamiento del usuario a lo largo del tiempo). Requiere tramos etiquetados con un session_id. Consulte Evaluaciones a nivel de sesión para ver ejemplos y detalles sobre cómo se determina la finalización de la sesión.
  • Query: (Opcional) Ingrese una consulta usando la sintaxis de consulta de Datadog para filtrar qué tramos o trazas se evalúan. Por ejemplo:
    • @name:agent.workflow para filtrar por nombre de tramo
    • env:prod para filtrar por etiqueta
    • @parent_id:undefined para evaluar solo los tramos raíz (cuando Evaluate On se establece en Span)
    • @name:agent.workflow AND env:prod para filtrar por nombre de tramo y etiqueta
  • Sampling Rate: (Opcional) Aplique muestreo (por ejemplo, 10%) para controlar el costo de la evaluación.
Configuración del contexto de la evaluación.

Pruebe y previsualice

El panel de la derecha muestra Filtered Spans (o trazas) correspondientes al alcance de evaluación configurado.

Seleccione un tramo para mostrar los datos JSON disponibles para su uso en una evaluación. Luego, haga clic en Test Evaluation para rellenar previamente las entradas de su evaluación con datos del tramo, y haga clic en Run para probar.

Ver y utilizar resultados

Después de Save and Publish su evaluación, Datadog ejecuta automáticamente su evaluación en los tramos seleccionados. Alternativamente, puede Save as Draft y editar o habilitar su evaluación más tarde.

Los resultados están disponibles en todo Agent Observability casi en tiempo real para las evaluaciones publicadas. Puede encontrar sus resultados personalizados de LLM-as-a-judge para un tramo específico en la pestaña Evaluations, junto con otras evaluaciones.

La pestaña Evaluaciones de una traza, que muestra los resultados de evaluaciones personalizadas junto con las evaluaciones administradas.

Cada resultado de evaluación incluye:

  • El valor evaluado (por ejemplo, True, 9 o Neutral)
  • El razonamiento (cuando está habilitado)
  • El indicador de aprobado/reprobado (según sus criterios de evaluación)

Utilice la sintaxis @evaluation.<evaluation_name>.value para consultar o visualizar los resultados.

Por ejemplo:

@evaluation.helpfulness-check.value
La visualización de trazas de Agent Observability. En el cuadro de búsqueda, el usuario ha ingresado `@evaluation.budget-guru-intent-classifier.value:budgeting_question` y los resultados se completan a continuación.

Usted puede:

  • Filtrar trazas por resultados de evaluación (ejemplo, @evaluation.helpfulness-check.value)
  • Filtrar por estado de evaluación de aprobado/reprobado (ejemplo, @evaluation.helpfulness-check.assessment:fail)
  • Utilizar los resultados de evaluación como facets
  • Ver resultados agregados en la sección Evaluation de la página Agent Observability Overview.
  • Crear seguimientos para alertar sobre cambios en el rendimiento o regresiones.

Uso en experimentos

Para reutilizar una evaluación personalizada de LLM-as-a-judge en un Experimento de LLM local, haga referencia a ella por nombre usando RemoteEvaluator desde el SDK:

from ddtrace.llmobs import LLMObs, RemoteEvaluator

evaluator = RemoteEvaluator(eval_name="quality-assessment")

experiment = LLMObs.experiment(
    name="my-experiment",
    task=my_task,
    dataset=dataset,
    evaluators=[evaluator],
)
experiment.run()

Puede combinar RemoteEvaluator con otros evaluadores locales en el mismo experimento. Para el mapeo de entrada personalizado, el manejo de errores y más opciones, consulte RemoteEvaluator en la Guía para desarrolladores de evaluación.

Mejores prácticas para evaluaciones personalizadas confiables

  • Empiece poco a poco: Apunte a un único modo de falla bien definido antes de escalar.
  • Habilite el razonamiento cuando necesite decisiones explicables y para mejorar la precisión en tareas de razonamiento complejas.
  • Itere: Ejecute, inspeccione los resultados y refine su prompt.
  • Valide: Verifique periódicamente la precisión del evaluador utilizando trazas muestreadas.
  • Documente su rúbrica: Defina claramente qué significan “Aprobado” y “Reprobado” para evitar desviaciones con el tiempo.
  • Realinee su evaluador: Reevalúe el prompt y los ejemplos de few-shot cuando el LLM subyacente se actualice.

Uso estimado de tokens

Puede hacer un seguimiento del uso de tokens de sus evaluaciones de LLM utilizando el LLM Evaluations Token Usage dashboard.

Si necesita más detalles, las siguientes métricas le permiten realizar un seguimiento de los recursos de LLM consumidos para potenciar las evaluaciones:

  • ml_obs.estimated_usage.llm.input.tokens
  • ml_obs.estimated_usage.llm.output.tokens
  • ml_obs.estimated_usage.llm.total.tokens

Cada una de estas métricas tiene etiquetas ml_app, model_server, model_provider, model_name y evaluation_name, lo que le permite identificar aplicaciones, modelos y evaluaciones específicas que contribuyen a su uso.

Configure evaluaciones de LLM-as-a-judge desde la API

Puede utilizar operaciones CRUD básicas para manipular configuraciones de evaluación administradas, después de tener la DD_API_KEY clave de API especificada en su entorno.

  • GET configuraciones de evaluación existentes
  • PUT configuraciones de evaluación existentes
  • DELETE configuraciones de evaluación existentes

Lecturas adicionales