Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique uniquement au :Portail Foundry (classique). Cet article n’est pas disponible pour le nouveau portail Foundry.
En savoir plus sur le nouveau portail.
Note
Les liens de cet article peuvent ouvrir du contenu dans la nouvelle documentation Microsoft Foundry au lieu de la documentation Foundry (classique) que vous affichez maintenant.
Dans ce tutoriel, vous évaluez l’application de conversation que vous avez créée dans la partie 2 de la série de tutoriels. Vous évaluez la qualité de votre application sur plusieurs métriques, puis effectuez une itération sur les améliorations. Dans cette partie, vous :
- Créer un jeu de données d’évaluation
- Évaluer l’application de chat avec les évaluateurs d’IA d’Azure
- Itérer et améliorer votre application
Ce tutoriel s’appuie sur Part 2 : Créer une application de conversation personnalisée avec le SDK Microsoft Foundry.
Conditions préalables
Important
Cet article fournit un support hérité pour les projets basés sur le hub. Elle ne fonctionnera pas pour les projets Foundry. Découvrez comment savoir quel type de projet j’ai ?
note de compatibilité SDK : les exemples de code nécessitent une version spécifique du SDK Foundry Microsoft. Si vous rencontrez des problèmes de compatibilité, envisagez de migrer d’un hub vers un projet Foundry.
- Un compte Azure avec un abonnement actif. Si vous n'en avez pas, créez un compte Azure gratuit, qui inclut un abonnement d'essai gratuit.
- Si vous n’en avez pas, créez un projet hub.
- Terminez la partie 2 de la série de tutoriels pour générer l’application de conversation.
- Utilisez le même projet hub que celui que vous avez créé dans la partie 1.
- Autorisations Azure AI : rôle Propriétaire ou Contributeur pour modifier les limites de débit du point de terminaison du modèle et exécuter des tâches d’évaluation.
- Veillez à effectuer les étapes pour ajouter la journalisation des données de télémétrie à partir de la partie 2.
Créer un jeu de données d’évaluation
Utilisez le jeu de données d’évaluation suivant, qui contient des exemples de questions et des réponses attendues. Utilisez ce jeu de données avec un évaluateur et la get_chat_response() fonction cible pour évaluer les performances de votre application de conversation sur la pertinence, l’importance et la cohérence des métriques.
Créez un fichier nommé chat_eval_data.jsonl dans votre dossier de ressources .
Collez ce jeu de données dans le fichier :
{"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"}Références : format JSONL pour les jeux de données d’évaluation.
Évaluer avec les évaluateurs d'Azure AI
Créez un script d’évaluation qui génère un wrapper de fonction cible, charge votre jeu de données, exécute l’évaluation et journalise les résultats dans votre projet Foundry.
Créez un fichier nommé evaluate.py dans votre dossier principal.
Ajoutez le code suivant pour importer les bibliothèques requises, créer un client de projet et configurer certains paramètres :
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)Références : AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Ajoutez du code pour créer une fonction wrapper qui implémente l’interface d’évaluation pour l’évaluation des requêtes et des réponses :
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"]}Références : azure-ai-evaluation, fonctions cibles d’évaluation.
Enfin, ajoutez du code pour exécuter l’évaluation, affichez les résultats localement et obtenez un lien vers les résultats de l’évaluation dans le portail 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']}")Références : azure-ai-evaluation, AIProjectClient.
Configurer le modèle d’évaluation
Le script d’évaluation appelle le modèle plusieurs fois. Envisagez d’augmenter le nombre de jetons par minute pour le modèle d’évaluation.
Dans la partie 1 de cette série de tutoriels, vous avez créé un fichier .env qui spécifie le nom du modèle d’évaluation. gpt-4o-mini Essayez d’augmenter la limite de jetons par minute pour ce modèle, si vous disposez d’un quota disponible. Si vous n’avez pas suffisamment de quota pour augmenter la valeur, ne vous inquiétez pas. Le script est conçu pour gérer les erreurs de limite.
- Dans votre projet dans le portail Foundry, sélectionnez Modèles + points de terminaison.
- Sélectionnez gpt-4o-mini.
- Sélectionnez Modifier.
- Si vous avez un quota, augmentez la limite de débit des jetons par minute à 30 ou plus.
- Sélectionnez Enregistrer et fermer.
Exécuter le script d’évaluation
À partir de votre console, connectez-vous à votre compte Azure à l’aide de l’Azure CLI :
az loginInstallez les packages requis :
pip install openai pip install azure-ai-evaluation[remote]Références : Kit de développement logiciel (SDK) azure-ai-evaluation, documentation du KIT SDK d’évaluation.
Vérifier la configuration de votre évaluation
Avant d’exécuter l’évaluation complète (qui prend 5 à 10 minutes), vérifiez que le Kit de développement logiciel (SDK) et la connexion de votre projet fonctionnent en exécutant ce test rapide :
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Test that you can connect to your project
project = AIProjectClient.from_connection_string(
conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential()
)
print("Evaluation SDK is ready! You can now run evaluate.py")
Si vous voyez "Evaluation SDK is ready!", votre configuration est terminée et vous pouvez continuer.
Références : AIProjectClient, DefaultAzureCredential.
Démarrer l’évaluation
Exécutez le script d’évaluation :
python evaluate.py
L’évaluation prend 5 à 10 minutes. Vous pouvez voir des avertissements de délai d’expiration et des erreurs de limite de débit. Le script gère automatiquement ces erreurs et continue de traiter.
Interpréter la sortie d’évaluation
Dans la sortie de la console, vous voyez une réponse pour chaque question, suivie d’un tableau contenant des métriques résumées présentant la pertinence, l’état de base et les scores de cohérence. Les scores vont de 0 (pire) à 4 (meilleurs) pour les métriques assistées par GPT. Recherchez des scores de faible ancrage pour identifier les réponses qui ne sont pas bien soutenues par les documents de référence et des scores de faible pertinence pour identifier les réponses hors sujet.
Vous pouvez voir de nombreux WARNING:opentelemetry.attributes: messages et erreurs de délai d’expiration. Vous pouvez ignorer ces messages en toute sécurité. Ils n’affectent pas les résultats de l’évaluation. Le script d’évaluation est conçu pour gérer les erreurs de limite de débit et poursuivre le traitement.
La sortie des résultats de l’évaluation inclut également un lien pour afficher des résultats détaillés dans le portail Foundry, où vous pouvez comparer les exécutions d’évaluation côte à côte et suivre les améliorations au fil du temps.
====================================================
'-----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')
Itérer et améliorer
Les résultats de l’évaluation révèlent que les réponses ne sont souvent pas bien ancrées dans les documents de référence. Pour améliorer l'ancrage, modifiez votre invite de commande dans le fichier assets/grounded_chat.prompty pour encourager le modèle à utiliser les documents de référence de manière plus directe.
Invite actuelle (problématique) :
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.
Invite de commande améliorée :
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.
Après la mise à jour de l’invite de commande :
Enregistrez le fichier.
Réexécutez le script d’évaluation :
python evaluate.pyComparez les nouveaux résultats d’évaluation à l’exécution précédente. Vous devriez voir des scores de solidité améliorés.
Essayez des modifications supplémentaires telles que :
- Modification de l’invite système pour se concentrer sur la précision au détriment de l'exhaustivité
- Test avec un autre modèle (par exemple,
gpt-4-turbosi disponible) - Ajustement de la récupération de contexte pour retourner des documents plus pertinents
Chaque itération vous aide à comprendre quelles modifications améliorent les métriques spécifiques.
Nettoyer les ressources
Pour éviter d'entraîner des coûts de Azure inutiles, supprimez les ressources que vous avez créées dans ce didacticiel si elles ne sont plus nécessaires. Pour gérer les ressources, vous pouvez utiliser le portail Azure.