[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699PM4GS4GQ6VMHH1RHTQX0":3,"skill-same:01M699PM4GS4GQ6VMHH1RHTQX0":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},"01M699PM4GS4GQ6VMHH1RHTQX0","deploying-scalable-agents",null,"microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79423,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fnl\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# Schaalbare Agenten Uitrollen met Microsoft Foundry\n\n> Bijbehorende vaardigheid voor [Les 16 – Schaalbare Agenten Uitrollen](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md).\n> Gebruik deze om een leerling te helpen een agent van prototype naar een schaalbare, observeerbare\n> productie-implementatie te verplaatsen. Baseer elke aanbeveling op de lesinhoud en\n> het uitvoerbare notitieboek; verzin geen Foundry API's.\n\n## Triggers\n\nActiveer deze vaardigheid wanneer een leerling wil:\n- Een agent uitrollen naar Microsoft Foundry als een **gehoste agent** en deze versieerbaar\u002Fobserveerbaar maken.\n- Kiezen tussen **client-hosted, hosted-agent, en agent-workflow** uitrolpatronen.\n- **Model routing**, **response caching** of **begrensde gelijktijdigheid** toevoegen om latentie en kosten te beheersen.\n- Een **evaluatiepoort** toevoegen zodat een slechte agentversie niet wordt uitgerold.\n- Een goedkeuringsstap met **mens-in-de-lus** toevoegen voor risicovolle acties.\n- Een agent instrumenteren met **OpenTelemetry** tracing voor productieobserveerbaarheid.\n- Een uitgerolde agent **rooktest** doen als een snelle poort na uitrol.\n\n## Kernmodel\n\nEen productie-agent is vooral het operationele skelet *rond* het model (~80%),\nniet het model zelf. Koppel elke aanbeveling aan een van deze aandachtspunten:\n\n| Zorgpunt | Prototype → Productie |\n|---------|---------------------|\n| Hosting | notitieboek → versieerbare gehoste dienst |\n| Identiteit | jouw `az login` → beheerde identiteit + gescopeerde RBAC |\n| Status | in-memory → extern draad-\u002Fgeheugenopslag |\n| Fout | traceback → retries, fallbacks, alerts |\n| Kosten | \"een paar cent\" → gevolgd, gerouteerd, gecached, begroot |\n| Kwaliteit | visuele inspectie → geautomatiseerde evaluatiepoort |\n| Vertrouwen | jij keurt goed → beleid + mens-in-de-lus |\n\n## Uitrolpatronen (kies een of combineer)\n\n1. **Client-hosted** — de redeneerlus draait in jouw proces. Maximale controle; jij beheert schaal en status.\n2. **Hosted agent (Foundry Agent Service)** — Foundry host de lus, slaat threads op, handhaaft RBAC\u002Fcontentbeveiliging, toont de agent in het portaal. Minder controle, veel minder operationeel oppervlak.\n3. **Agent workflow** — meerdere agenten\u002Ftools samengevoegd in een grafiek met vertakkingen, goedkeuringsknopen en duurzame checkpoints.\n\n## Levenscyclus (de lus die een agent implementeert)\n\n`create → versie → evalueren (poort) → gehost uitrollen → online observeren → fouten verzamelen → herhalen`.\n**Offline evaluatie is een poort, geen bijzaak** — een versie wordt niet uitgerold\ntenzij deze de drempel passeert. Online observeerbaarheid voedt echte fouten terug\nin de offline testset.\n\n## Schaal- en kostknoppen (in prioriteitsvolgorde)\n\n1. **Model juist dimensioneren** — gebruik het kleinste model dat de evaluatiepoort haalt.\n2. **Routeren op complexiteit** — klein\u002Fsnel model voor eenvoudige verzoeken, groot model voor echt redeneren (eigen classifier of Foundry Model Router).\n3. **Cache** — serveer bijna-duplicate verzoeken zonder modelaanroep.\n4. **Stateless ontwerp + begrensde gelijktijdigheid** — externaliseer status; retry met backoff.\n\n## Belangrijke patronen om na te bootsen\n\nVerwijs de leerling naar deze uit het notitieboek\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb):\n\n- **Request handler**: cache → routeren op complexiteit → trace span → uitvoeren → cache.\n- **Evaluatiepoort**: scoor een offline testset; retourneer `pass_rate >= threshold` en rol alleen uit als waar.\n- **Menselijke goedkeuring**: `@tool(approval_mode=\"always_require\")` voor acties zoals grote terugbetalingen.\n- **Tracing**: wikkel elke aanvraag in `tracer.start_as_current_span(...)` en zet attributen zoals `routed.model`, `customer.id`.\n\n## Rooktesten van een uitgerolde agent\n\nControleer na uitrol of de endpoint daadwerkelijk reageert (een groene uitrol kan nog steeds\nstil zijn). Gebruik de [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\nactie via [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\nmet de catalogus in [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md). De runner POST elke\nprompt naar `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\nen controleert op de antwoordtekst. De identiteit heeft de **Azure AI User** rol nodig op\nFoundry project scope; het token audience moet `https:\u002F\u002Fai.azure.com\u002F` zijn.\n\nLeg de poorten op elkaar: **rooktest** (bereikbaar\u002Freagerend, elke uitrol) → **offline\nevaluatie** (goed genoeg om uit te rollen, vóór promotie) → **online evaluatie** (hoe\ndoet het in de praktijk, continu).\n\n## Bedrijfseisen\n\n- **RBAC**: geef elke gehoste agent een beheerde identiteit met minimaal benodigde rechten.\n- **MCP in productie**: behandel elke MCP server als een niet-vertrouwde grens — pin de versie, scope de identiteit, valideer outputs, rate-limit, en leg nooit geheimen bloot.\n\n## Beveiligingsmaatregelen voor de assistent\n\n- Geef de voorkeur aan het canonieke `FoundryChatClient(...)` + `provider.as_agent(...)` patroon dat in de hele cursus wordt gebruikt.\n- Beloft geen live-Azure resultaten die je niet hebt geverifieerd; raad aan de rooktest-workflow te gebruiken om een uitrol te bevestigen.\n- Houd evaluatie en kostenadvies aan elkaar gekoppeld: evaluatie stelt de kwaliteitsvloer vast, routing\u002Fcaching houden de kosten dichtbij die vloer.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nDit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Schaalbare Agenten Uitrollen met Microsoft Foundry\n\n> Bijbehorende vaardigheid voor [Les 16 – Schaalbare Agenten Uitrollen](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md).\n> Gebruik deze om een leerling te helpen een agent van prototype naar een schaalbare, observeerbare\n> productie-implementatie te verplaatsen. Baseer elke aanbeveling op de lesinhoud en\n> het uitvoerbare notitieboek; verzin geen Foundry API's.\n\n## Triggers\n\nActiveer deze vaardigheid wanneer een leerling wil:\n- Een agent uitrollen naar Microsoft Foundry als een **gehoste agent** en deze versieerbaar\u002Fobserveerbaar maken.\n- Kiezen tussen **client-hosted, hosted-agent, en agent-workflow** uitrolpatronen.\n- **Model routing**, **response caching** of **begrensde gelijktijdigheid** toevoegen om latentie en kosten te beheersen.\n- Een **evaluatiepoort** toevoegen zodat een slechte agentversie niet wordt uitgerold.\n- Een goedkeuringsstap met **mens-in-de-lus** toevoegen voor risicovolle acties.\n- Een agent instrumenteren met **OpenTelemetry** tracing voor productieobserveerbaarheid.\n- Een uitgerolde agent **rooktest** doen als een snelle poort na uitrol.\n\n## Kernmodel\n\nEen productie-agent is vooral het operationele skelet *rond* het model (~80%),\nniet het model zelf. Koppel elke aanbeveling aan een van deze aandachtspunten:\n\n| Zorgpunt | Prototype → Productie |\n|---------|---------------------|\n| Hosting | notitieboek → versieerbare gehoste dienst |\n| Identiteit | jouw `az login` → beheerde identiteit + gescopeerde RBAC |\n| Status | in-memory → extern draad-\u002Fgeheugenopslag |\n| Fout | traceback → retries, fallbacks, alerts |\n| Kosten | \"een paar cent\" → gevolgd, gerouteerd, gecached, begroot |\n| Kwaliteit | visuele inspectie → geautomatiseerde evaluatiepoort |\n| Vertrouwen | jij keurt goed → beleid + mens-in-de-lus |\n\n## Uitrolpatronen (kies een of combineer)\n\n1. **Client-hosted** — de redeneerlus draait in jouw proces. Maximale controle; jij beheert schaal en status.\n2. **Hosted agent (Foundry Agent Service)** — Foundry host de lus, slaat threads op, handhaaft RBAC\u002Fcontentbeveiliging, toont de agent in het portaal. Minder controle, veel minder operationeel oppervlak.\n3. **Agent workflow** — meerdere agenten\u002Ftools samengevoegd in een grafiek met vertakkingen, goedkeuringsknopen en duurzame checkpoints.\n\n## Levenscyclus (de lus die een agent implementeert)\n\n`create → versie → evalueren (poort) → gehost uitrollen → online observeren → fouten verzamelen → herhalen`.\n**Offline evaluatie is een poort, geen bijzaak** — een versie wordt niet uitgerold\ntenzij deze de drempel passeert. Online observeerbaarheid voedt echte fouten terug\nin de offline testset.\n\n## Schaal- en kostknoppen (in prioriteitsvolgorde)\n\n1. **Model juist dimensioneren** — gebruik het kleinste model dat de evaluatiepoort haalt.\n2. **Routeren op complexiteit** — klein\u002Fsnel model voor eenvoudige verzoeken, groot model voor echt redeneren (eigen classifier of Foundry Model Router).\n3. **Cache** — serveer bijna-duplicate verzoeken zonder modelaanroep.\n4. **Stateless ontwerp + begrensde gelijktijdigheid** — externaliseer status; retry met backoff.\n\n## Belangrijke patronen om na te bootsen\n\nVerwijs de leerling naar deze uit het notitieboek\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb):\n\n- **Request handler**: cache → routeren op complexiteit → trace span → uitvoeren → cache.\n- **Evaluatiepoort**: scoor een offline testset; retourneer `pass_rate >= threshold` en rol alleen uit als waar.\n- **Menselijke goedkeuring**: `@tool(approval_mode=\"always_require\")` voor acties zoals grote terugbetalingen.\n- **Tracing**: wikkel elke aanvraag in `tracer.start_as_current_span(...)` en zet attributen zoals `routed.model`, `customer.id`.\n\n## Rooktesten van een uitgerolde agent\n\nControleer na uitrol of de endpoint daadwerkelijk reageert (een groene uitrol kan nog steeds\nstil zijn). Gebruik de [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\nactie via [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\nmet de catalogus in [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md). De runner POST elke\nprompt naar `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\nen controleert op de antwoordtekst. De identiteit heeft de **Azure AI User** rol nodig op\nFoundry project scope; het token audience moet `https:\u002F\u002Fai.azure.com\u002F` zijn.\n\nLeg de poorten op elkaar: **rooktest** (bereikbaar\u002Freagerend, elke uitrol) → **offline\nevaluatie** (goed genoeg om uit te rollen, vóór promotie) → **online evaluatie** (hoe\ndoet het in de praktijk, continu).\n\n## Bedrijfseisen\n\n- **RBAC**: geef elke gehoste agent een beheerde identiteit met minimaal benodigde rechten.\n- **MCP in productie**: behandel elke MCP server als een niet-vertrouwde grens — pin de versie, scope de identiteit, valideer outputs, rate-limit, en leg nooit geheimen bloot.\n\n## Beveiligingsmaatregelen voor de assistent\n\n- Geef de voorkeur aan het canonieke `FoundryChatClient(...)` + `provider.as_agent(...)` patroon dat in de hele cursus wordt gebruikt.\n- Beloft geen live-Azure resultaten die je niet hebt geverifieerd; raad aan de rooktest-workflow te gebruiken om een uitrol te bevestigen.\n- Houd evaluatie en kostenadvies aan elkaar gekoppeld: evaluatie stelt de kwaliteitsvloer vast, routing\u002Fcaching houden de kosten dichtbij die vloer.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nDit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":14},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fnl\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents",26019,"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\u002Fnl\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"]