[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699HHYSM1BX598XJPFXMSSQ":3,"skill-same:01M699HHYSM1BX598XJPFXMSSQ":71},{"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},"01M699HHYSM1BX598XJPFXMSSQ","testing-course-samples",null,"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\u002Fid\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# Menguji Contoh Kursus\n\nValidasi bahwa buku catatan pelajaran dan contoh kode berjalan terhadap pengaturan Microsoft Foundry \u002F Azure OpenAI yang aktif.\nRepo menyediakan sebuah runner di\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1) yang\nmenjalankan setiap notebook Python tanpa antarmuka dan mencetak matriks PASS\u002FFAIL.\n\n## Kapan digunakan\n- \"Validasi semua notebook \u002F contoh terhadap langganan Azure saya.\"\n- \"Uji cepat kursus setelah memperbarui paket atau mengubah model.\"\n- \"Pelajaran mana yang masih lulus \u002F gagal secara langsung?\"\n\nJangan gunakan ini untuk AI Smoke Test GitHub Action (yang memvalidasi agen yang *dideploy*\nyang dihosting — lihat [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)). Skill ini\nmenjalankan notebook secara lokal.\n\n## Prasyarat (periksa dulu)\n1. **Python 3.12+** dengan dependensi kursus: `python -m pip install -r requirements.txt`\n   plus executor: `python -m pip install nbconvert ipykernel`.\n2. **`.env` di root repo** (salin dari [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example)) dengan minimal:\n   - `AZURE_AI_PROJECT_ENDPOINT` — endpoint proyek Foundry\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — sebuah deployment yang tidak usang (mis. `gpt-5-mini`)\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) dan `AZURE_OPENAI_DEPLOYMENT`\n     untuk pelajaran yang memanggil Azure OpenAI langsung (Pelajaran 06, 02-azure-openai, 14 handoff\u002Fhuman-loop).\n3. **`az login`** sudah selesai — contoh otentikasi dengan `AzureCliCredential` (Entra ID, tanpa kunci).\n4. Verifikasi deployment model ada:\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`.\n\n## Menjalankan validasi\n```powershell\n# Semua notebook Python (melewati .NET, .venv, site-packages, terjemahan, aset keterampilan)\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# Sebuah pelajaran tunggal, dengan batas waktu per-sel yang lebih lama\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# Hanya daftarkan apa yang akan dijalankan (tanpa eksekusi)\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# Interpreter eksplisit (jika `python` tidak ada di PATH, misalnya alias Windows Store)\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\nSkrip menulis salinan yang dijalankan, log per-notebook, dan `results.json` ke\n`$env:TEMP\\aiab-nbval` dan keluar dengan jumlah kegagalan.\n\nKegagalan sementara (batas laju HTTP 429 langganan bersama, gangguan sesekali\ntoken `AzureCliCredential`, atau timeout) akan dicoba ulang secara otomatis\n(`-Retries`, default 2, dengan penundaan `-RetryDelaySeconds`, default 20). Jika\ndeployment model sering mendapatkan 429, periksa kuota GlobalStandard\nTPM langganan (`az cognitiveservices usage list -l \u003Cregion>`) — menaikkan kapasitas\nsatu deployment saja tidak membantu bila kuota *langganan* habis.\n\n## Menafsirkan hasil\n- `PASS` — notebook berjalan dari awal sampai akhir tanpa error pada sel.\n- `FAIL` — baris `*Error` \u002F `*Exception` pertama ditampilkan; buka\n  `log_*.txt` yang sesuai di direktori output untuk traceback lengkap.\n- Kegagalan satu notebook dibatasi oleh `-Timeout` (per sel), jadi sel human-in-the-loop yang macet\n  muncul sebagai `StdinNotImplementedError` daripada menggantung.\n\n## Pelajaran yang membutuhkan sumber daya tambahan (diperkirakan gagal tanpa itu)\n| Pelajaran | Persyaratan tambahan |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search (`AZURE_SEARCH_SERVICE_ENDPOINT`, kunci) — memiliki jalur fallback di memori |\n| 11 MCP \u002F GitHub | Server GitHub MCP + PAT |\n| 13 memory (cognee) | `cognee` dikonfigurasi dengan penyedia model |\n| 15 browser-use | Browser Playwright terinstal (`playwright install`) + `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Runtime Foundry Lokal + model Qwen yang diunduh (di perangkat, tanpa cloud) |\n| notebook `*-dotnet-*` | kernel .NET Interactive (tidak disertakan secara default; gunakan `-IncludeDotnet`) |\n\n## Melaporkan kembali\nRingkas sebagai tabel PASS\u002FFAIL dikelompokkan berdasarkan pelajaran. Pisahkan regresi nyata\n(bug kode\u002Fkonfigurasi yang harus diperbaiki) dari kekurangan lingkungan (Search\u002FFoundry Local\u002FPAT yang hilang),\ndan cantumkan `log_*.txt` yang gagal untuk setiap kegagalan nyata.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Penafian**:\nDokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Menguji Contoh Kursus\n\nValidasi bahwa buku catatan pelajaran dan contoh kode berjalan terhadap pengaturan Microsoft Foundry \u002F Azure OpenAI yang aktif.\nRepo menyediakan sebuah runner di\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1) yang\nmenjalankan setiap notebook Python tanpa antarmuka dan mencetak matriks PASS\u002FFAIL.\n\n## Kapan digunakan\n- \"Validasi semua notebook \u002F contoh terhadap langganan Azure saya.\"\n- \"Uji cepat kursus setelah memperbarui paket atau mengubah model.\"\n- \"Pelajaran mana yang masih lulus \u002F gagal secara langsung?\"\n\nJangan gunakan ini untuk AI Smoke Test GitHub Action (yang memvalidasi agen yang *dideploy*\nyang dihosting — lihat [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)). Skill ini\nmenjalankan notebook secara lokal.\n\n## Prasyarat (periksa dulu)\n1. **Python 3.12+** dengan dependensi kursus: `python -m pip install -r requirements.txt`\n   plus executor: `python -m pip install nbconvert ipykernel`.\n2. **`.env` di root repo** (salin dari [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example)) dengan minimal:\n   - `AZURE_AI_PROJECT_ENDPOINT` — endpoint proyek Foundry\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — sebuah deployment yang tidak usang (mis. `gpt-5-mini`)\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) dan `AZURE_OPENAI_DEPLOYMENT`\n     untuk pelajaran yang memanggil Azure OpenAI langsung (Pelajaran 06, 02-azure-openai, 14 handoff\u002Fhuman-loop).\n3. **`az login`** sudah selesai — contoh otentikasi dengan `AzureCliCredential` (Entra ID, tanpa kunci).\n4. Verifikasi deployment model ada:\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`.\n\n## Menjalankan validasi\n```powershell\n# Semua notebook Python (melewati .NET, .venv, site-packages, terjemahan, aset keterampilan)\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# Sebuah pelajaran tunggal, dengan batas waktu per-sel yang lebih lama\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# Hanya daftarkan apa yang akan dijalankan (tanpa eksekusi)\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# Interpreter eksplisit (jika `python` tidak ada di PATH, misalnya alias Windows Store)\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\nSkrip menulis salinan yang dijalankan, log per-notebook, dan `results.json` ke\n`$env:TEMP\\aiab-nbval` dan keluar dengan jumlah kegagalan.\n\nKegagalan sementara (batas laju HTTP 429 langganan bersama, gangguan sesekali\ntoken `AzureCliCredential`, atau timeout) akan dicoba ulang secara otomatis\n(`-Retries`, default 2, dengan penundaan `-RetryDelaySeconds`, default 20). Jika\ndeployment model sering mendapatkan 429, periksa kuota GlobalStandard\nTPM langganan (`az cognitiveservices usage list -l \u003Cregion>`) — menaikkan kapasitas\nsatu deployment saja tidak membantu bila kuota *langganan* habis.\n\n## Menafsirkan hasil\n- `PASS` — notebook berjalan dari awal sampai akhir tanpa error pada sel.\n- `FAIL` — baris `*Error` \u002F `*Exception` pertama ditampilkan; buka\n  `log_*.txt` yang sesuai di direktori output untuk traceback lengkap.\n- Kegagalan satu notebook dibatasi oleh `-Timeout` (per sel), jadi sel human-in-the-loop yang macet\n  muncul sebagai `StdinNotImplementedError` daripada menggantung.\n\n## Pelajaran yang membutuhkan sumber daya tambahan (diperkirakan gagal tanpa itu)\n| Pelajaran | Persyaratan tambahan |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search (`AZURE_SEARCH_SERVICE_ENDPOINT`, kunci) — memiliki jalur fallback di memori |\n| 11 MCP \u002F GitHub | Server GitHub MCP + PAT |\n| 13 memory (cognee) | `cognee` dikonfigurasi dengan penyedia model |\n| 15 browser-use | Browser Playwright terinstal (`playwright install`) + `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Runtime Foundry Lokal + model Qwen yang diunduh (di perangkat, tanpa cloud) |\n| notebook `*-dotnet-*` | kernel .NET Interactive (tidak disertakan secara default; gunakan `-IncludeDotnet`) |\n\n## Melaporkan kembali\nRingkas sebagai tabel PASS\u002FFAIL dikelompokkan berdasarkan pelajaran. Pisahkan regresi nyata\n(bug kode\u002Fkonfigurasi yang harus diperbaiki) dari kekurangan lingkungan (Search\u002FFoundry Local\u002FPAT yang hilang),\ndan cantumkan `log_*.txt` yang gagal untuk setiap kegagalan nyata.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Penafian**:\nDokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fid\u002F.agents\u002Fskills\u002Ftesting-course-samples",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":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\u002Fid\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",true,[59,65],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"LICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002FComposioHQ-awesome-claude-skills\u002Fdocument-skills\u002Fxlsx\u002FLICENSE.txt",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"recalc.py","SCRIPT","脚本",6408,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002FComposioHQ-awesome-claude-skills\u002Fdocument-skills\u002Fxlsx\u002Frecalc.py",[72,79,90,98,106,113],{"skillNo":73,"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":74,"categories":75,"keywords":78,"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",[76,77],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},[28,29],{"skillNo":80,"name":81,"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":82,"categories":83,"keywords":87,"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",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[88,8,89],"docs","microsoft docs",{"skillNo":91,"name":92,"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":93,"categories":94,"keywords":95,"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",[],[96,97],"ai agents","local ai agents",{"skillNo":99,"name":100,"nameZh":6,"description":101,"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":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",[],[105],"jupyter notebook",{"skillNo":107,"name":108,"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":109,"categories":110,"keywords":111,"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",[],[112],"deploying scalable agents",{"skillNo":114,"name":115,"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":116,"categories":117,"keywords":118,"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",[],[119],"azure openai to responses"]