Configura un modelo de juez básico (parte 1)

Ejecuta evaluaciones subjetivas con un modelo de juez básico.

Las evaluaciones basadas en reglas pueden verificar si las respuestas son determinísticas. Para evaluar las cualidades subjetivas, usa la técnica de LLM como juez.

En este módulo, aprenderás a compilar tu primer juez etiquetando datos por tu cuenta o con tu equipo, utilizando métricas estadísticas básicas.

Crea tu primer modelo de juez

Un modelo de juez tiene un LLM, parámetros de configuración, una instrucción del sistema y una instrucción de calificación.

  1. Elige un método de personalización del modelo. Puedes ajustar los parámetros o aplicar la ingeniería de instrucciones.
  2. Selecciona un modelo. Puede ser un modelo de base o algún otro LLM sin experiencia en el dominio.
  3. Elige un método de puntuación. Determina si el juez debe usar una escala binaria o numérica para calificar los temas generados por ThemeBuilder.
  4. Configura el juez. Modifica la configuración del modelo (como la temperatura y el resultado estructurado) para que sea adecuado para las tareas de juicio.
  5. Escribe la instrucción inicial. Diseña una primera versión de las instrucciones y la instrucción del sistema de evaluación, incluida una rúbrica de puntuación y ejemplos.
  6. Crea un conjunto de datos de alineación. Crea o ensambla un conjunto diverso y de alta calidad de resultados buenos y malos de ThemeBuilder, y etiquétalos según corresponda, por ejemplo, un buen lema, un lema tóxico y una paleta de colores que no coincide con la marca.
  7. Alinea y prueba el juez. Usa el conjunto de datos de alineación para refinar de forma iterativa la instrucción del juez (instrucciones del sistema y la instrucción principal). Repite este proceso hasta que los veredictos del juez coincidan de forma coherente con los veredictos humanos. Por último, prueba el juez para confirmar su confiabilidad y capacidad de generalizar su enfoque a nuevas entradas.

Un modelo de juez tiene un LLM, parámetros de configuración, una instrucción del sistema y una instrucción de calificación.

Elige un método de personalización

La mayoría de los modelos de base son generalistas. Un modelo de juez actúa como un especialista en el dominio.

Estas son las principales opciones para crear un modelo de juez:

  1. Diseñar instrucciones para un LLM
  2. Ajusta un modelo.
  3. Usa un LLM ajustado que esté optimizado para las evaluaciones, por ejemplo, JudgeLM. Esta opción requiere que alojes pesos de modelos personalizados o que uses un proveedor de servicios en la nube que admita el alojamiento de modelos de código abierto.

Para las evaluaciones de ThemeBuilder en este curso, te recomendamos la ingeniería de instrucciones. La ingeniería de instrucciones puede generar excelentes resultados con menos esfuerzo de desarrollo que las alternativas.

Seleccionar un modelo

Cuando selecciones un modelo para el juez, busca capacidades de razonamiento sólidas. Dado que ejecutas evaluaciones en la canalización de CI/CD, la velocidad y el costo también son fundamentales.

Experimenta con diferentes modelos y técnicas para encontrar el ajuste óptimo.

  • Comienza con un modelo más grande y potente para establecer un estándar alto y, luego, reduce progresivamente el tamaño de los modelos. Alternativamente, comienza con modelos más pequeños y escala verticalmente.
  • Combinación: Usa un modelo rápido y rentable para las verificaciones diarias de solicitudes de extracción, y un modelo más potente para las pruebas de la versión final. También puedes combinar un LLM general con un modelo pequeño y especializado para tareas específicas, como la detección de toxicidad, y así aumentar la velocidad.

En este curso, se usa Gemini 3 Flash como modelo de evaluación. Gemini 3 Flash ofrece la velocidad y la profundidad de razonamiento necesarias para el caso de uso de ejemplo de evaluación de los resultados de ThemeBuilder. Sin embargo, los patrones de este curso se pueden aplicar a cualquier modelo que selecciones.

Elige un método de puntuación

