[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699S98ZKJTA1W0EVKN1XM2Y":3,"skill-same:01M699S98ZKJTA1W0EVKN1XM2Y":53},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":36,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M699S98ZKJTA1W0EVKN1XM2Y","deploying-scalable-agents",null,"Take a working agent prototype to a scalable, observable production deployment on Microsoft Foundry. Covers deployment patterns, the agent lifecycle, model routing, response caching, evaluation gates, human approval, OpenTelemetry observability, cost optimisation, and smoke-testing deployed agents.","microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79504,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fpt-PT\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[19,20,21,9,22,23],"deploying scalable agents","testing","prototype","foundry","microsoft foundry","2026-11-10 10:12:30",false,"---\nname: deploying-scalable-agents\ndescription: Take a working agent prototype to a scalable, observable production deployment on Microsoft Foundry. Covers deployment patterns, the agent lifecycle, model routing, response caching, evaluation gates, human approval, OpenTelemetry observability, cost optimisation, and smoke-testing deployed agents.\nlicense: MIT\n---\n# Desdobramento de Agentes Escaláveis com Microsoft Foundry\n\n> Competência complementar para [Lição 16 – Desdobramento de Agentes Escaláveis](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md).\n> Utilize-a para ajudar um aprendiz a mover um agente de protótipo para um desdobramento\n> de produção escalável e observável. Baseie todas as recomendações no conteúdo da lição e\n> no bloco de notas executável; não invente APIs do Foundry.\n\n## Gatilhos\n\nAtive esta competência quando um aprendiz quiser:\n- Desdobrar um agente no Microsoft Foundry como um **agente alojado** e torná-lo versionado\u002Fobservável.\n- Escolher entre os padrões de desdobramento **cliente-alojado, agente alojado e fluxo de trabalho do agente**.\n- Adicionar **encaminhamento de modelo**, **cache de resposta** ou **concorrência limitada** para controlar latência e custo.\n- Adicionar uma **porta de avaliação** para impedir que uma versão ruim do agente seja lançada.\n- Adicionar uma etapa de **aprovação humana no processo** para ações de alto risco.\n- Instrumentar um agente com rastreio **OpenTelemetry** para observabilidade em produção.\n- Realizar um **teste rápido** a um agente desdobrado como uma porta rápida pós-desdobramento.\n\n## Modelo mental central\n\nUm agente de produção é principalmente o esqueleto operacional *à volta* do modelo (~80%),\nnão o modelo em si. Mapeie cada recomendação para uma destas preocupações:\n\n| Preocupação | Protótipo → Produção |\n|---------|------------------------|\n| Alojamento | bloco de notas → serviço alojado versionado |\n| Identidade | seu `az login` → identidade gerida + RBAC com escopo |\n| Estado | na memória → armazenamento de threads\u002Fmemória externalizado |\n| Falha | rastreio → tentativas, alternativas, alertas |\n| Custo | \"uns cêntimos\" → rastreado, encaminhado, cacheado, orçamentado |\n| Qualidade | ver a olho → porta de avaliação automatizada |\n| Confiança | você aprova → políticas + humano no processo |\n\n## Padrões de desdobramento (escolha um, ou combine)\n\n1. **Cliente-alojado** — o ciclo de raciocínio é executado no seu processo. Máximo controlo; você gere a escalabilidade\u002Festado.\n2. **Agente alojado (Foundry Agent Service)** — o Foundry aloja o ciclo, armazena threads, aplica RBAC\u002Fsegurança de conteúdo, mostra o agente no portal. Menos controlo, superfície operacional muito menor.\n3. **Fluxo de trabalho do agente** — múltiplos agentes\u002Fferramentas compostos num grafo com ramificações, nós de aprovação e pontos de verificação duradouros.\n\n## Ciclo de vida (o ciclo que lança um agente)\n\n`create → version → evaluate (gate) → deploy hosted → observe online → collect failures → repeat`.\n**A avaliação offline é uma porta, não um pensamento posterior** — uma versão não é lançada\na menos que ultrapasse o limiar. A observabilidade online retroalimenta falhas reais\npara o conjunto de testes offline.\n\n## Alavancas de escalabilidade e custo (por ordem de prioridade)\n\n1. **Dimensionar corretamente o modelo** — use o menor modelo que passe a porta de avaliação.\n2. **Encaminhar por complexidade** — modelo pequeno\u002Frápido para pedidos simples, modelo grande para raciocínio real (classificador DIY ou Foundry Model Router).\n3. **Cache** — sirva pedidos quase idênticos sem chamar o modelo.\n4. **Design sem estado + concorrência limitada** — externalize o estado; reintente com recuo progressivo.\n\n## Padrões chave a reproduzir\n\nDirecione o aprendiz para estes no bloco de notas\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb):\n\n- **Manipulador de pedidos**: cache → encaminhar por complexidade → span de rastreio → executar → cache.\n- **Porta de avaliação**: classifique um conjunto de testes offline; retorne `pass_rate >= threshold` e só faça o desdobramento se verdadeiro.\n- **Aprovação humana**: `@tool(approval_mode=\"always_require\")` para ações como grandes reembolsos.\n- **Rastreio**: envolva cada pedido em `tracer.start_as_current_span(...)` e defina atributos como `routed.model`, `customer.id`.\n\n## Teste rápido a um agente desdobrado\n\nApós o desdobramento, verifique se o endpoint realmente responde (um desdobramento verde pode ainda ser\nsilencioso). Utilize a ação [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\natravés de [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\ncom o catálogo em [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md). O executor envia por POST cada\nprompt para `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\ne verifica a resposta do texto. A identidade necessita da função **Azure AI User** no\nâmbito do projeto Foundry; o público do token deve ser `https:\u002F\u002Fai.azure.com\u002F`.\n\nSobreponha as portas: **teste rápido** (acessível\u002Frespondendo, em cada desdobramento) → **avaliação offline** (bom o suficiente para lançar, antes da promoção) → **avaliação online** (como está a funcionar no terreno, contínuo).\n\n\n\n## Controlos empresariais\n\n- **RBAC**: atribua a cada agente alojado uma identidade gerida com privilégios mínimos.\n- **MCP em produção**: trate cada servidor MCP como fronteira não confiável — fixe a versão, delimite a sua identidade, valide saídas, limite taxas, nunca exponha segredos.\n\n## Guardrails para o assistente\n\n- Prefira o padrão canónico `FoundryChatClient(...)` + `provider.as_agent(...)` utilizado em todo o curso.\n- Não prometa resultados Azure ao vivo que não tenha verificado; recomende o fluxo de trabalho de teste rápido para confirmar um desdobramento.\n- Mantenha a avaliação e o aconselhamento de custos relacionados: a avaliação define o limite de qualidade, o encaminhamento\u002Fcache mantém o custo próximo desse limite.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Desdobramento de Agentes Escaláveis com Microsoft Foundry\n\n> Competência complementar para [Lição 16 – Desdobramento de Agentes Escaláveis](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md).\n> Utilize-a para ajudar um aprendiz a mover um agente de protótipo para um desdobramento\n> de produção escalável e observável. Baseie todas as recomendações no conteúdo da lição e\n> no bloco de notas executável; não invente APIs do Foundry.\n\n## Gatilhos\n\nAtive esta competência quando um aprendiz quiser:\n- Desdobrar um agente no Microsoft Foundry como um **agente alojado** e torná-lo versionado\u002Fobservável.\n- Escolher entre os padrões de desdobramento **cliente-alojado, agente alojado e fluxo de trabalho do agente**.\n- Adicionar **encaminhamento de modelo**, **cache de resposta** ou **concorrência limitada** para controlar latência e custo.\n- Adicionar uma **porta de avaliação** para impedir que uma versão ruim do agente seja lançada.\n- Adicionar uma etapa de **aprovação humana no processo** para ações de alto risco.\n- Instrumentar um agente com rastreio **OpenTelemetry** para observabilidade em produção.\n- Realizar um **teste rápido** a um agente desdobrado como uma porta rápida pós-desdobramento.\n\n## Modelo mental central\n\nUm agente de produção é principalmente o esqueleto operacional *à volta* do modelo (~80%),\nnão o modelo em si. Mapeie cada recomendação para uma destas preocupações:\n\n| Preocupação | Protótipo → Produção |\n|---------|------------------------|\n| Alojamento | bloco de notas → serviço alojado versionado |\n| Identidade | seu `az login` → identidade gerida + RBAC com escopo |\n| Estado | na memória → armazenamento de threads\u002Fmemória externalizado |\n| Falha | rastreio → tentativas, alternativas, alertas |\n| Custo | \"uns cêntimos\" → rastreado, encaminhado, cacheado, orçamentado |\n| Qualidade | ver a olho → porta de avaliação automatizada |\n| Confiança | você aprova → políticas + humano no processo |\n\n## Padrões de desdobramento (escolha um, ou combine)\n\n1. **Cliente-alojado** — o ciclo de raciocínio é executado no seu processo. Máximo controlo; você gere a escalabilidade\u002Festado.\n2. **Agente alojado (Foundry Agent Service)** — o Foundry aloja o ciclo, armazena threads, aplica RBAC\u002Fsegurança de conteúdo, mostra o agente no portal. Menos controlo, superfície operacional muito menor.\n3. **Fluxo de trabalho do agente** — múltiplos agentes\u002Fferramentas compostos num grafo com ramificações, nós de aprovação e pontos de verificação duradouros.\n\n## Ciclo de vida (o ciclo que lança um agente)\n\n`create → version → evaluate (gate) → deploy hosted → observe online → collect failures → repeat`.\n**A avaliação offline é uma porta, não um pensamento posterior** — uma versão não é lançada\na menos que ultrapasse o limiar. A observabilidade online retroalimenta falhas reais\npara o conjunto de testes offline.\n\n## Alavancas de escalabilidade e custo (por ordem de prioridade)\n\n1. **Dimensionar corretamente o modelo** — use o menor modelo que passe a porta de avaliação.\n2. **Encaminhar por complexidade** — modelo pequeno\u002Frápido para pedidos simples, modelo grande para raciocínio real (classificador DIY ou Foundry Model Router).\n3. **Cache** — sirva pedidos quase idênticos sem chamar o modelo.\n4. **Design sem estado + concorrência limitada** — externalize o estado; reintente com recuo progressivo.\n\n## Padrões chave a reproduzir\n\nDirecione o aprendiz para estes no bloco de notas\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb):\n\n- **Manipulador de pedidos**: cache → encaminhar por complexidade → span de rastreio → executar → cache.\n- **Porta de avaliação**: classifique um conjunto de testes offline; retorne `pass_rate >= threshold` e só faça o desdobramento se verdadeiro.\n- **Aprovação humana**: `@tool(approval_mode=\"always_require\")` para ações como grandes reembolsos.\n- **Rastreio**: envolva cada pedido em `tracer.start_as_current_span(...)` e defina atributos como `routed.model`, `customer.id`.\n\n## Teste rápido a um agente desdobrado\n\nApós o desdobramento, verifique se o endpoint realmente responde (um desdobramento verde pode ainda ser\nsilencioso). Utilize a ação [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\natravés de [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\ncom o catálogo em [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md). O executor envia por POST cada\nprompt para `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\ne verifica a resposta do texto. A identidade necessita da função **Azure AI User** no\nâmbito do projeto Foundry; o público do token deve ser `https:\u002F\u002Fai.azure.com\u002F`.\n\nSobreponha as portas: **teste rápido** (acessível\u002Frespondendo, em cada desdobramento) → **avaliação offline** (bom o suficiente para lançar, antes da promoção) → **avaliação online** (como está a funcionar no terreno, contínuo).\n\n\n\n## Controlos empresariais\n\n- **RBAC**: atribua a cada agente alojado uma identidade gerida com privilégios mínimos.\n- **MCP em produção**: trate cada servidor MCP como fronteira não confiável — fixe a versão, delimite a sua identidade, valide saídas, limite taxas, nunca exponha segredos.\n\n## Guardrails para o assistente\n\n- Prefira o padrão canónico `FoundryChatClient(...)` + `provider.as_agent(...)` utilizado em todo o curso.\n- Não prometa resultados Azure ao vivo que não tenha verificado; recomende o fluxo de trabalho de teste rápido para confirmar um desdobramento.\n- Mantenha a avaliação e o aconselhamento de custos relacionados: a avaliação define o limite de qualidade, o encaminhamento\u002Fcache mantém o custo próximo desse limite.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":15,"description":7},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fpt-PT\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents",26043,"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":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents",{"tool":45,"command":46},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents",{"tool":48,"command":49},"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\u002Fpt-PT\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",true,[],[54,71,82,90,98,103],{"skillNo":55,"name":56,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":69,"publishedAt":24},"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",[59,64],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":65,"categoryName":66,"taxonomyType":67,"taxonomyTypeDesc":68},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[20,70],"testing course samples",{"skillNo":72,"name":73,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":79,"publishedAt":24},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000023","Skill与智能体开发",[80,9,81],"docs","microsoft docs",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":24},"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",[],[88,89],"ai agents","local ai agents",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":24},"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",[],[97],"jupyter notebook",{"skillNo":99,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":24},"01M69A1Q8EXPWKZSQK69V6WF22","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[19],{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":24},"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",[],[109],"azure openai to responses"]