Descubre el razonamiento de Gemini: una guía paso a paso de logprobs en Vertex AI

16 DE JULIO DE 2025
Eric Dong Developer Advocate

¿Alguna vez deseaste poder ver por qué el modelo Gemini eligió una palabra sobre otra? Para los desarrolladores que crean aplicaciones sofisticadas, comprender el proceso de toma de decisiones de un modelo es crucial. Ahora puedes hacerlo. El razonamiento del modelo ya no es una caja negra. La función logprobs se introdujo oficialmente en la API de Gemini en Vertex AI, lo que permite obtener una visión más profunda de las opciones del modelo.

Esta función te permite ver las puntuaciones de probabilidad para el token elegido y sus principales alternativas, lo que te brinda una visión sin precedentes del razonamiento del modelo. Esto es más que una herramienta de depuración; es una forma de compilar aplicaciones más inteligentes, confiables y conscientes del contexto.

Esta publicación de blog te guiará paso a paso a través del notebook "Introducción a logprobs": te mostrará cómo habilitar esta función y aplicarla a casos de uso potentes, como la clasificación segura, el autocompletado dinámico y la evaluación cuantitativa de RAG.


Primeros pasos: configuración de tu entorno

Primero, preparemos tu entorno para poder continuar.

  1. Instala el SDK: necesitarás el SDK de Google GenAI para Python. Si no lo tienes, instálalo o actualízalo con el siguiente comando:
%pip install -U -q google-genai
Python

2. Configura tu proyecto: configura tu ID y ubicación de Google Cloud Project. Este tutorial utiliza estas credenciales para autenticar tu entorno.

PROJECT_ID = "[your-project-id]"
Python

3. Inicializa el cliente y el modelo: crea un cliente para interactuar con la API de Vertex AI y especifica el modelo de Gemini que deseas usar.

desde google importa genai
client = genai.Client(vertexai=True, project=PROJECT_ID, location="global")
MODEL_ID = "gemini-2.5-flash"
Python

¿Qué son exactamente las logprobs?

Antes de habilitar la función, aclaremos qué es una probabilidad logarítmica. Un logprob es el logaritmo natural de la puntuación de probabilidad del modelo asignado a un token.

Estos son los conceptos clave:

  • Una probabilidad es siempre un valor entre 0 y 1.

  • El logaritmo natural de cualquier número entre 0 y 1 es siempre un número negativo.

  • El logaritmo natural de 1 (que representa el 100% de certeza) es 0.


Por lo tanto, una puntuación de logprob más cercana a 0 indica una mayor confianza del modelo en su elección.


Habilitación y procesamiento de logprobs

Puedes habilitar las probabilidades logarítmicas estableciendo dos parámetros en generation_config de tu solicitud.

  • response_logprobs=True: esto le indica al modelo que muestre las probabilidades logarítmicas de los tokens que eligió para su resultado. Su valor predeterminado es Falso.

  • logprobs=[integer]: esto le pide al modelo que también muestre las probabilidades logarítmicas para un número específico de los tokens alternativos principales en cada paso. El valor aceptado está entre 1 y 20.


Veámoslo en acción con una simple indicación de clasificación. Le pediremos al modelo que clasifique una oración como "Positiva", "Negativa" o "Neutral".

from google.genai.types import GenerateContentConfig
prompt = "I am not sure if I really like this restaurant a lot."
response_schema = {"type": "STRING", "enum": ["Positive", "Negative", "Neutral"]}
 
response = client.models.generate_content(
    model=MODEL_ID,
    contents=prompt,
    generation_config=GenerateContentConfig(
        response_mime_type="application/json",              
        response_schema=response_schema,
        response_logprobs=True,
        logprobs=3,
    ),
)
Python

Procesamiento del resultado de logprobs

Los datos de logprobs se muestran dentro del objeto de respuesta. Puedes usar una función auxiliar para imprimir las probabilidades logarítmicas en un formato legible. La siguiente función proporciona una visión detallada de las predicciones del modelo para cada token en la respuesta generada.

def print_logprobs(response):
 """
 Print log probabilities for each token in the response
 """
 if response.candidates and response.candidates[0].logprobs_result:
   logprobs_result = response.candidates[0].logprobs_result
   for i, chosen_candidate in enumerate(logprobs_result.chosen_candidates):
     print(
       f"Token: '{chosen_candidate.token}' ({chosen_candidate.log_probability:.4f})"
       )
     if i < len(logprobs_result.top_candidates):
       top_alternatives = logprobs_result.top_candidates[i].candidates
       alternatives = [
         alt
         for alt in top_alternatives
         if alt.token != chosen_candidate.token
       ]
       if alternatives:
         print("Alternative Tokens:")
         for alt_token_info in alternatives:
           print(
           f"  - '{alt_token_info.token}': ({alt_token_info.log_probability:.4f})"
           )
     print("-" * 20)
