[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69A1J59TJWN7MV1FV5TG443":3,"skill-same:01M69A1J59TJWN7MV1FV5TG443":69},{"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},"01M69A1J59TJWN7MV1FV5TG443","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\u002Fzh-MO\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# 測試課程範例\n\n驗證課堂筆記本和程式碼範例是否能夠在實際運行的\nMicrosoft Foundry \u002F Azure OpenAI 環境中執行。此版本庫附帶一個執行器\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1)，\n可無頭方式執行所有 Python 筆記本並列印出 PASS\u002FFAIL 矩陣。\n\n## 什麼時候使用\n- 「驗證所有筆記本 \u002F 範例是否與我的 Azure 訂閱相容。」\n- 「在升級套件或更換模型後做煙霧測試課程。」\n- 「哪些課程仍然通過 \u002F 失敗？」\n\n請\u003Cstrong>勿\u003C\u002Fstrong>將此用於 AI Smoke Test GitHub Action（該動作驗證\u003Cem>已部署\u003C\u002Fem>\n的主機代理 — 請參考 [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)）。這個功能\n是在本機運行筆記本。\n\n## 前置條件（先檢查）\n1. **Python 3.12+** 且安裝課程依賴：`python -m pip install -r requirements.txt`\n   以及執行器：`python -m pip install nbconvert ipykernel`。\n2. **倉庫根目錄要有 `.env`**（從 [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example) 複製）且至少包含：\n   - `AZURE_AI_PROJECT_ENDPOINT` — Foundry 專案端點\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — 一個未過時的部署（例如 `gpt-5-mini`）\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) 和 `AZURE_OPENAI_DEPLOYMENT`\n     給直接呼叫 Azure OpenAI 的課程（例如課程 06、02-azure-openai、14 handoff\u002Fhuman-loop）。\n3. 已完成 **`az login`** — 範例以 `AzureCliCredential` 認證（Entra ID，免金鑰）。\n4. 確認模型部署存在：\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`。\n\n## 執行驗證\n```powershell\n# 所有 Python 筆記本（跳過 .NET、.venv、site-packages、翻譯、技能資產）\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# 單一課程，每個單元格有較長的超時時間\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# 僅列出會執行的內容（不執行）\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# 明確指定直譯器（如果 PATH 中沒有 `python`，例如 Windows Store 別名）\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\n腳本會將執行過的複本、每支筆記本的日誌及 `results.json`\n寫入 `$env:TEMP\\aiab-nbval`，並以失敗數目作為退出碼。\n\n短暫失敗（共享訂閱的 HTTP 429 限流，偶爾的\n`AzureCliCredential` 令牌異常，或逾時）會自動重試\n（`-Retries`，預設 2 次，搭配 `-RetryDelaySeconds` 延遲，預設 20 秒）。如果某個\n模型部署經常遇到 429，請檢查訂閱的 GlobalStandard\nTPM 配額（`az cognitiveservices usage list -l \u003Cregion>`）——提升單一\n部署容量不會有用，因為是\u003Cem>整個訂閱\u003C\u002Fem>配額用盡了。\n\n## 解讀結果\n- `PASS` — 筆記本從頭到尾執行完成，無任何儲存格錯誤。\n- `FAIL` — 顯示第一個 `*Error` \u002F `*Exception` 行；請開啟輸出目錄中的對應\n  `log_*.txt` 查看完整追蹤紀錄。\n- 單支筆記本失敗由 `-Timeout`（每儲存格）限制，因此人機交互儲存格當掛起\n  時會呈現 `StdinNotImplementedError`，而非無限掛起。\n\n## 需要額外資源的課程（若無資源則預期失敗）\n| 課堂 | 額外需求 |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search（`AZURE_SEARCH_SERVICE_ENDPOINT`、金鑰）— 有記憶體內備用方案 |\n| 11 MCP \u002F GitHub | GitHub MCP 伺服器加 PAT |\n| 13 memory (cognee) | 已設定具有模型供應商的 `cognee` |\n| 15 browser-use | 安裝 Playwright 瀏覽器（`playwright install`）＋ `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Foundry Local 運行環境＋已下載的 Qwen 模型（本機裝置，無雲端） |\n| `*-dotnet-*` 筆記本 | .NET Interactive kernel（預設排除，使用 `-IncludeDotnet`） |\n\n## 回報結果\n彙整為按課堂分組的 PASS\u002FFAIL 表格。將真正的回歸問題\n（需修正的程式碼或配置錯誤）與環境缺項（缺少 Search\u002FFoundry Local\u002FPAT）分開，\n並為每個實際失敗引用其失敗的 `log_*.txt`。\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免責聲明**：\n本文件使用 AI 翻譯服務 [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) 進行翻譯。雖然我們力求準確，但請注意，自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊，建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或曲解承擔責任。\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# 測試課程範例\n\n驗證課堂筆記本和程式碼範例是否能夠在實際運行的\nMicrosoft Foundry \u002F Azure OpenAI 環境中執行。此版本庫附帶一個執行器\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1)，\n可無頭方式執行所有 Python 筆記本並列印出 PASS\u002FFAIL 矩陣。\n\n## 什麼時候使用\n- 「驗證所有筆記本 \u002F 範例是否與我的 Azure 訂閱相容。」\n- 「在升級套件或更換模型後做煙霧測試課程。」\n- 「哪些課程仍然通過 \u002F 失敗？」\n\n請\u003Cstrong>勿\u003C\u002Fstrong>將此用於 AI Smoke Test GitHub Action（該動作驗證\u003Cem>已部署\u003C\u002Fem>\n的主機代理 — 請參考 [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)）。這個功能\n是在本機運行筆記本。\n\n## 前置條件（先檢查）\n1. **Python 3.12+** 且安裝課程依賴：`python -m pip install -r requirements.txt`\n   以及執行器：`python -m pip install nbconvert ipykernel`。\n2. **倉庫根目錄要有 `.env`**（從 [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example) 複製）且至少包含：\n   - `AZURE_AI_PROJECT_ENDPOINT` — Foundry 專案端點\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — 一個未過時的部署（例如 `gpt-5-mini`）\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) 和 `AZURE_OPENAI_DEPLOYMENT`\n     給直接呼叫 Azure OpenAI 的課程（例如課程 06、02-azure-openai、14 handoff\u002Fhuman-loop）。\n3. 已完成 **`az login`** — 範例以 `AzureCliCredential` 認證（Entra ID，免金鑰）。\n4. 確認模型部署存在：\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`。\n\n## 執行驗證\n```powershell\n# 所有 Python 筆記本（跳過 .NET、.venv、site-packages、翻譯、技能資產）\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# 單一課程，每個單元格有較長的超時時間\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# 僅列出會執行的內容（不執行）\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# 明確指定直譯器（如果 PATH 中沒有 `python`，例如 Windows Store 別名）\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\n腳本會將執行過的複本、每支筆記本的日誌及 `results.json`\n寫入 `$env:TEMP\\aiab-nbval`，並以失敗數目作為退出碼。\n\n短暫失敗（共享訂閱的 HTTP 429 限流，偶爾的\n`AzureCliCredential` 令牌異常，或逾時）會自動重試\n（`-Retries`，預設 2 次，搭配 `-RetryDelaySeconds` 延遲，預設 20 秒）。如果某個\n模型部署經常遇到 429，請檢查訂閱的 GlobalStandard\nTPM 配額（`az cognitiveservices usage list -l \u003Cregion>`）——提升單一\n部署容量不會有用，因為是\u003Cem>整個訂閱\u003C\u002Fem>配額用盡了。\n\n## 解讀結果\n- `PASS` — 筆記本從頭到尾執行完成，無任何儲存格錯誤。\n- `FAIL` — 顯示第一個 `*Error` \u002F `*Exception` 行；請開啟輸出目錄中的對應\n  `log_*.txt` 查看完整追蹤紀錄。\n- 單支筆記本失敗由 `-Timeout`（每儲存格）限制，因此人機交互儲存格當掛起\n  時會呈現 `StdinNotImplementedError`，而非無限掛起。\n\n## 需要額外資源的課程（若無資源則預期失敗）\n| 課堂 | 額外需求 |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search（`AZURE_SEARCH_SERVICE_ENDPOINT`、金鑰）— 有記憶體內備用方案 |\n| 11 MCP \u002F GitHub | GitHub MCP 伺服器加 PAT |\n| 13 memory (cognee) | 已設定具有模型供應商的 `cognee` |\n| 15 browser-use | 安裝 Playwright 瀏覽器（`playwright install`）＋ `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Foundry Local 運行環境＋已下載的 Qwen 模型（本機裝置，無雲端） |\n| `*-dotnet-*` 筆記本 | .NET Interactive kernel（預設排除，使用 `-IncludeDotnet`） |\n\n## 回報結果\n彙整為按課堂分組的 PASS\u002FFAIL 表格。將真正的回歸問題\n（需修正的程式碼或配置錯誤）與環境缺項（缺少 Search\u002FFoundry Local\u002FPAT）分開，\n並為每個實際失敗引用其失敗的 `log_*.txt`。\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免責聲明**：\n本文件使用 AI 翻譯服務 [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) 進行翻譯。雖然我們力求準確，但請注意，自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊，建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或曲解承擔責任。\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fzh-MO\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\u002Fzh-MO\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",true,[59,65],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Fconsumer-adapters.md","REFERENCE","参考文档",2027,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fclawhub\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-design-system\u002Freferences\u002Fconsumer-adapters.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Ftokens.md",3040,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fclawhub\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-design-system\u002Freferences\u002Ftokens.md",[70,77,88,96,104,111],{"skillNo":71,"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":72,"categories":73,"keywords":76,"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",[74,75],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},[28,29],{"skillNo":78,"name":79,"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":80,"categories":81,"keywords":85,"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",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[86,8,87],"docs","microsoft docs",{"skillNo":89,"name":90,"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":91,"categories":92,"keywords":93,"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",[],[94,95],"ai agents","local ai agents",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"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",[],[103],"jupyter notebook",{"skillNo":105,"name":106,"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":107,"categories":108,"keywords":109,"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",[],[110],"deploying scalable agents",{"skillNo":112,"name":113,"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":114,"categories":115,"keywords":116,"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",[],[117],"azure openai to responses"]