Comenzando con la evaluación del proyecto azure ai
Al crear aplicaciones de IA generativa, especialmente aquellas que emplean la generación aumentada por recuperación (RAG), uno de los mayores desafíos es garantizar constantemente que cumplen con los requisitos de calidad, costo y latencia. No basta con simplemente implementar un modelo; necesito saber que funciona como se espera, día tras día. Ahí es donde Azure AI Foundry, el sucesor de Azure AI Studio, se ha convertido en una parte indispensable de mi conjunto de herramientas.
Azure AI Foundry actúa como un centro central para desarrollar e implementar agentes y aplicaciones de IA, y sus robustas herramientas para la supervisión y evaluación de modelos son particularmente valiosas. Es donde puedo aprovechar el creciente conjunto de modelos de IA de Microsoft, junto con asociaciones como OpenAI, lo que la convierte en una plataforma estratégica para cualquier trabajo de desarrollo de IA.
En esta guía, te mostraré cómo aprovechar el SDK de Azure AI Project para evaluar modelos de IA generativa de forma programática. Nos centraremos en métricas clave como Groundedness (fundamentación) y Relevance (relevancia), que son absolutamente cruciales para las aplicaciones RAG, y demostraré cómo realizar evaluaciones asistidas por IA. Al final, espero que te sientas competente para configurar un pipeline de evaluación e interpretar sus resultados, de modo que tus soluciones de IA generativa ofrezcan constantemente resultados de alta calidad.
Lo que compartiré contigo
- Cómo configuré el SDK de Azure AI Project para Python.
- Mi enfoque de las métricas clave de evaluación de la IA generativa, como la fundamentación, la relevancia y la fluidez.
- Pasos prácticos que sigo para ejecutar evaluaciones asistidas por IA para aplicaciones RAG.
- Métodos que utilizo para interpretar los resultados de la evaluación e integrarlos en mi flujo de trabajo de desarrollo.
Prerrequisitos
Antes de sumergirme en las tareas de evaluación, siempre me aseguro de que mi entorno esté configurado correctamente. Esta guía asume un nivel intermedio de familiaridad con Python, los servicios de Azure y los conceptos fundamentales de la IA generativa.
- Python 3.12 o posterior: Instalado en tu sistema. Puedes verificarlo con
python --versionopython3 --version. - Suscripción a azure: Se requiere una suscripción a Azure activa. Asegúrate de tener un Proyecto Azure AI Foundry creado y una implementación de modelo disponible para actuar como tu objetivo de evaluación. Además, para que los evaluadores asistidos por IA funcionen, necesitarás acceso a modelos GPT fundamentales (como GPT-3.5 Turbo o GPT-4) dentro de tu proyecto.
- Herramientas CLI: Familiaridad con Azure CLI o Azure Portal para la gestión de recursos.
- Paquetes python:
pip install azure-ai-project azure-identity pandas tabulate. - IDE: Un IDE como Visual Studio Code para el desarrollo de Python.
Según mi experiencia, el núcleo de una evaluación exitosa reside en una configuración metódica. Así es como lo abordo.
1. Configurar mi proyecto python y las importaciones
Comienzo creando un nuevo archivo Python, a menudo llamado algo como evaluate_genai.py. Aquí es donde importo los módulos necesarios y configuro el cliente para conectarme a mi proyecto de Azure AI. Recuerda reemplazar los valores de marcador de posición a continuación con los detalles reales de tu proyecto; normalmente los almaceno en variables de entorno para una mayor seguridad y flexibilidad.
import os
from azure.identity import DefaultAzureCredential
from azure.ai.project import AIProjectClient
# --- Configuración --- #
# Reemplace con los detalles de su proyecto Azure AI. Normalmente encuentro el punto final
# en el portal de Azure AI Studio bajo la configuración de mi proyecto.
AZURE_AI_PROJECT_ENDPOINT = os.environ.get("AZURE_AI_PROJECT_ENDPOINT", "your_project_endpoint")
# El nombre de su modelo implementado que quiero evaluar.
EVALUATION_TARGET_DEPLOYMENT = os.environ.get("EVALUATION_TARGET_DEPLOYMENT", "your_model_deployment_name")
# Inicializar DefaultAzureCredential para la autenticación
credential = DefaultAzureCredential()
print("Azure credential initialized.")
# Inicializar AIProjectClient
project_client = AIProjectClient(endpoint=AZURE_AI_PROJECT_ENDPOINT, credential=credential)
print("AIProjectClient initialized.")
# Carpeta base para salidas
OUTPUT_FOLDER = "./eval_outputs"
os.makedirs(OUTPUT_FOLDER, exist_ok=True)
print(f"Output folder '{OUTPUT_FOLDER}' ensured.")
Este fragmento importa las clases necesarias para la interacción del proyecto y la autenticación. Configura el punto final para mi proyecto de IA e inicializa AIProjectClient, que es mi punto de entrada principal para administrar los recursos del proyecto. También configuro un directorio de salida para almacenar los resultados.
Consejo de autenticación de azure
Si encuentras un AuthenticationRequiredError, la solución más rápida suele ser ejecutar az login en tu terminal. Esto garantiza que tu DefaultAzureCredential pueda recoger tu sesión de Azure CLI. Para escenarios de producción, siempre abogo por el uso de identidades administradas de Azure para evitar la gestión directa de credenciales.
2. Preparar mi conjunto de datos de evaluación
Para evaluar una aplicación RAG de manera efectiva, necesito un conjunto de datos que comprenda indicaciones y el contexto contra el cual se juzgará la respuesta del modelo. Fundamentalmente, la finalización del modelo no es parte de estos datos de entrada; se genera durante la propia ejecución de la evaluación.
# Este es un conjunto de datos de ejemplo que podría usar para la evaluación,
# imitando una sesión de preguntas y respuestas sobre documentos financieros.
# La estructura 'item' es requerida por el marco de evaluación.
data_for_evaluation = {
"type": "file_content",
"content": [
{
"item": {
"prompt_text": "¿Cuál es el principal desafío financiero para NVIDIA en 2026?",
"context_text": "El 15 de marzo de 2026, NVIDIA informó de sólidos resultados del cuarto trimestre de 2025, pero destacó posibles desafíos en el próximo año fiscal debido a la intensificación de la competencia de Intel y AMD en el mercado de aceleradores de IA. Los analistas de la cadena de suministro también señalaron complejidades persistentes para asegurar las capacidades de fabricación avanzadas para las GPU H200 y Blackwell de próxima generación de NVIDIA, lo que podría afectar el crecimiento de los ingresos."
}
},
{
"item": {
"prompt_text": "Explique el impacto de la última subida de tipos de interés por parte del BCE en los mercados de bonos.",
"context_text": "El 2 de abril de 2026, el Banco Central Europeo (BCE) anunció un aumento de 25 puntos básicos en sus tipos de interés clave, citando preocupaciones persistentes sobre la inflación. Tras este anuncio, los analistas de Bloomberg informaron de un fuerte aumento en los rendimientos de los Bund alemanes a 10 años, lo que indica una amplia revalorización de la deuda soberana en la Eurozona debido a mayores costes de financiación para los gobiernos y una menor atractivo de los bonos existentes con menor rendimiento."
}
}
]
}
print(f"Prepared {len(data_for_evaluation['content'])} data points for evaluation.")
Este diccionario define mi fuente de datos de evaluación. Cada item contiene el prompt_text (la consulta del usuario) y el context_text (la información recuperada). El modelo que estoy evaluando generará una respuesta basada en estas entradas, que los evaluadores luego evaluarán.
3. Definir evaluadores asistidos por ia
En el SDK de Azure AI Project, defino mis evaluadores como parte de los testing_criteria. Especifico el nombre de la métrica incorporada (como builtin.groundedness) y luego mapeo los campos de datos de mi conjunto de datos a las entradas requeridas por ese evaluador.
# Defino los evaluadores aquí. Estos aprovechan los modelos GPT fundamentales
# aprovisionados dentro de mi proyecto Azure AI. El 'data_mapping' conecta
# las columnas de mi conjunto de datos con las entradas esperadas del evaluador.
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "groundedness_eval",
"evaluator_name": "builtin.groundedness",
"data_mapping": {
"question": "{{item.prompt_text}}",
"context": "{{item.context_text}}",
"answer": "{{target.response}}" # 'target.response' es la respuesta generada por el modelo
},
},
{
"type": "azure_ai_evaluator",
"name": "relevance_eval",
"evaluator_name": "builtin.relevance",
"data_mapping": {
"question": "{{item.prompt_text}}",
"answer": "{{target.response}}"
},
}
]
print(f"Configured {len(testing_criteria)} AI-assisted evaluators.")
Aquí, estoy configurando una lista de diccionarios, cada uno configurando un evaluador. evaluator_name especifica la métrica, y data_mapping utiliza una sintaxis de plantilla para conectar las entradas. {{item.prompt_text}} y {{item.context_text}} se refieren a campos en mi conjunto de datos, mientras que {{target.response}} es un marcador de posición especial para la finalización generada por el modelo bajo evaluación. A menudo me refiero a la documentación de Azure sobre métricas de evaluación para los mapeos exactos.
4. Ejecutar la evaluación
Con mis datos y evaluadores definidos, el siguiente paso es crear un objeto de evaluación y luego activar una ejecución. Este es un proceso asíncrono gestionado por Azure AI. Normalmente lo inicio y luego superviso su progreso en el portal.
# Obtengo el cliente de OpenAI del cliente del proyecto para interactuar con las evaluaciones.
openai_client = project_client.get_openai_client()
print("Creating evaluation object...")
eval_object = openai_client.evals.create(
name="Financial QA Evaluation",
testing_criteria=testing_criteria, # type: ignore
)
print(f"Evaluation object created (id: {eval_object.id}).")
# Defino la fuente de datos y el modelo de destino a evaluar.
data_source = {
"type": "azure_ai_target_completions",
"source": data_for_evaluation,
"input_messages": {
"type": "template",
"template": [
{
"type": "message",
"role": "user",
"content": [
{"type": "input_text", "text": "Context: {{item.context_text}}\n\nQuestion: {{item.prompt_text}}"}
]
}
],
},
"target": {
"type": "azure_ai_model_deployment",
"name": EVALUATION_TARGET_DEPLOYMENT
},
}
print("Starting evaluation run...")
# Nota: Esta operación incurrirá en costos basados en el uso de tokens de los LLM subyacentes.
# A principios de 2026, un costo representativo podría ser de aproximadamente
# 0,01 € por 1k tokens de entrada y 0,03 € por 1k tokens de salida. (Usando $1 \u2248 0,92 € de conversión)
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="financial_qa_eval_202604",
data_source=data_source # type: ignore
)
print(f"Evaluation run created and is in progress (id: {eval_run.id}).")
print("Monitor the run status and view results in the Azure AI Foundry portal.")
La función evals.create registra mi definición de evaluación, y evals.runs.create inicia la ejecución real. Utiliza el eval_id del paso anterior, un name legible para la ejecución (que aparece en el portal) y un objeto data_source. Este objeto le indica a Azure los datos de entrada, cómo formatearlos en una solicitud para el modelo y qué modelo implementado (target) quiero evaluar. Toda la ejecución se realiza en segundo plano en Azure.
5. Analizar los resultados de la evaluación
Una vez que la ejecución de la evaluación se completa en el portal de Azure AI Foundry, puedo descargar los resultados como un archivo JSONL para un análisis detallado. Normalmente navego a la sección "Evaluaciones" en mi Proyecto de IA en el portal, encuentro mi ejecución (financial_qa_eval_202604) y luego descargo el archivo evaluation_results.jsonl en mi carpeta eval_outputs. A partir de ahí, utilizo Python para analizar los resultados usando pandas para la manipulación de datos y tabulate para un formato markdown limpio.
import pandas as pd
import json
# Este paso asume que he descargado los resultados del portal.
results_path = os.path.join(OUTPUT_FOLDER, "evaluation_results.jsonl")
try:
# El archivo de resultados contiene un objeto JSON por línea.
with open(results_path, 'r') as f:
lines = f.readlines()
# Cada línea tiene una estructura compleja; necesito extraer las partes relevantes.
parsed_results = []
for line in lines:
data = json.loads(line)
# Extraer datos de entrada y métricas de evaluación.
# La estructura exacta puede variar; normalmente inspecciono mi archivo JSONL primero.
result_item = data.get('item', {})
metrics = data.get('metrics', {})
parsed_results.append({
'prompt_text': result_item.get('prompt_text'),
'completion_text': data.get('response'), # La respuesta generada
'groundedness_score': metrics.get('groundedness_eval.groundedness'),
'relevance_score': metrics.get('relevance_eval.relevance')
})
results_df = pd.DataFrame(parsed_results)
print("\n--- Resultados detallados por instancia (primeras 2 filas) ---")
print(results_df.head(2).to_markdown(index=False))
# Ejemplo: calcular y mostrar métricas agregadas.
print("\n--- Resultados de evaluación agregados ---")
print(f" Fundamentación promedio: {results_df['groundedness_score'].mean():.2f}")
print(f" Relevancia promedio: {results_df['relevance_score'].mean():.2f}")
except FileNotFoundError:
print(f"\nAnálisis omitido: No se pudo encontrar '{results_path}'. Descárguelo primero del portal de Azure AI Foundry.")
Este script lee el archivo JSONL descargado línea por línea, analiza la compleja estructura JSON para extraer la indicación de entrada, la finalización generada por el modelo y las puntuaciones de cada métrica. Luego cargo estos datos en un DataFrame de Pandas, lo que simplifica el análisis y la agregación.
6. Monitorear los resultados en el portal de azure ai foundry
Aunque el SDK me brinda control programático, sigo confiando mucho en el portal de Azure AI Foundry. Ofrece una interfaz de usuario centralizada para monitorear mis ejecuciones de evaluación, lo cual es particularmente útil para la supervisión operativa.
- Navegar a Azure AI Foundry : Inicie sesión en el portal de Azure AI Studio.
- Localizar mi proyecto : Seleccione su proyecto de Azure AI.
- Buscar ejecuciones de evaluación : Vaya a la sección "Evaluaciones". Debería ver una lista de evaluaciones y sus ejecuciones, incluida
financial_qa_eval_202604. - Revisar métricas y detalles : Al hacer clic en mi ejecución de evaluación, se me muestran métricas agregadas, resultados detallados por instancia y visualizaciones del rendimiento. Es la interfaz principal para rastrear tendencias en métricas como la fundamentación y la relevancia a lo largo del tiempo.
Solución de problemas de visibilidad de ejecución
Si una ejecución de evaluación no es visible en el portal, siempre reviso que mi AZURE_AI_PROJECT_ENDPOINT en el script de Python coincida correctamente con el proyecto de Azure AI que estoy viendo. También confirmo que la ejecución de evaluación se creó sin errores en primer lugar.
Visualizando el flujo de evaluación
Me parece que un diagrama a menudo ayuda a aclarar el proceso de evaluación, especialmente cuando hay múltiples componentes involucrados. Así es como concibo el flujo de datos y control para evaluar un modelo de IA generativa dentro de Azure AI Foundry:
Consideraciones de producción
La implementación de aplicaciones de IA generativa requiere una cuidadosa consideración de la seguridad, el rendimiento, la escalabilidad y la supervisión continua. Estas son áreas en las que dedico gran parte de mi tiempo a garantizar soluciones robustas.
Mejores prácticas de seguridad
- Menor privilegio : Siempre me aseguro de que cualquier principal de servicio o identidad administrada utilizada por mis pipelines de evaluación tenga solo los permisos necesarios, nada más.
- Protección de datos : Cifrar los conjuntos de datos de evaluación en reposo y en tránsito no es negociable. También implemento la anonimización de datos para cualquier dato sensible.
- Identidades administradas : Para cargas de trabajo de producción, utilizo exclusivamente identidades administradas de Azure para autenticarme en los servicios de Azure. Esto simplifica la gestión de credenciales y mejora la seguridad.
Optimización del rendimiento
- Procesamiento por lotes : El marco de evaluación está intrínsecamente diseñado para procesar conjuntos de datos en lotes de manera eficiente, así que lo aprovecho.
- Elección del evaluador : Si bien GPT-4 ofrece un razonamiento superior, he descubierto que puede ser más costoso y lento. Para evaluaciones a gran escala donde el costo y la latencia son preocupaciones, a menudo opto por GPT-3.5 Turbo si su calidad es aceptable para la tarea.
Consideraciones de escalabilidad
- Pipelines de azure machine learning : La integración de mi lógica de evaluación en pipelines de Azure Machine Learning permite una ejecución automatizada y escalable en flujos de trabajo de MLOps.
- Despliegue regional : Para mis proyectos europeos, siempre implemento recursos de Azure AI en regiones europeas como
westeuropeonortheuropepara minimizar la latencia para los usuarios con sede en la UE y garantizar el cumplimiento de la residencia de datos.
Recomendaciones de monitoreo
- Alertas : La configuración de alertas de Azure Monitor sobre métricas de evaluación clave es crucial. Por ejemplo, podría activar una alerta si la puntuación media de fundamentación cae por debajo de un umbral predefinido.
- Paneles : Creo paneles personalizados, ya sea en Azure AI Foundry o Azure Monitor, para visualizar las tendencias en las métricas de evaluación a lo largo del tiempo. Esto me ayuda a detectar regresiones rápidamente.
- Monitoreo de costos : El monitoreo continuo del costo asociado con mis llamadas LLM para la evaluación es vital. Establezco presupuestos y alertas de costos para evitar gastos inesperados excesivos.
Conclusión
La evaluación de modelos de IA generativa, particularmente en un contexto RAG, no es una tarea única, sino un proceso continuo. Lo que he compartido aquí es mi enfoque para integrar la evaluación en el ciclo de vida del desarrollo utilizando el SDK de Azure AI Project y el portal de Azure AI Foundry. La capacidad de definir programáticamente evaluadores, ejecutar pruebas contra un modelo implementado y luego analizar los resultados es fundamental para construir aplicaciones de IA confiables y de alto rendimiento. Es la 'última milla' que garantiza que la IA que construyo realmente ofrezca el retorno de la inversión prometido.
Mi recomendación es integrar estas evaluaciones directamente en sus pipelines de CI/CD. Establezca umbrales de métricas claros y deje que su pipeline falle si esos umbrales no se cumplen. Esto crea una poderosa protección contra la degradación del modelo. Si bien los evaluadores incorporados son un excelente punto de partida, no dude en explorar evaluadores personalizados para requisitos específicos.
Puntos clave
- Azure AI Foundry proporciona una plataforma robusta para la evaluación programática de modelos de IA generativa, crucial para las aplicaciones RAG.
- El SDK
azure.ai.projectpermite definir criterios de evaluación, conectar conjuntos de datos y activar ejecuciones de evaluación directamente desde Python. - Las métricas clave como Groundedness y Relevance se evalúan automáticamente utilizando evaluadores asistidos por IA alojados dentro del Proyecto de Azure AI.
- El monitoreo de los resultados en el portal de Azure AI Foundry y la integración del análisis en los pipelines de CI/CD son esenciales para mantener la calidad del modelo.
- El monitoreo de costos del uso de LLM durante las evaluaciones es fundamental para administrar los gastos, con costos típicos de aproximadamente 0,01 € por 1k tokens de entrada y 0,03 € por 1k tokens de salida (utilizando 1 $ \u2248 0,92 €).