Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, evaluará la aplicación de chat que creó en la parte 2 de la serie de tutoriales. Evalúas la calidad de la aplicación en varias métricas y, a continuación, recorres en iteración las mejoras. En esta parte, hará lo siguiente:
- Creación de un conjunto de datos de evaluación
- Evaluación de la aplicación de chat con evaluadores de Azure AI
- Repetir y mejorar la aplicación
Este tutorial se basa en la parte 2: Compilación de una aplicación de chat personalizada con el SDK de Microsoft Foundry.
Prerrequisitos
Nota:
En este tutorial se usa un proyecto basado en concentrador. Los pasos y el código que se muestran aquí no funcionan para los proyecto Foundry. Para más información, vea Tipos de proyectos.
- Complete la parte 2 de la serie de tutoriales para compilar la aplicación de chat.
- Use el mismo proyecto de Microsoft Foundry que creó en la parte 1.
- Permisos de Azure AI: rol propietario o colaborador para modificar los límites de velocidad del punto de conexión del modelo y ejecutar trabajos de evaluación.
- Asegúrese de completar los pasos para agregar el registro de telemetría de la parte 2.
Creación de un conjunto de datos de evaluación
Use el siguiente conjunto de datos de evaluación, que contiene preguntas de ejemplo y respuestas esperadas. Utiliza este conjunto de datos con un evaluador y la función objetivo get_chat_response() para evaluar el rendimiento de tu aplicación de chat en las métricas de relevancia, fundamentación y coherencia.
Cree un archivo denominado chat_eval_data.jsonl en la carpeta assets .
Pegue este conjunto de datos en el archivo:
{"query": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"query": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"query": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"query": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"query": "What brand is TrailMaster tent? ", "truth": "OutdoorLiving"} {"query": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"query": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"query": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"query": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"query": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"query": "How long are the TrailBlaze pants under warranty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"query": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"query": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}Referencias: formato JSONL para conjuntos de datos de evaluación.
Evaluación con los evaluadores de Azure AI
Cree un script de evaluación que genere un contenedor de funciones de destino, cargue el conjunto de datos, ejecute la evaluación y registre los resultados en el proyecto foundry.
Cree un archivo denominado evaluate.py en la carpeta principal.
Agregue el código siguiente para importar las bibliotecas necesarias, cree un cliente de proyecto y configure algunas opciones:
import os import pandas as pd from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.ai.evaluation import evaluate, GroundednessEvaluator from azure.identity import DefaultAzureCredential from chat_with_products import chat_with_products # load environment variables from the .env file at the root of this repo from dotenv import load_dotenv load_dotenv() # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, "azure_deployment": os.environ["EVALUATION_MODEL"], "api_version": "2024-06-01", "api_key": connection.key, } groundedness = GroundednessEvaluator(evaluator_model)Referencias: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Agregue código para crear una función contenedora que implemente la interfaz de evaluación para la evaluación de consultas y respuestas:
def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) return {"response": response["message"].content, "context": response["context"]["grounding_data"]}Referencias: azure-ai-evaluation, funciones objetivo de evaluación.
Por último, agregue código para ejecutar la evaluación, ver los resultados localmente y obtener un vínculo a los resultados de evaluación en el portal de Foundry:
# Evaluate must be called inside of __main__, not on import if __name__ == "__main__": from config import ASSET_PATH # workaround for multiprocessing issue on linux from pprint import pprint from pathlib import Path import multiprocessing import contextlib with contextlib.suppress(RuntimeError): multiprocessing.set_start_method("spawn", force=True) # run evaluation with a dataset and target function, log to the project result = evaluate( data=Path(ASSET_PATH) / "chat_eval_data.jsonl", target=evaluate_chat_with_products, evaluation_name="evaluate_chat_with_products", evaluators={ "groundedness": groundedness, }, evaluator_config={ "default": { "query": {"${data.query}"}, "response": {"${target.response}"}, "context": {"${target.context}"}, } }, azure_ai_project=project.scope, output_path="./myevalresults.json", ) tabular_result = pd.DataFrame(result.get("rows")) pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")Referencias: azure-ai-evaluation, AIProjectClient.
Configuración del modelo de evaluación
El script de evaluación llama al modelo muchas veces. Considere la posibilidad de aumentar el número de tokens por minuto para el modelo de evaluación.
En la parte 1 de esta serie de tutoriales, creó un archivo .env en el que se especifica el nombre del modelo de evaluación, gpt-4o-mini. Intente aumentar el límite de tokens por minuto para este modelo, si tiene cuota disponible. Si no tiene suficiente cuota para aumentar el valor, no se preocupe. El script está diseñado para controlar los errores de límite.
- En el proyecto en el portal de Foundry, seleccione Modelos y puntos de conexión.
- Seleccione gpt-4o-mini.
- Seleccione Editar.
- Si tiene una cuota de uso, aumente el límite de tasa de tokens por minuto a 30 o más.
- Haga clic en Guardar y cerrar.
Ejecución del script de evaluación
Desde la consola, inicie sesión en su cuenta de Azure mediante la CLI de Azure:
az loginInstale el paquete necesario:
pip install azure-ai-evaluation[remote]Referencias: Azure-AI-Evaluation SDK, documentación de Evaluación del SDK.
Comprobación de la configuración de evaluación
Antes de ejecutar la evaluación completa (que tarda entre 5 y 10 minutos), compruebe que el SDK y la conexión del proyecto funcionan ejecutando esta prueba rápida:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Verify connection to project
client = AIProjectClient.from_config(credential=DefaultAzureCredential())
print("Evaluation SDK is ready! You can now run evaluate.py")
Si ve "Evaluation SDK is ready!", la configuración se ha completado y puede continuar.
Referencias: AIProjectClient, DefaultAzureCredential.
Iniciar la evaluación
Ejecute el script de evaluación:
python evaluate.py
La evaluación tarda entre 5 y 10 minutos en completarse. Es posible que vea advertencias de tiempo de espera y errores de límite de velocidad. El script controla estos errores automáticamente y continúa el procesamiento.
Interpretación de la salida de evaluación
En la salida de la consola, verá una respuesta para cada pregunta, seguida de una tabla con métricas resumidas que muestran la relevancia, la base y las puntuaciones de coherencia. Las puntuaciones oscilan entre 0 (peor) y 4 (mejor) para las métricas asistidas por GPT. Busque puntuaciones de baja base para identificar las respuestas que no son bien compatibles con los documentos de referencia y puntuaciones de baja relevancia para identificar las respuestas fuera del tema.
Es posible que vea muchos mensajes WARNING:opentelemetry.attributes: y errores de tiempo de espera. Puede omitir estos mensajes tranquilamente. No afectan a los resultados de la evaluación. El script de evaluación está diseñado para controlar los errores de límite de velocidad y continuar el procesamiento.
La salida de los resultados de la evaluación también incluye un vínculo para ver los resultados detallados en el portal de Foundry, donde puede comparar ejecuciones de evaluación en paralelo y realizar un seguimiento de las mejoras a lo largo del tiempo.
====================================================
'-----Summarized Metrics-----'
{'groundedness.gpt_groundedness': 1.6666666666666667,
'groundedness.groundedness': 1.6666666666666667}
'-----Tabular Result-----'
outputs.response ... line_number
0 Could you specify which tent you are referring... ... 0
1 Could you please specify which camping table y... ... 1
2 Sorry, I only can answer queries related to ou... ... 2
3 Could you please clarify which aspects of care... ... 3
4 Sorry, I only can answer queries related to ou... ... 4
5 The TrailMaster X4 Tent comes with an included... ... 5
6 (Failed) ... 6
7 The TrailBlaze Hiking Pants are crafted from h... ... 7
8 Sorry, I only can answer queries related to ou... ... 8
9 Sorry, I only can answer queries related to ou... ... 9
10 Sorry, I only can answer queries related to ou... ... 10
11 The PowerBurner Camping Stove is designed with... ... 11
12 Sorry, I only can answer queries related to ou... ... 12
[13 rows x 8 columns]
('View evaluation results in Foundry portal: '
'https://xxxxxxxxxxxxxxxxxxxxxxx')
Iteración y mejora
Los resultados de la evaluación revelan que las respuestas a menudo no están bien fundamentadas en los documentos de referencia. Para mejorar la fundamentación, modifique la instrucción del sistema en el archivo assets/grounded_chat.prompty para incentivar al modelo a utilizar los documentos de referencia de manera más directa.
Mensaje actual (problemático)::
If the question is not related to outdoor/camping gear and clothing, just say 'Sorry, I only can answer queries related to outdoor/camping gear and clothing. So, how can I help?'
If the question is related to outdoor/camping gear and clothing but vague, ask clarifying questions.
Mensaje mejorado:
If the question is related to outdoor/camping gear and clothing, answer based on the reference documents provided.
If you cannot find information in the reference documents, say: 'I don't have information about that specific topic. Let me help with related products or try a different question.'
For vague questions, ask clarifying questions to better assist.
Después de actualizar el mensaje:
Guarde el archivo.
Vuelva a ejecutar el script de evaluación:
python evaluate.pyCompare los nuevos resultados de evaluación con la ejecución anterior. Debería ver puntuaciones de consistencia mejoradas.
Pruebe modificaciones adicionales como:
- Modificar la solicitud del sistema para centrarse en la precisión en lugar de la completitud
- Pruebas con un modelo diferente (por ejemplo,
gpt-4-turbosi está disponible) - Ajustar la recuperación de contexto para devolver documentos más relevantes
Cada iteración le ayuda a comprender qué cambios mejoran las métricas específicas.
Limpieza de recursos
Para evitar incurrir en costos innecesarios de Azure, elimine los recursos que creó en este tutorial si ya no son necesarios. Para administrar recursos, puede usar Azure Portal.