Развертывание масштабируемых агентов с Microsoft Foundry
Вспомогательное умение для Урок 16 – Развертывание масштабируемых агентов.
Используйте его, чтобы помочь учащемуся перевести агента от прототипа к масштабируемому, наблюдаемому
производственному развертыванию. Основывайте каждую рекомендацию на содержании урока и
исполняемом блокноте; не придумывайте API Foundry.
Триггеры
Активируйте это умение, когда учащийся хочет:
- Развернуть агента в Microsoft Foundry как хостинг-агента и сделать его версионированным/наблюдаемым.
- Выбрать между паттернами развертывания клиент-хостинг, хостинг-агент и агент-воркфлоу.
- Добавить маршрутизацию моделей, кэширование ответов или ограниченную конкуренцию для контроля задержки и стоимости.
- Добавить пропускной контроль оценки, чтобы плохая версия агента не была выпущена.
- Добавить шаг одобрения человеком в цикле для действий с высоким риском.
- Инструментировать агента с помощью OpenTelemetry для трассировки и производственной наблюдаемости.
- Провести дымовое тестирование развернутого агента как быстрый постразверточный пропускной контроль.
Основная концепция
Производственный агент — это в основном операционный скелет вокруг модели (~80%),
а не сама модель. Сопоставьте каждую рекомендацию с одной из этих областей:
| Область |
Прототип → Производство |
| Хостинг |
блокнот → версионированный хостинг-сервис |
| Идентичность |
ваш az login → управляемая идентичность + scoped RBAC |
| Состояние |
в памяти → внешний поток/хранилище памяти |
| Ошибки |
обратная трассировка → повторные попытки, альтернативы, оповещения |
| Стоимость |
"пару центов" → отслеживается, маршрутизируется, кэшируется, бюджетируется |
| Качество |
визуальная оценка → автоматический пропускной контроль оценки |
| Доверие |
ваше одобрение → политика + человек в цикле |
Паттерны развертывания (выбрать один или комбинировать)
- Клиент-хостинг — цикл рассуждений работает в вашем процессе. Максимальный контроль; вы отвечаете за масштабирование/состояние.
- Хостинг-агент (Foundry Agent Service) — Foundry размещает цикл, хранит потоки, применяет RBAC/безопасность контента, показывает агента в портале. Меньше контроля, значительно меньше операционная нагрузка.
- Агент-воркфлоу — несколько агентов/инструментов, собранных в граф с ветвлениями, узлами одобрения и постоянными контрольными точками.
Жизненный цикл (цикл, который выпускает агента)
create → version → evaluate (gate) → deploy hosted → observe online → collect failures → repeat.
Офлайн-оценка — это пропускной контроль, а не дополнение — версия не выпускается,
если она не проходит порог. Онлайн-наблюдаемость возвращает реальные ошибки
обратно в офлайн-тестовый набор.
Рычаги масштабирования и стоимости (в приоритетном порядке)
- Подберите размер модели по необходимости — используйте самую маленькую модель, которая проходит пропускной контроль оценки.
- Маршрутизируйте по сложности — маленькая/быстрая модель для простых запросов, большая модель для реальных рассуждений (самодельный классификатор или Foundry Model Router).
- Кэширование — обслуживайте почти дублирующие запросы без вызова модели.
- Бесп состояния + ограниченная конкуренция — вынесите состояние; повторять с повторной попыткой по экспоненте.
Основные паттерны для воспроизведения
Покажите учащемуся эти из блокнота
16-python-agent-framework.ipynb:
- Обработчик запросов: кэш → маршрутизировать по сложности → спан трассировки → выполнить → кэш.
- Пропускной контроль оценки: оценить офлайн-тестовый набор; вернуть
pass_rate >= threshold и разворачивать только если истина.
- Одобрение человеком:
@tool(approval_mode="always_require") для действий, например, больших возвратов средств.
- Трассировка: обернуть каждый запрос в
tracer.start_as_current_span(...) и установить атрибуты, например, routed.model, customer.id.
Дымовое тестирование развернутого агента
После развертывания проверьте, что конечная точка действительно отвечает (зеленое развертывание может быть
тихим). Используйте действие AI Smoke Test
через .github/workflows/smoke-test.yml
с каталогом в tests/. Запускатель POSTит каждый
запрос на POST {project_endpoint}/agents/{agent_name}/endpoint/protocols/openai/responses
и проверяет текст ответа. Идентичность должна иметь роль Azure AI User на
уровне проекта Foundry; аудитория токена должна быть https://ai.azure.com/.
Наложите уровни контроля: дымовое тестирование (доступность/ответ, каждый релиз) → оценка офлайн (достаточно хорош для выпуска, перед продвижением) → оценка онлайн (как агент работает в реальности, непрерывно).
Корпоративные меры контроля
- RBAC: дайте каждому хостингу-агенту управляемую идентичность с минимальными привилегиями.
- MCP в производстве: рассматривайте каждый MCP сервер как ненадежную границу — закрепите версию, ограничьте идентичность, валидируйте выводы, ограничьте частоту, никогда не раскрывайте секреты.
Ограничения для помощника
- Предпочитайте канонический паттерн
FoundryChatClient(...) + provider.as_agent(...), используемый по всему курсу.
- Не обещайте результаты живого Azure, которые вы не проверили; рекомендуйте рабочий процесс дымового тестирования для подтверждения развертывания.
- Держите рекомендации по оценке и стоимости связанными: оценка задает нижний предел качества, маршрутизация/кэширование держат стоимость близкой к этому пределу.
Отказ от ответственности:
Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.
1---2name: deploying-scalable-agents-213description: Развертывание масштабируемых агентов с Microsoft Foundry4license: MIT5---6# Развертывание масштабируемых агентов с Microsoft Foundry78> Вспомогательное умение для [Урок 16 – Развертывание масштабируемых агентов](../../../16-deploying-scalable-agents/README.md).9> Используйте его, чтобы помочь учащемуся перевести агента от прототипа к масштабируемому, наблюдаемому10> производственному развертыванию. Основывайте каждую рекомендацию на содержании урока и11> исполняемом блокноте; не придумывайте API Foundry.1213## Триггеры1415Активируйте это умение, когда учащийся хочет:16- Развернуть агента в Microsoft Foundry как **хостинг-агента** и сделать его версионированным/наблюдаемым.17- Выбрать между паттернами развертывания **клиент-хостинг, хостинг-агент и агент-воркфлоу**.18- Добавить **маршрутизацию моделей**, **кэширование ответов** или **ограниченную конкуренцию** для контроля задержки и стоимости.19- Добавить **пропускной контроль оценки**, чтобы плохая версия агента не была выпущена.20- Добавить шаг **одобрения человеком в цикле** для действий с высоким риском.21- Инструментировать агента с помощью **OpenTelemetry** для трассировки и производственной наблюдаемости.22- Провести **дымовое тестирование** развернутого агента как быстрый постразверточный пропускной контроль.2324## Основная концепция2526Производственный агент — это в основном операционный скелет *вокруг* модели (~80%),27а не сама модель. Сопоставьте каждую рекомендацию с одной из этих областей:2829| Область | Прототип → Производство |30|---------|------------------------|31| Хостинг | блокнот → версионированный хостинг-сервис |32| Идентичность | ваш `az login` → управляемая идентичность + scoped RBAC |33| Состояние | в памяти → внешний поток/хранилище памяти |34| Ошибки | обратная трассировка → повторные попытки, альтернативы, оповещения |35| Стоимость | "пару центов" → отслеживается, маршрутизируется, кэшируется, бюджетируется |36| Качество | визуальная оценка → автоматический пропускной контроль оценки |37| Доверие | ваше одобрение → политика + человек в цикле |3839## Паттерны развертывания (выбрать один или комбинировать)40411. **Клиент-хостинг** — цикл рассуждений работает в вашем процессе. Максимальный контроль; вы отвечаете за масштабирование/состояние.422. **Хостинг-агент (Foundry Agent Service)** — Foundry размещает цикл, хранит потоки, применяет RBAC/безопасность контента, показывает агента в портале. Меньше контроля, значительно меньше операционная нагрузка.433. **Агент-воркфлоу** — несколько агентов/инструментов, собранных в граф с ветвлениями, узлами одобрения и постоянными контрольными точками.4445## Жизненный цикл (цикл, который выпускает агента)4647`create → version → evaluate (gate) → deploy hosted → observe online → collect failures → repeat`.48**Офлайн-оценка — это пропускной контроль, а не дополнение** — версия не выпускается,49если она не проходит порог. Онлайн-наблюдаемость возвращает реальные ошибки50обратно в офлайн-тестовый набор.5152## Рычаги масштабирования и стоимости (в приоритетном порядке)53541. **Подберите размер модели по необходимости** — используйте самую маленькую модель, которая проходит пропускной контроль оценки.552. **Маршрутизируйте по сложности** — маленькая/быстрая модель для простых запросов, большая модель для реальных рассуждений (самодельный классификатор или Foundry Model Router).563. **Кэширование** — обслуживайте почти дублирующие запросы без вызова модели.574. **Бесп состояния + ограниченная конкуренция** — вынесите состояние; повторять с повторной попыткой по экспоненте.5859## Основные паттерны для воспроизведения6061Покажите учащемуся эти из блокнота62[`16-python-agent-framework.ipynb`](../../../16-deploying-scalable-agents/code_samples/16-python-agent-framework.ipynb):6364- **Обработчик запросов**: кэш → маршрутизировать по сложности → спан трассировки → выполнить → кэш.65- **Пропускной контроль оценки**: оценить офлайн-тестовый набор; вернуть `pass_rate >= threshold` и разворачивать только если истина.66- **Одобрение человеком**: `@tool(approval_mode="always_require")` для действий, например, больших возвратов средств.67- **Трассировка**: обернуть каждый запрос в `tracer.start_as_current_span(...)` и установить атрибуты, например, `routed.model`, `customer.id`.6869## Дымовое тестирование развернутого агента7071После развертывания проверьте, что конечная точка действительно отвечает (зеленое развертывание может быть72тихим). Используйте действие [AI Smoke Test](https://github.com/marketplace/actions/ai-smoke-test)73через [`.github/workflows/smoke-test.yml`](../../../../../.github/workflows/smoke-test.yml)74с каталогом в [`tests/`](../../../tests/README.md). Запускатель POSTит каждый75запрос на `POST {project_endpoint}/agents/{agent_name}/endpoint/protocols/openai/responses`76и проверяет текст ответа. Идентичность должна иметь роль **Azure AI User** на77уровне проекта Foundry; аудитория токена должна быть `https://ai.azure.com/`.7879Наложите уровни контроля: **дымовое тестирование** (доступность/ответ, каждый релиз) → **оценка офлайн** (достаточно хорош для выпуска, перед продвижением) → **оценка онлайн** (как агент работает в реальности, непрерывно).80818283## Корпоративные меры контроля8485- **RBAC**: дайте каждому хостингу-агенту управляемую идентичность с минимальными привилегиями.86- **MCP в производстве**: рассматривайте каждый MCP сервер как ненадежную границу — закрепите версию, ограничьте идентичность, валидируйте выводы, ограничьте частоту, никогда не раскрывайте секреты.8788## Ограничения для помощника8990- Предпочитайте канонический паттерн `FoundryChatClient(...)` + `provider.as_agent(...)`, используемый по всему курсу.91- Не обещайте результаты живого Azure, которые вы не проверили; рекомендуйте рабочий процесс дымового тестирования для подтверждения развертывания.92- Держите рекомендации по оценке и стоимости связанными: оценка задает нижний предел качества, маршрутизация/кэширование держат стоимость близкой к этому пределу.9394---9596<!-- CO-OP TRANSLATOR DISCLAIMER START -->97**Отказ от ответственности**:98Этот документ был переведен с использованием сервиса машинного перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.99<!-- CO-OP TRANSLATOR DISCLAIMER END -->