[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699HZK95WN5WHMZ65BPN2TZ":3,"skill-same:01M699HZK95WN5WHMZ65BPN2TZ":59},{"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":27,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M699HZK95WN5WHMZ65BPN2TZ","testing-course-samples",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\u002Fit\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[28,29],"testing","testing course samples","2026-11-10 10:12:30",false,"---\nname: testing-course-samples\n---\n# Test dei Campioni del Corso\n\nVerifica che i notebook delle lezioni e i campioni di codice funzionino con una configurazione live\nMicrosoft Foundry \u002F Azure OpenAI. Il repo include un runner in\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1) che\nesegue ogni notebook Python senza interfaccia grafica e stampa una matrice PASS\u002FFAIL.\n\n## Quando usare\n- \"Verificare tutti i notebook \u002F campioni contro il mio abbonamento Azure.\"\n- \"Testare rapidamente il corso dopo l'aggiornamento dei pacchetti o la modifica dei modelli.\"\n- \"Quali lezioni passano\u002Ffallisco ancora live?\"\n\nNon usare **questo** per l'Azione GitHub AI Smoke Test (che verifica gli agenti *distribuiti* —\nvedi [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)). Questa skill\nesegue i notebook localmente.\n\n## Prerequisiti (controllare prima)\n1. **Python 3.12+** con dipendenze del corso: `python -m pip install -r requirements.txt`\n   più l'esecutore: `python -m pip install nbconvert ipykernel`.\n2. **`.env` nella root del repo** (copia da [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example)) con almeno:\n   - `AZURE_AI_PROJECT_ENDPOINT` — endpoint progetto Foundry\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — un deployment non deprecato (es. `gpt-5-mini`)\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) e `AZURE_OPENAI_DEPLOYMENT`\n     per lezioni che chiamano direttamente Azure OpenAI (Lezione 06, 02-azure-openai, 14 handoff\u002Fhuman-loop).\n3. **`az login`** completato — i campioni si autenticano con `AzureCliCredential` (Entra ID, senza chiavi).\n4. Verificare che il deployment del modello esista:\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`.\n\n## Come eseguire la validazione\n```powershell\n# Tutti i notebook Python (esclude .NET, .venv, site-packages, traduzioni, risorse delle skill)\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# Una singola lezione, con un timeout per cella più lungo\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# Elenca solamente ciò che verrebbe eseguito (nessuna esecuzione)\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# Interprete esplicito (se `python` non è nel PATH, es. alias del Windows Store)\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\nLo script scrive copie eseguite, log per notebook e `results.json` in\n`$env:TEMP\\aiab-nbval` e termina con il numero di fallimenti.\n\nFallimenti transitori (limiti di velocità HTTP 429 su abbonamenti condivisi, un’occasionale\nproblema di token `AzureCliCredential` o timeout) vengono riprovati automaticamente\n(`-Retries`, default 2, con backoff `-RetryDelaySeconds`, default 20). Se un\ndeployment del modello riceve regolarmente 429, controllare la quota TPM GlobalStandard\ndell’abbonamento (`az cognitiveservices usage list -l \u003Cregione>`) — aumentare la capacità di un singolo\ndeployment non aiuta quando la quota *dell’abbonamento* è esaurita.\n\n## Interpretazione dei risultati\n- `PASS` — il notebook è stato eseguito dall’inizio alla fine senza errori nelle celle.\n- `FAIL` — viene mostrata la prima riga `*Error` \u002F `*Exception`; aprire il corrispondente\n  `log_*.txt` nella cartella output per il traceback completo.\n- Il fallimento di un singolo notebook è limitato da `-Timeout` (per cella), così una cella\n  human-in-the-loop bloccata appare come `StdinNotImplementedError` invece di bloccarsi.\n\n## Lezioni che necessitano di risorse aggiuntive (ci si aspetta un fallimento senza di esse)\n| Lezione | Requisito extra |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search (`AZURE_SEARCH_SERVICE_ENDPOINT`, chiave) — ha una modalità fallback in memoria |\n| 11 MCP \u002F GitHub | Server GitHub MCP + PAT |\n| 13 memory (cognee) | `cognee` configurato con un provider di modelli |\n| 15 browser-use | Browser Playwright installati (`playwright install`) + `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Runtime Foundry Local + un modello Qwen scaricato (on-device, senza cloud) |\n| notebook `*-dotnet-*` | Kernel .NET Interactive (escluso di default; usare `-IncludeDotnet`) |\n\n## Segnalazione\nRiassumere come tabella PASS\u002FFAIL raggruppata per lezione. Separare regressioni reali\n(bug di codice\u002Fconfigurazione da correggere) da lacune ambientali (mancanza di Search\u002FFoundry Local\u002FPAT),\ne citare i `log_*.txt` che falliscono per ogni errore reale.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nQuesto documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Test dei Campioni del Corso\n\nVerifica che i notebook delle lezioni e i campioni di codice funzionino con una configurazione live\nMicrosoft Foundry \u002F Azure OpenAI. Il repo include un runner in\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1) che\nesegue ogni notebook Python senza interfaccia grafica e stampa una matrice PASS\u002FFAIL.\n\n## Quando usare\n- \"Verificare tutti i notebook \u002F campioni contro il mio abbonamento Azure.\"\n- \"Testare rapidamente il corso dopo l'aggiornamento dei pacchetti o la modifica dei modelli.\"\n- \"Quali lezioni passano\u002Ffallisco ancora live?\"\n\nNon usare **questo** per l'Azione GitHub AI Smoke Test (che verifica gli agenti *distribuiti* —\nvedi [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)). Questa skill\nesegue i notebook localmente.\n\n## Prerequisiti (controllare prima)\n1. **Python 3.12+** con dipendenze del corso: `python -m pip install -r requirements.txt`\n   più l'esecutore: `python -m pip install nbconvert ipykernel`.\n2. **`.env` nella root del repo** (copia da [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example)) con almeno:\n   - `AZURE_AI_PROJECT_ENDPOINT` — endpoint progetto Foundry\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — un deployment non deprecato (es. `gpt-5-mini`)\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) e `AZURE_OPENAI_DEPLOYMENT`\n     per lezioni che chiamano direttamente Azure OpenAI (Lezione 06, 02-azure-openai, 14 handoff\u002Fhuman-loop).\n3. **`az login`** completato — i campioni si autenticano con `AzureCliCredential` (Entra ID, senza chiavi).\n4. Verificare che il deployment del modello esista:\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`.\n\n## Come eseguire la validazione\n```powershell\n# Tutti i notebook Python (esclude .NET, .venv, site-packages, traduzioni, risorse delle skill)\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# Una singola lezione, con un timeout per cella più lungo\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# Elenca solamente ciò che verrebbe eseguito (nessuna esecuzione)\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# Interprete esplicito (se `python` non è nel PATH, es. alias del Windows Store)\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\nLo script scrive copie eseguite, log per notebook e `results.json` in\n`$env:TEMP\\aiab-nbval` e termina con il numero di fallimenti.\n\nFallimenti transitori (limiti di velocità HTTP 429 su abbonamenti condivisi, un’occasionale\nproblema di token `AzureCliCredential` o timeout) vengono riprovati automaticamente\n(`-Retries`, default 2, con backoff `-RetryDelaySeconds`, default 20). Se un\ndeployment del modello riceve regolarmente 429, controllare la quota TPM GlobalStandard\ndell’abbonamento (`az cognitiveservices usage list -l \u003Cregione>`) — aumentare la capacità di un singolo\ndeployment non aiuta quando la quota *dell’abbonamento* è esaurita.\n\n## Interpretazione dei risultati\n- `PASS` — il notebook è stato eseguito dall’inizio alla fine senza errori nelle celle.\n- `FAIL` — viene mostrata la prima riga `*Error` \u002F `*Exception`; aprire il corrispondente\n  `log_*.txt` nella cartella output per il traceback completo.\n- Il fallimento di un singolo notebook è limitato da `-Timeout` (per cella), così una cella\n  human-in-the-loop bloccata appare come `StdinNotImplementedError` invece di bloccarsi.\n\n## Lezioni che necessitano di risorse aggiuntive (ci si aspetta un fallimento senza di esse)\n| Lezione | Requisito extra |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search (`AZURE_SEARCH_SERVICE_ENDPOINT`, chiave) — ha una modalità fallback in memoria |\n| 11 MCP \u002F GitHub | Server GitHub MCP + PAT |\n| 13 memory (cognee) | `cognee` configurato con un provider di modelli |\n| 15 browser-use | Browser Playwright installati (`playwright install`) + `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Runtime Foundry Local + un modello Qwen scaricato (on-device, senza cloud) |\n| notebook `*-dotnet-*` | Kernel .NET Interactive (escluso di default; usare `-IncludeDotnet`) |\n\n## Segnalazione\nRiassumere come tabella PASS\u002FFAIL raggruppata per lezione. Separare regressioni reali\n(bug di codice\u002Fconfigurazione da correggere) da lacune ambientali (mancanza di Search\u002FFoundry Local\u002FPAT),\ne citare i `log_*.txt` che falliscono per ogni errore reale.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nQuesto documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fit\u002F.agents\u002Fskills\u002Ftesting-course-samples",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":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill testing-course-samples",{"tool":51,"command":52},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill testing-course-samples",{"tool":54,"command":55},"pnpm","pnpm dlx skills add microsoft\u002Fai-agents-for-beginners --skill testing-course-samples","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fit\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",true,[],[60,67,78,86,94,101],{"skillNo":61,"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":62,"categories":63,"keywords":66,"publishedAt":30},"01M69A206TRZ8KK0CW0HYJF5V5","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[64,65],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},[28,29],{"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":30},"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":20,"taxonomyTypeDesc":21},"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":30},"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":30},"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":96,"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":97,"categories":98,"keywords":99,"publishedAt":30},"01M69A1Q8EXPWKZSQK69V6WF22","deploying-scalable-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[100],"deploying scalable agents",{"skillNo":102,"name":103,"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":104,"categories":105,"keywords":106,"publishedAt":30},"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",[],[107],"azure openai to responses"]