Puedes calificar los resultados subjetivos con etiquetas binarias PASS y FAIL, o con una puntuación numérica, por ejemplo, "En una escala del 1 al 5, ¿qué tan bien se ajusta este lema a la marca?".

Recomendamos usar etiquetas binarias.

Criterios de evaluación Método de evaluación Métrica
El lema coincide con la marca, el público y el tono. Juez de LLM Etiqueta de PASS o FAIL
La paleta de colores coincide con la marca, el público y el tono. Juez de LLM Etiqueta de PASS o FAIL
El lema no es tóxico Juez de LLM Etiqueta de PASS o FAIL

Si bien una puntuación numérica puede parecer intuitiva, la investigación demuestra que los LLM (y los humanos) tienden a agrupar sus puntuaciones en el medio o a inflarlas para ser amables. Las categorías o las etiquetas binarias, como PASS y FAIL, suelen generar mejores resultados porque obligan al modelo a tomar una decisión clara. En el caso de los humanos, esto se conoce como efecto del evaluador.

Configura el juez

Usa parámetros e instrucciones para ayudar a tu evaluador a crear resultados coherentes y estructurados.

  • Establece instrucciones del sistema: Dale al juez una personalidad experta estricta.
  • Establece la temperatura o el nivel de pensamiento: El juez debe ser coherente. Si usas un modelo de razonamiento como Gemini Flash, que requiere una ligera aleatoriedad para pasar de un paso lógico a otro, mantén la temperatura predeterminada, pero establece thinking_level en HIGH. Si usas otro modelo, establece la temperatura en 0 o cerca de 0. En cualquier caso, usa la técnica de cadena de pensamientos para que el modelo piense antes de decidir un juicio.
  • Estructura el resultado del juez: Un objeto JSON predecible es mucho más fácil de reutilizar en el resto de tu base de código. Usa un esquema EvalResult que requiera un label (PASS o FAIL) y una cadena rationale.

En tu ejemplo de ThemeBuilder, haz lo siguiente:

Configuración del juez

// LLM judge config
const response = await client.models.generateContent({
  model: modelVersion,
  config: {
      systemInstruction: "You are a senior brand strategist, brand identity
      specialist, and expert color psychologist. You also act as a strict
      content moderator for a brand safety tool. Be rigorous regarding brand
      alignment. Always formulate your rationale before assigning the final
      PASS or FAIL label to ensure thorough consideration of the criteria.",
      temperature: 0,
      thinkingConfig: {
          thinkingLevel: ThinkingLevel.HIGH,
      },
      responseJsonSchema: schemaConfig.responseSchema
  },
  contents: [{ role: "user", parts: [{ text: prompt }] }]
});

responseJsonSchema

const schemaConfig = {
  responseMimeType: "application/json",
  responseSchema: {
      type: "OBJECT",
      properties: {
          label: { type: "STRING", enum: [EvalLabel.PASS, EvalLabel.FAIL] },
          rationale: { type: "STRING" }
      },
      required: ["label", "rationale"],
      propertyOrdering: ["rationale", "label"]
  }
};

// Classification label for an evaluation (PASS/FAIL is the judge's verdict)
export enum EvalLabel {
    PASS = "PASS",
    FAIL = "FAIL"
}

Revisa el ejemplo de código completo.

Escribe la instrucción inicial

Ya configuraste las instrucciones del sistema. Ahora, diseña la instrucción principal del juez. En esta etapa, crea la primera versión de esta instrucción. La definirás mejor de forma iterativa cuando alinees al juez en el siguiente paso.

La eficacia del juez depende de las instrucciones proporcionadas. Evita hacer preguntas genéricas, como "¿Este lema es bueno?", en las que bueno no está definido. En cambio, proporciona estructura para obtener resultados claros y coherentes.

  • Define la rúbrica: Proporciona al juez lineamientos detallados para la puntuación. ¿Qué describe el tono esperado para un resultado ideal? Un LLM puede ayudarte a escribir la rúbrica.
  • Usa instrucciones con pocos ejemplos: Incluye ejemplos de PASS y FAIL.
  • Usa la cadena de pensamientos: Indica al modelo que escriba la justificación antes de asignar una etiqueta, ya que esto puede mejorar drásticamente la exactitud. En el modo de pensamiento de HIGH, esto no es tan importante, pero sigue siendo una buena práctica.

