[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699AE46GR2RX2RGMW9XD3HK":3,"skill-same:01M699AE46GR2RX2RGMW9XD3HK":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},"01M699AE46GR2RX2RGMW9XD3HK","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\u002Fbg\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Не използвайте това за AI Smoke Test GitHub Action (който валидира *публикувани*\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, translations, skill assets)\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# Ясен интерпретатор (ако `python` не е в PATH, например псевдоним от 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единично разгръщане не помага, ако квотата на *абонамента* е изчерпана.\n\n## Интерпретиране на резултатите\n- `PASS` — тетрадката се изпълни изцяло без грешки в клетки.\n- `FAIL` — показва се първият ред `*Error` \u002F `*Exception`; отворете съответния\n  `log_*.txt` в изходната папка за пълния traceback.\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 runtime + изтеглен Qwen модел (на устройството, без облак) |\n| `*-dotnet-*` тетрадки | .NET Interactive kernel (изключени по подразбиране; използвайте `-IncludeDotnet`) |\n\n## Отчитане обратно\nСумирайте като таблица PASS\u002FFAIL групирана по урок. Разделете на реални регресии\n(грешки в код\u002Fконфигурация за оправяне) от липси в средата (липсващ 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Не използвайте това за AI Smoke Test GitHub Action (който валидира *публикувани*\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, translations, skill assets)\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# Ясен интерпретатор (ако `python` не е в PATH, например псевдоним от 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единично разгръщане не помага, ако квотата на *абонамента* е изчерпана.\n\n## Интерпретиране на резултатите\n- `PASS` — тетрадката се изпълни изцяло без грешки в клетки.\n- `FAIL` — показва се първият ред `*Error` \u002F `*Exception`; отворете съответния\n  `log_*.txt` в изходната папка за пълния traceback.\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 runtime + изтеглен Qwen модел (на устройството, без облак) |\n| `*-dotnet-*` тетрадки | .NET Interactive kernel (изключени по подразбиране; използвайте `-IncludeDotnet`) |\n\n## Отчитане обратно\nСумирайте като таблица PASS\u002FFAIL групирана по урок. Разделете на реални регресии\n(грешки в код\u002Fконфигурация за оправяне) от липси в средата (липсващ 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\u002Fbg\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\u002Fbg\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",true,[59,65],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"checklist.md","REFERENCE","参考文档",914,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-qa-test-result-persistence\u002Fchecklist.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"workflow.md",4024,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-qa-test-result-persistence\u002Fworkflow.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"]