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.
Important
Agent Optimizer est actuellement en préversion. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent ne pas être prises en charge ou avoir des fonctionnalités contraintes. Pour plus d’informations, consultez Conditions d'utilisation supplémentaires pour les versions préliminaires de Microsoft Azure.
L’optimiseur d’agent améliore quatre aspects de votre agent hébergé : instructions, compétences, outils et sélection de modèle. Il détecte automatiquement les cibles à optimiser à partir de la configuration de base de votre agent.
Cet article explique comment exécuter une optimisation, configurer et surveiller l’exécution et déployer les résultats. Pour ce que fait chaque cible et quand elle s’active, consultez les cibles d’optimisation. Pour configurer les entrées de base, consultez Rendre votre optimiseur d’agent prêt. Pour obtenir une référence rapide sur ce que l’optimiseur change, consultez Ce que chaque cible change.
Prerequisites
- Un projet Foundry avec un agent hébergé déployé
- L’extension
azure.ai.agentsCLI installée (voir Démarrage rapide : Optimiser un agent hébergé) - Un modèle déployé pour l’évaluation (par exemple)
gpt-4.1-miniet un modèle d’optimisation à partir de la liste prise en charge (par exemple,gpt-5.1) - Votre agent est prêt pour l’optimisation (appelle
load_config())
Exécuter une optimisation
Démarrez une exécution d’optimisation avec une seule commande :
azd ai agent optimize
L’optimiseur évalue votre base de référence, génère des candidats, les évalue et classe les résultats. Pour obtenir le cycle d’évaluation et d’amélioration complet, consultez le fonctionnement de l’optimiseur d’agent. Les cibles exécutées dépendent de votre configuration de base de référence : l’optimisation des instructions, l’amélioration des compétences et l’optimisation des outils s’activent automatiquement lorsque les fichiers de base correspondants sont présents. Consultez les cibles d’optimisation.
Pour contrôler l’exécution avec un fichier de configuration, transmettez un eval.yaml faisant référence à votre jeu de données, à des évaluateurs et à des options :
azd ai agent optimize --config eval.yaml
Pour obtenir le schéma complet eval.yaml , consultez Configurer l’exécution de l’optimisation.
Cibler un agent spécifique
La façon dont l’interface CLI résout l’agent dépend de l’exécution de la commande à partir d’un azd projet :
| Context | Résolution de l’agent | Exemple |
|---|---|---|
Dans un azd projet |
La CLI détecte le service de l’assistant hébergé à partir de azure.yaml et résout son nom d’assistant déployé à partir de l’environnement azd actuel. Permet --agent de sélectionner un azure.yaml service lorsque le projet contient plusieurs agents. |
azd ai agent optimize --agent support-service |
Hors d’un azd projet |
La valeur ou l’argument positionnel --agent correspond au nom de l’agent Foundry déployé. |
azd ai agent optimize --agent my-support-agent |
Avec --config |
Le champ agent.name dans eval.yaml fournit le nom de l’agent déployé. Une valeur explicite --agent la remplace. |
agent:\n name: my-support-agent |
Le nom de l’agent déployé doit correspondre à un agent hébergé dans le projet Foundry cible.
Note
Exécutez azd ai agent invoke "test" pour vérifier que votre agent répond avant de commencer l’optimisation.
Optimiser un agent existant sans fichiers projet AZD
Vous pouvez optimiser un agent hébergé existant sans exécuter azd ai agent init et sans créer azure.yaml ou créer un répertoire d’environnement .azure . Dans ce flux autonome, fournissez explicitement le point de terminaison du projet Foundry et le nom de l’agent déployé.
Assurez-vous que l’agent déployé est compatible avec l’optimiseur. Dans un répertoire de travail local, créez le fichier d’instructions, le jeu de données, les évaluateurs et
eval.yamldécrits dans Configurer l’exécution de l’optimisation.Exécutez la commande à partir de ce répertoire de travail. Sans projet
azd, les chemins relatifs danseval.yamlsont résolus à partir du répertoire de travail actuel.Pour ce flux autonome, omettez
agent.config. L’interface CLI demande l’instruction de base lorsque vous exécutez la commande :# eval.yaml agent: name: my-support-agent kind: hosted model: gpt-4.1-mini dataset: local_uri: ./eval.jsonl evaluators: - builtin.task_adherence options: eval_model: gpt-4.1-mini optimization_model: gpt-5.1 max_candidates: 2Authentifier:
az login azd auth loginCopiez le point de terminaison du projet à partir de la page Vue d’ensemble du projet Foundry. Utilisez l’URL du point de terminaison du projet, et non l’ID de ressource Azure.
Enregistrez le point de terminaison dans votre configuration au niveau
azdde l’utilisateur afin que les commandes suivantes puissent résoudre le même projet à partir de n’importe quel répertoire :azd ai project set "<project-endpoint>" azd ai project showCette étape écrit le point de terminaison par défaut dans
~/.azd/config.json. Pour obtenir l’ordre de résolution complet et les commandes pour inspecter ou effacer le contexte enregistré, consultez Définir le contexte du projet Foundry pour les commandes azd.Exécutez l’optimisation avec le nom de l’agent déployé :
azd ai agent optimize --agent "<deployed-agent-name>" --config eval.yamlLorsque vous êtes invité à saisir l’instruction de l’agent, fournissez-la directement dans le champ ou sélectionnez un fichier, par exemple
.agent_configs/baseline/instructions.md.Note
Dans la préversion actuelle, une exécution autonome ne se développe
agent.configpas à partir deeval.yaml. Exécutez la commande de manière interactive afin de pouvoir fournir l’instruction de base. N’utilisez pas--no-promptpour ce flux. Le chargement des bases de référence de compétences et d’outils fondées sur des fichiers nécessite également un projetazd.Pour une commande ponctuelle qui ne doit pas modifier votre configuration au niveau de l’utilisateur, passez
--project-endpoint:azd ai agent optimize \ --project-endpoint "<project-endpoint>" \ --agent "<deployed-agent-name>" \ --config eval.yamlVous pouvez également définir le point de terminaison pour la session shell en cours :
export FOUNDRY_PROJECT_ENDPOINT="<project-endpoint>" azd ai agent optimize --agent "<deployed-agent-name>" --config eval.yamlEnregistrez l’ID d’opération à partir de la sortie de la commande. Étant donné que ce flux n’a pas d’environnement
azd, l’interface CLI ne conserve pas le dernier ID d’opération localement. Transmettez l’ID d’opération aux commandes de suivi :azd ai agent optimize status <operation-id> --watch azd ai agent optimize list azd ai agent optimize cancel <operation-id>Ces commandes utilisent le point de terminaison enregistré par
azd ai project set. Si vous avez utilisé à la place la forme ponctuelle--project-endpoint, spécifiez de nouveau l’option pour chaque commande ultérieure.
Important
azd ai agent optimize apply nécessite un azd projet, car il écrit des fichiers candidats sous .agent_configs/ et met à jour le service d’agent dans azure.yaml. Si vous ne souhaitez pas créer de fichiers projet AZD, passez en revue et déployez le candidat gagnant à partir du portail Foundry.
Configurer l’exécution de l’optimisation
Configurer l’optimisation s’exécute via un eval.yaml fichier qui lie votre jeu de données, évaluateurs et options d’exécution. La commande azd ai agent eval generate écrit ce fichier pour vous, ou vous pouvez le créer manuellement. L’optimiseur détecte eval.yaml automatiquement dans la racine de votre projet, ou vous pouvez le transmettre explicitement avec --config eval.yaml.
# eval.yaml
name: my-optimization # Optional label for the run
agent:
name: my-agent # Deployed hosted agent name
kind: hosted
version: "1" # Agent version (optional)
model: gpt-4.1-mini # Baseline model deployment
config: .agent_configs/baseline/metadata.yaml
dataset:
local_uri: ./eval.jsonl # A local JSONL file...
# name: my-foundry-dataset # ...OR a registered Foundry dataset
# version: "1"
# validation_dataset: # Optional held-out dataset
# name: my-validation-dataset
# version: "1"
evaluators:
- builtin.task_adherence # A built-in evaluator...
# - name: my-custom-evaluator # ...or a custom evaluator
# version: "1"
# local_uri: ./my_evaluator.json
options:
eval_model: gpt-4.1-mini # Scores responses
optimization_model: gpt-5.1 # Generates candidates
max_candidates: 4
optimization_config:
model_search_space: # Optional: compare model deployments
- gpt-4.1
| Champ | Obligatoire | Description |
|---|---|---|
name |
Non | Étiquette de l’exécution d’optimisation. |
agent.name |
Yes | Nom de l’agent hébergé déployé à optimiser. |
agent.kind |
Yes | Type d’agent. Utilisez hosted. |
agent.version |
Non | Version de l'agent cible. |
agent.model |
Yes | Nom du déploiement du modèle de référence. |
agent.config |
Conditional | Chemin d’accès à la base de référence metadata.yaml dans un azd projet. Pour un projet autonome sans fichiers AZD, omettez ce champ et fournissez l’instruction de manière interactive. |
dataset |
Yes | Le jeu de données à utiliser pour l’évaluation, sous forme de fichier JSONL local (local_uri) ou de jeu de données Foundry enregistré (name et version). Consultez Créer un jeu de données personnalisé. |
validation_dataset |
Non | Jeu de données conservé utilisé pour valider les résultats. |
evaluators |
Yes | Des évaluateurs ont été attribués à chaque tâche. Consultez Personnaliser les évaluateurs. |
options.eval_model |
Yes | Modèle de conversation déployé qui note les réponses. Consultez Choisir les modèles d’optimisation et d’évaluation. |
options.optimization_model |
Yes | Modèle déployé qui génère des candidats. Doit figurer dans la liste des éléments pris en charge. |
options.max_candidates |
Non | Nombre de candidats à générer (par défaut 5). Consultez Définir le nombre de candidats. |
options.optimization_config.model_search_space |
Non | Déploiements de modèles à comparer pendant la sélection du modèle. Consultez Évaluer plusieurs modèles. |
Créer le jeu de données et les évaluateurs séparément ; consultez Créer un jeu de données d’évaluation et des évaluateurs. Les sections suivantes décrivent les options d’exécution.
Choisir les modèles d’optimisation et d’évaluation
L’optimiseur utilise deux modèles : un modèle d’évaluation qui note les réponses de l’agent par rapport aux critères et un modèle d’optimisation qui génère des configurations candidates. Définissez-les dans eval.yaml ou utilisez des indicateurs CLI.
options:
eval_model: gpt-4.1-mini
optimization_model: gpt-5.1
azd ai agent optimize --eval-model gpt-4.1-mini --optimize-model gpt-5.1
Tout modèle de complétion de conversation déployé dans votre projet peut être utilisé comme modèle d'évaluation. Le modèle d’optimisation doit provenir de la liste prise en charge. Pour connaître les rôles et les modèles pris en charge, consultez Modèles.
Important
Le champ optimization_model est obligatoire. Si vous ne le spécifiez pas et que vous ne passez --optimize-modelpas, l’API d’optimisation retourne une erreur. Vérifiez toujours que les deux modèles sont déployés dans votre projet avant d’exécuter l’optimisation.
Définir le nombre de candidats
L’option max_candidates définit le nombre attendu de configurations candidates pour l’exécution. L’optimiseur s’arrête généralement lorsqu’il atteint ce nombre, sauf si l’exécution s’interrompt plus tôt en raison d’une erreur ou d’une autre condition d’arrêt.
| Nombre maximal de candidats | Candidats | Time | Idéal pour |
|---|---|---|---|
| 2 | 2 | 5 à 10 minutes | Expériences rapides |
| 5 (par défaut) | 5 | 20 à 30 minutes | Bon équilibre |
| 10 | 10 | 30 à 60 min | Exploration approfondie |
Les valeurs plus élevées explorent davantage de variations, mais prennent plus de temps. L’optimiseur apprend des candidats antérieurs, donc les candidats ultérieurs ont tendance à noter plus haut.
Note
Les heures sont approximatives pour un jeu de données de 3 à 10 tâches. Les jeux de données plus volumineux ou les modèles d’évaluation plus lents augmentent la durée d’exécution.
Évaluer plusieurs modèles
Pour comparer des déploiements de modèles au cours d’une même exécution, listez-les sous optimization_config.model_search_space. L’optimiseur évalue votre agent avec chaque modèle sur le même jeu de données et classe les résultats par score et coût de jeton.
# eval.yaml
options:
optimization_config:
model_search_space:
- gpt-4.1
- gpt-4.1-mini
- gpt-4o
Chaque modèle répertorié sous model_search_space doit être déployé dans votre projet Foundry.
Note
Si la liste inclut le déploiement actuel du modèle de votre agent, l’optimiseur le supprime automatiquement des candidats, car la base de référence représente déjà ce modèle. Si aucun modèle ne reste après cette suppression, vous recevez une erreur de validation.
La sélection du modèle s’exécute parallèlement aux cibles qui sont automatiquement activées à partir de votre base de référence. Une seule exécution peut produire des candidats qui combinent des instructions, des compétences et des descriptions d’outils améliorées avec différentes options de modèle . Vous ne configurez pas la combinaison vous-même.
Surveiller un travail en cours d’exécution
Une exécution d’optimisation est asynchrone. Utilisez ces commandes lorsqu’un travail est long ou que vous souhaitez vérifier sa progression :
# Check status and stream progress
azd ai agent optimize status <operation-id> --watch
# List recent optimization jobs
azd ai agent optimize list
# Cancel a running job
azd ai agent optimize cancel <operation-id>
Relevez l’ID de l’opération, l’URL du portail, les scores et les ID des candidats dans la sortie d’exécution. Vous pouvez également surveiller le travail dans le portail Foundry à l’aide de l’URL affichée au démarrage de l’exécution.
Si vous avez démarré le travail sans fichiers projet AZD, transmettez toujours l’ID d’opération à status et cancel. Les commandes utilisent le point de terminaison de niveau utilisateur enregistré via azd ai project set ; sinon, incluez --project-endpoint.
Interpréter les résultats
Une fois l’optimisation terminée, passez en revue la table des résultats. Un astérisque (*) marque le meilleur candidat. Pour connaître les colonnes de la table des résultats, les détails du scoring, les seuils d’amélioration du score et l’affichage du portail, consultez Comprendre les résultats de l’optimisation.
Déployer le gagnant
Le flux de travail recommandé consiste à appliquer la configuration optimisée localement, puis à déployer :
# Apply the winning candidate locally
azd ai agent optimize apply --candidate <candidate-id>
# Deploy with the optimized config
azd deploy
Cela télécharge la configuration optimisée dans le fichier .agent_configs/<candidate_id>/ de votre projet. Lors du déploiement suivant, votre agent utilise les instructions améliorées et les descriptions des outils.
Vous pouvez également déployer directement via l’API (utile pour les tests A/B rapides) :
azd ai agent optimize deploy --candidate <candidate-id>
Warning
Déployer directement les mises à jour du service d’agent sans modifier vos fichiers locaux. Utilisez le flux de travail apply ->deploy pour la production.
Dans la préversion actuelle, le déploiement direct résout le travail d’optimisation à partir d’un azd environnement. Pour une optimisation autonome qui n’a pas d’environnement AZD, déployez le candidat à partir du portail Foundry.
Si tous les candidats ont un score inférieur à la ligne de base, ne déployez aucun candidat. La configuration de la base de référence reste active.
Ce que chaque cible change
L’optimiseur active automatiquement les cibles qui s’appliquent à votre base de référence. Cette section est une référence pour ce qu’une exécution change. Utilisez le tableau suivant pour anticiper ce que fait l’optimisation pour votre agent :
| Scénario | Target |
|---|---|
| Améliorer la qualité globale de la réponse | Réglage des instructions |
| Réduire les informations incorrectes | Réglage des instructions |
| Améliorer les comportements reproductibles (escalade, modèles de débogage) | Amélioration des compétences |
| Affiner les procédures structurées | Amélioration des compétences |
| Trouver le meilleur compromis qualité/coût | Sélection du modèle |
| Première optimisation, pas sûr de ce à quoi s’attendre | Toutes les cibles applicables s’exécutent automatiquement |
Votre code reste le même sur toutes les cibles, car load_config() retourne automatiquement les valeurs optimisées. Seule la configuration que le modèle voit change.
Instructions
L’optimiseur réécrit l’invite système. Les améliorations courantes sont les suivantes :
- Ajout de contraintes explicites que le prompt d’origine impliquait sans les énoncer
- Instructions de restructuration pour plus de clarté
- Ajout de spécifications de format de sortie
- Renforcement des limites de sécurité et d’étendue
Par exemple, un prompt de base minimal comme You are a helpful assistant. peut devenir :
You are a helpful coding assistant. Follow these guidelines:
1. Always include working code examples
2. Explain your reasoning step by step
3. If a question is outside your expertise, say so clearly
4. Use markdown formatting for code blocks
5. Handle edge cases in code examples
Compétences
L’optimiseur affine la description, le corps et les critères d’activation de chaque compétence tout en conservant l’objectif de la compétence. L’agent charge des compétences améliorées via load_config(), qui les ajoute à l’ensemble d’instructions. Les compétences utilisent le format ouvert Agent Skills. Pour savoir comment votre agent charge les compétences, veuillez consulter la section Préparer votre agent pour l'optimiseur.
Tools
L’optimiseur affine vos tools.json définitions. Les améliorations courantes sont les suivantes :
- Descriptions de fonctions plus claires qui aident le modèle à savoir quand appeler un outil
- Descriptions de paramètres plus spécifiques qui réduisent les arguments incorrects
- Ajout de contraintes (énumérations, champs obligatoires) qui empêchent les entrées non valides
Votre code d’implémentation d’outil reste le même. Seules les définitions que le modèle voit changent.
Models
L’optimiseur classe chaque modèle candidat par score composite et coût de jeton. Vous pouvez donc choisir le meilleur compromis qualité-coût. Pour configurer les candidats, consultez Évaluer plusieurs modèles.
Résolution des problèmes
| Problème | Cause | Réparer |
|---|---|---|
optimize retourne 400 |
L’abonnement ne figure pas sur la liste d’autorisation | Contactez votre représentant Microsoft pour demander l’accès |
could not resolve project endpoint |
Aucun point de terminaison de projet n’est disponible dans un environnement azd ni dans une configuration utilisateur |
Exécuter azd ai project set <project-endpoint>, passer --project-endpoint <project-endpoint>ou définir FOUNDRY_PROJECT_ENDPOINT |
agent name is required |
La commande s’exécute en dehors d’un projet et aucun nom d’agent azd déployé n’a été fourni |
--agent <deployed-agent-name> Passer ou fournir le nom de l’agent en tant qu’argument positionnel |
operation ID is required |
Une exécution autonome n’a pas d’environnement azd dans lequel conserver le dernier ID d’opération |
Copiez l’ID d’opération à partir de la sortie d’optimisation et transmettez-le à status ou cancel |
instruction is required for optimization dans un dossier autonome |
Une exécution autonome n’étend pas agent.config depuis eval.yaml dans l’aperçu actuel |
Exécutez sans --no-prompt, puis fournissez l’instruction de référence en ligne ou sélectionnez le fichier d’instructions |
optimize apply ne peut pas résoudre un service d’assistant |
apply nécessite un service d’agent azure.yaml hébergé dans un azd projet |
Déployer le candidat à partir du portail Foundry ou initialiser un projet avant d’utiliser azdapply |
| Erreur de validation du protocole | Service d’agent non valide azure.yaml |
Vérifier que le azure.ai.agent service inclut kind: hosted et une protocols: liste |
| Tâche bloquée sur « en cours d’exécution » | Problème de service | Annuler avec azd ai agent optimize cancel <id> et réessayer |
| Aucun identifiant de candidat en sortie | Tâche toujours en cours d’exécution | Attendez la fin ou utilisez --watch |