Escribe tres instrucciones de calificación separadas para los tres criterios específicos:

En cada instrucción, incluye una rúbrica de puntuación clara y ejemplos con pocos ejemplos con una explicación. En los ejemplos con pocos ejemplos, enumera la justificación antes de la puntuación real para aplicar el patrón de cadena de pensamientos y demostrar cómo razona el juez.

Puedes encontrar las instrucciones completas en el repositorio de código. Por ejemplo, la instrucción para el juez de adecuación de la marca al lema se ve de la siguiente manera:

export function getMottoBrandFitJudgePrompt(companyName: string, description: string, audience: string, tone: string | string[], motto: string) {
  return `Evaluate the following generated motto for a company.

${companyName ? `Company name: ${companyName}\n` : ""}${description ? `Description: ${description}\n` : ""}${audience ? `Target audience: ${audience}\n` : ""}${Array.isArray(tone) ? (tone.length > 0 ? `Desired tone: ${tone.join(", ")}\n` : "") : (tone ? `Desired tone: ${tone}\n` : "")}

Generated motto: "${motto}"

Does this motto effectively match the company description, appeal to the
target audience, and embody the desired tone?

CRITICAL INSTRUCTIONS:
1. **Brand fit vs. toxicity**: You are evaluating ONLY brand fit. Another system
  will evaluate toxicity separately. DO NOT evaluate toxicity, ethics, profanity,
  or offensiveness. A motto can be a GREAT brand fit for an edgy or aggressive
  brand. If the brand requests an "offensive" or "aggressive" tone, you MUST
  pass it for brand fit, regardless of how inappropriate it is.
1. **Primary tone and literal relevance**: Do not over-penalize a motto if it
  perfectly captures the primary literal vibe just because it might loosely
  conflict with a secondary adjective.
1. **Core promises and professionalism**: For B2B/Enterprise, the motto MUST NOT
  violate core promises.
1. **Resilience to input messiness**: The Company Name, Description, Target
  Audience, or Tone may contain typos, slang, or mixed-language. You must
  decipher the *intended* meaning and judge the output against that intent,
  rather than penalizing the output for not matching the literal typo or slang.

Criteria:
1. **Relevance**: Does the motto relate to the company's core business and
  value proposition? Does it uphold core brand promises?
1. **Audience appeal**: Is the language engaging for the target audience without
  alienating them (such as through forced or inappropriate slang)?
1. **Tone consistency**: Does the motto reflect the general desired emotional
  tone perfectly, without imposing moral judgments?

Examples:

Input:
Company Name: "Summit Bank"
Description: "Secure, reliable banking for families"
Tone: "Trustworthy, serious"
Motto: "YOLO with your money!"
Result:
  "rationale": "The motto 'YOLO with your money!' is too casual and risky, contradicting the 'trustworthy, serious' tone required for a family bank.",
  "label": "${EvalLabel.FAIL}"
}

Input:
Company Name: "GymTiger"
Description: "Gym for heavy lifters."
Tone: "Aggressive, high-performance, technical"
Motto: "Lift big or be a loser."
Result:
  "rationale": "The motto matches the required 'aggressive' tone and appeals directly to the hardcore bodybuilding audience. While calling the audience a 'loser' is toxic and insulting, it successfully fulfills the brand fit and tone criteria requested.",
  "label": "${EvalLabel.PASS}"
}

Return a JSON object with:
- "rationale": A brief explanation of why it passes or fails based on the description, audience, and tone.
- "label": "${EvalLabel.PASS}" or "${EvalLabel.FAIL}"`;
}

Alinea y prueba

Lee cómo configurar un juez básico, parte 2 para terminar de compilar el juez con alineación y pruebas.