Python

Interpretación del resultado

Digamos que el modelo mostró lo siguiente:

  1. Token: 'Neutral' (-0.0214)


2. Tokens alternativos:

  • 'Positivo': (-4.8219)

  • 'Negativo': (-5.6293)


Este resultado muestra que el modelo confía mucho en su elección de "Neutral", ya que su probabilidad logarítmica (-0,0214) es muy cercana a 0. Las alternativas, "Positiva" y "Negativa", tienen probabilidades logarítmicas significativamente más bajas (más negativas), lo que indica que el modelo las consideró mucho menos probables.


Caso de uso 1: clasificación más inteligente

Logprobs transforma la clasificación de una respuesta simple en una decisión transparente, lo que te permite crear sistemas más sólidos.

Detección de ambigüedad para revisión humana

Escenario: deseas automatizar una tarea de clasificación, pero debes marcar los casos ambiguos en los que el modelo no es seguro.

¿Por qué logprobs?: una pequeña diferencia entre las dos principales probabilidades logarítmicas es una señal de ambigüedad. Puedes verificar esta diferencia con un margen para decidir si se necesita una revisión humana.

La función check_for_ambiguity del notebook calcula la diferencia absoluta entre los logprobs de la primera y la segunda opción. Si esta diferencia es menor que un ambiguity_margin predefinido, marca el resultado como ambiguo.


Umbral basado en la confianza

Escenario: para aplicaciones críticas, solo deseas aceptar una clasificación si la confianza del modelo excede un cierto nivel, como el 90%.

¿Por qué logprobs?: logprobs te da una medida directa de la confianza del modelo. Puedes volver a convertir la probabilidad logarítmica del token elegido en una puntuación de probabilidad bruta para aplicar un umbral.

La función accept_if_confident lo demuestra utilizando math.exp() para convertir el logprob en un porcentaje de probabilidad y luego comprueba si está por encima de un umbral.


Caso de uso 2: autocompletado dinámico

Escenario: deseas crear una función de autocompletado que sugiera las siguientes palabras más probables a medida que el usuario escribe.

¿Por qué logprobs?: al consultar repetidamente el modelo con el texto en crecimiento y examinar las logprobs de los mejores candidatos, puedes observar las predicciones cambiantes del modelo y ofrecer sugerencias relevantes en tiempo real.

El notebook simula a un usuario escribiendo "Lo mejor de vivir en Toronto es" palabra por palabra. A medida que el contexto crece, las sugerencias para la siguiente palabra se vuelven más específicas y precisas:

auto-complete analysis

Análisis:

  • Observa cómo evolucionan las predicciones. Para "Lo", las sugerencias son palabras de inicio genéricas.

  • Con el contexto completo de "Lo mejor de vivir en Toronto es", el modelo predice con confianza atributos específicos de Toronto como "diversidad" y "comida", mostrando su profunda comprensión contextual.


Esto muestra cómo las logprobs te brindan una ventana a la comprensión contextual del modelo, lo que te permite crear funciones más adaptativas y conscientes del contexto.


Caso de uso 3: evaluación cuantitativa de RAG

Escenario: tienes un sistema RAG y necesitas evaluar qué tan bien respaldadas están sus respuestas por el contexto obtenido.

¿Por qué logprobs?: cuando un LLM tiene un contexto relevante, aumenta su confianza en la generación de una respuesta objetivamente coherente, lo que se refleja en mayores probabilidades logarítmicas. Puedes calcular una probabilidad logarítmica promedio para que la respuesta generada obtenga una puntuación de "conexión a tierra" o "confianza".

El notebook establece una base de conocimientos ficticia y prueba tres escenarios: buena obtención, obtención deficiente y no obtención.

logprobs_chart

Análisis:

Los resultados muestran una clara correlación. El escenario "Buena obtención" tiene la puntuación más alta (más cercana a cero), ya que el modelo tiene mucha confianza en que su respuesta está respaldada por el texto. Esto hace que logprobs sea una métrica poderosa para automatizar la evaluación y mejora de tus sistemas RAG.


Lo que viene

Ya aprendiste a usar la función logprobs para obtener una visión más profunda del proceso de toma de decisiones del modelo. Analizamos cómo aplicar estos conocimientos para analizar los resultados de la clasificación, crear funciones dinámicas de autocompletado y evaluar los sistemas RAG.

Estas son solo algunas de las aplicaciones de ejemplo, y con esta función, hay muchos más casos de uso para que los desarrolladores exploren.

Para profundizar, explora el notebook completo y consulta la documentación oficial: