[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699F1K35A1K1SNNS2BZ63ZM":3,"skill-same:01M699F1K35A1K1SNNS2BZ63ZM":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M699F1K35A1K1SNNS2BZ63ZM","deploying-scalable-agents",null,"microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79626,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Ffr\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[18],"deploying scalable agents","2026-11-10 10:12:30",false,"---\nname: deploying-scalable-agents\nlicense: MIT\n---\n# Déploiement d'agents évolutifs avec Microsoft Foundry\n\n> Compétence complémentaire pour [Leçon 16 – Déploiement d'agents évolutifs](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md).\n> Utilisez-la pour aider un apprenant à faire passer un agent du prototype à un déploiement en production évolutif et observable.\n> Appuyez chaque recommandation sur le contenu de la leçon et\n> le cahier exécutable ; n'inventez pas d'API Foundry.\n\n## Déclencheurs\n\nActivez cette compétence lorsqu'un apprenant souhaite :\n- Déployer un agent sur Microsoft Foundry en tant qu'**agent hébergé** et le rendre versionné\u002Fobservable.\n- Choisir entre les modèles de déploiement **client-hébergé, agent hébergé et agent-workflow**.\n- Ajouter le **routage de modèle**, le **caching des réponses** ou la **concurrence limitée** pour contrôler la latence et les coûts.\n- Ajouter une **porte d'évaluation** afin qu'une mauvaise version d'agent ne puisse pas être mise en production.\n- Ajouter une étape d'**approbation humaine** pour les actions à haut risque.\n- Instrumenter un agent avec le traçage **OpenTelemetry** pour l'observabilité en production.\n- **Test de fumée** d’un agent déployé comme une barrière rapide post-déploiement.\n\n## Modèle mental principal\n\nUn agent en production est principalement le squelette opérationnel *autour* du modèle (~80%),\npas le modèle lui-même. Associez chaque recommandation à l'une de ces préoccupations :\n\n| Préoccupation | Prototype → Production |\n|---------|------------------------|\n| Hébergement | notebook → service hébergé versionné |\n| Identité | votre `az login` → identité gérée + RBAC ciblé |\n| État | en mémoire → stockage de thread\u002Fmémoire externalisé |\n| Échec | trace de pile → réessais, solutions de secours, alertes |\n| Coût | \"quelques centimes\" → suivi, routage, mise en cache, budgeté |\n| Qualité | inspection visuelle → porte d'évaluation automatisée |\n| Confiance | vous approuvez → politique + intervention humaine |\n\n## Modèles de déploiement (choisissez-en un, ou combinez-les)\n\n1. **Client-hébergé** — la boucle de raisonnement s'exécute dans votre processus. Contrôle maximal ; vous gérez la montée en charge\u002Fl'état.\n2. **Agent hébergé (Foundry Agent Service)** — Foundry héberge la boucle, stocke les threads, applique le RBAC\u002Fla sécurité du contenu, affiche l'agent dans le portail. Moins de contrôle, surface opérationnelle bien moindre.\n3. **Agent workflow** — plusieurs agents\u002Foutils composés en un graphe avec branches, nœuds d'approbation et points de contrôle durables.\n\n## Cycle de vie (la boucle qui livre un agent)\n\n`créer → versionner → évaluer (porte) → déployer hébergé → observer en ligne → collecter les échecs → répéter`.\n**L’évaluation hors ligne est une porte, pas une réflexion après coup** — une version ne sort pas\nsauf si elle franchit le seuil. L'observabilité en ligne alimente les échecs réels\ndans le jeu de tests hors ligne.\n\n## Leviers d’échelle et de coût (par ordre de priorité)\n\n1. **Dimensionner correctement le modèle** — utilisez le plus petit modèle qui passe la porte d’évaluation.\n2. **Router par complexité** — petit modèle rapide pour les requêtes simples, grand modèle pour le vrai raisonnement (classificateur DIY ou Foundry Model Router).\n3. **Cache** — servir les requêtes quasi-duplicates sans appeler le modèle.\n4. **Conception sans état + concurrence limitée** — externaliser l’état ; retrier avec délai progressif.\n\n## Modèles clés à reproduire\n\nOrientez l'apprenant vers ceux-ci dans le notebook\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb) :\n\n- **Gestionnaire de requêtes** : cache → routage par complexité → trace de span → exécution → cache.\n- **Porte d’évaluation** : scorer un jeu de tests hors ligne ; retourner `pass_rate >= threshold` et ne déployer que si vrai.\n- **Approbation humaine** : `@tool(approval_mode=\"always_require\")` pour des actions comme les gros remboursements.\n- **Traçage** : envelopper chaque requête dans `tracer.start_as_current_span(...)` et définir des attributs comme `routed.model`, `customer.id`.\n\n## Test de fumée d’un agent déployé\n\nAprès déploiement, vérifiez que le point de terminaison répond bien (un déploiement réussi peut rester\nsilencieux). Utilisez l’action [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\nvia [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\navec le catalogue dans [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md). Le runner POST chaque\nprompt à `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\net vérifie la réponse. L’identité doit avoir le rôle **Azure AI User** au\nniveau du périmètre projet Foundry ; le jeton doit viser `https:\u002F\u002Fai.azure.com\u002F`.\n\nSuperposez les portes : **test de fumée** (accessible\u002Fréactif, à chaque déploiement) → **évaluation hors ligne** (suffisamment bon pour être mis en production, avant promotion) → **évaluation en ligne** (performance réelle en continu).\n\n\n\n## Contrôles d’entreprise\n\n- **RBAC** : donnez à chaque agent hébergé une identité gérée avec le minimum de privilèges.\n- **MCP en production** : traitez chaque serveur MCP comme une frontière non fiable — versionnez, limitez son identité, validez les sorties, limitez le débit, ne jamais exposer de secrets.\n\n## Garde-fous pour l’assistant\n\n- Préférez le modèle canonique `FoundryChatClient(...)` + `provider.as_agent(...)` utilisé dans tout le cours.\n- Ne promettez pas de résultats Azure en direct non vérifiés ; recommandez le workflow de test de fumée pour confirmer un déploiement.\n- Gardez les conseils d’évaluation et de coût liés : l’évaluation fixe le plancher de qualité, le routage\u002Fla mise en cache maintiennent les coûts proches de ce plancher.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Avertissement** :\nCe document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Déploiement d'agents évolutifs avec Microsoft Foundry\n\n> Compétence complémentaire pour [Leçon 16 – Déploiement d'agents évolutifs](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md).\n> Utilisez-la pour aider un apprenant à faire passer un agent du prototype à un déploiement en production évolutif et observable.\n> Appuyez chaque recommandation sur le contenu de la leçon et\n> le cahier exécutable ; n'inventez pas d'API Foundry.\n\n## Déclencheurs\n\nActivez cette compétence lorsqu'un apprenant souhaite :\n- Déployer un agent sur Microsoft Foundry en tant qu'**agent hébergé** et le rendre versionné\u002Fobservable.\n- Choisir entre les modèles de déploiement **client-hébergé, agent hébergé et agent-workflow**.\n- Ajouter le **routage de modèle**, le **caching des réponses** ou la **concurrence limitée** pour contrôler la latence et les coûts.\n- Ajouter une **porte d'évaluation** afin qu'une mauvaise version d'agent ne puisse pas être mise en production.\n- Ajouter une étape d'**approbation humaine** pour les actions à haut risque.\n- Instrumenter un agent avec le traçage **OpenTelemetry** pour l'observabilité en production.\n- **Test de fumée** d’un agent déployé comme une barrière rapide post-déploiement.\n\n## Modèle mental principal\n\nUn agent en production est principalement le squelette opérationnel *autour* du modèle (~80%),\npas le modèle lui-même. Associez chaque recommandation à l'une de ces préoccupations :\n\n| Préoccupation | Prototype → Production |\n|---------|------------------------|\n| Hébergement | notebook → service hébergé versionné |\n| Identité | votre `az login` → identité gérée + RBAC ciblé |\n| État | en mémoire → stockage de thread\u002Fmémoire externalisé |\n| Échec | trace de pile → réessais, solutions de secours, alertes |\n| Coût | \"quelques centimes\" → suivi, routage, mise en cache, budgeté |\n| Qualité | inspection visuelle → porte d'évaluation automatisée |\n| Confiance | vous approuvez → politique + intervention humaine |\n\n## Modèles de déploiement (choisissez-en un, ou combinez-les)\n\n1. **Client-hébergé** — la boucle de raisonnement s'exécute dans votre processus. Contrôle maximal ; vous gérez la montée en charge\u002Fl'état.\n2. **Agent hébergé (Foundry Agent Service)** — Foundry héberge la boucle, stocke les threads, applique le RBAC\u002Fla sécurité du contenu, affiche l'agent dans le portail. Moins de contrôle, surface opérationnelle bien moindre.\n3. **Agent workflow** — plusieurs agents\u002Foutils composés en un graphe avec branches, nœuds d'approbation et points de contrôle durables.\n\n## Cycle de vie (la boucle qui livre un agent)\n\n`créer → versionner → évaluer (porte) → déployer hébergé → observer en ligne → collecter les échecs → répéter`.\n**L’évaluation hors ligne est une porte, pas une réflexion après coup** — une version ne sort pas\nsauf si elle franchit le seuil. L'observabilité en ligne alimente les échecs réels\ndans le jeu de tests hors ligne.\n\n## Leviers d’échelle et de coût (par ordre de priorité)\n\n1. **Dimensionner correctement le modèle** — utilisez le plus petit modèle qui passe la porte d’évaluation.\n2. **Router par complexité** — petit modèle rapide pour les requêtes simples, grand modèle pour le vrai raisonnement (classificateur DIY ou Foundry Model Router).\n3. **Cache** — servir les requêtes quasi-duplicates sans appeler le modèle.\n4. **Conception sans état + concurrence limitée** — externaliser l’état ; retrier avec délai progressif.\n\n## Modèles clés à reproduire\n\nOrientez l'apprenant vers ceux-ci dans le notebook\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb) :\n\n- **Gestionnaire de requêtes** : cache → routage par complexité → trace de span → exécution → cache.\n- **Porte d’évaluation** : scorer un jeu de tests hors ligne ; retourner `pass_rate >= threshold` et ne déployer que si vrai.\n- **Approbation humaine** : `@tool(approval_mode=\"always_require\")` pour des actions comme les gros remboursements.\n- **Traçage** : envelopper chaque requête dans `tracer.start_as_current_span(...)` et définir des attributs comme `routed.model`, `customer.id`.\n\n## Test de fumée d’un agent déployé\n\nAprès déploiement, vérifiez que le point de terminaison répond bien (un déploiement réussi peut rester\nsilencieux). Utilisez l’action [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\nvia [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\navec le catalogue dans [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md). Le runner POST chaque\nprompt à `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\net vérifie la réponse. L’identité doit avoir le rôle **Azure AI User** au\nniveau du périmètre projet Foundry ; le jeton doit viser `https:\u002F\u002Fai.azure.com\u002F`.\n\nSuperposez les portes : **test de fumée** (accessible\u002Fréactif, à chaque déploiement) → **évaluation hors ligne** (suffisamment bon pour être mis en production, avant promotion) → **évaluation en ligne** (performance réelle en continu).\n\n\n\n## Contrôles d’entreprise\n\n- **RBAC** : donnez à chaque agent hébergé une identité gérée avec le minimum de privilèges.\n- **MCP en production** : traitez chaque serveur MCP comme une frontière non fiable — versionnez, limitez son identité, validez les sorties, limitez le débit, ne jamais exposer de secrets.\n\n## Garde-fous pour l’assistant\n\n- Préférez le modèle canonique `FoundryChatClient(...)` + `provider.as_agent(...)` utilisé dans tout le cours.\n- Ne promettez pas de résultats Azure en direct non vérifiés ; recommandez le workflow de test de fumée pour confirmer un déploiement.\n- Gardez les conseils d’évaluation et de coût liés : l’évaluation fixe le plancher de qualité, le routage\u002Fla mise en cache maintiennent les coûts proches de ce plancher.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Avertissement** :\nCe document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":14},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Ffr\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents",26075,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners","https:\u002F\u002Faka.ms\u002Fai-agents-beginners","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-07 12:51:12",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents",{"tool":40,"command":41},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents",{"tool":43,"command":44},"pnpm","pnpm dlx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Ffr\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",true,[],[49,67,78,86,94,99],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":64,"publishedAt":19},"01M69A206TRZ8KK0CW0HYJF5V5","testing-course-samples","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[54,59],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[65,66],"testing","testing course samples",{"skillNo":68,"name":69,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":75,"publishedAt":19},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发",[76,8,77],"docs","microsoft docs",{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M69A1VPZFJQ1HNGTZQ5P3WSC","local-ai-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[84,85],"ai agents","local ai agents",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M69A1S947N7MM6V9JF85S2E7","jupyter-notebook","當使用者要求建立、搭建或編輯 Jupyter 筆記本（`.ipynb`）用於實驗、探索或教學時使用；優先使用隨附範本並執行輔助腳本 `new_notebook.py` 來產生一個乾淨的起始筆記本。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fjupyter-notebook\u002FSKILL.md",[],[93],"jupyter notebook",{"skillNo":95,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":19},"01M69A1Q8EXPWKZSQK69V6WF22","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[18],{"skillNo":100,"name":101,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":19},"01M69A1MHZTH3RH9N8VYSYG74X","azure-openai-to-responses","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",[],[105],"azure openai to responses"]