Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как добавить агентическую возможность в существующее управляемое данными приложение ASP.NET Core CRUD. Используются два разных подхода: Microsoft Agent Framework и Foundry Agent Service.
Если веб-приложение уже имеет полезные функции, такие как покупки, резервирование отелей или управление данными, это относительно просто добавить функции агента в веб-приложение, упаковав эти функции в качестве инструментов (для Microsoft Agent Framework) или как конечную точку OpenAPI (для службы агента Foundry). В этом руководстве вы начнёте с простого приложения для списков to-do. К концу вы сможете создавать, обновлять и управлять задачами с агентом в приложении службы приложений.
Microsoft Agent Framework и Служба агента Foundry позволяют создавать агентные веб-приложения с возможностями на основе ИИ. В следующей таблице показаны некоторые рекомендации и компромиссы.
| Consideration | платформа агента Microsoft | Служба агента Foundry |
|---|---|---|
| Performance | Быстро (выполняется локально) | Медленнее (управляемая, удаленная служба) |
| Development | Полный код, максимальный контроль | Низкий код, быстрая интеграция |
| Testing | Тесты вручную и модульные тесты в коде | Встроенная площадка для быстрого тестирования |
| Scalability | App-managed | Под управлением Azure, с автоматическим масштабированием |
| Ограничительные меры безопасности | Требуется настраиваемая реализация | Встроенная безопасность содержимого и модерация |
| Идентичность | Требуется настраиваемая реализация | Встроенный идентификатор агента и проверка подлинности |
| Предприятие | Требуется настраиваемая интеграция | Встроенное развертывание Microsoft 365/Teams и вызовы интегрированных средств Microsoft 365. |
В этом руководстве вы узнаете, как:
- Преобразуйте существующие функциональные возможности приложения в инструменты для Microsoft Agent Framework.
- Добавьте средства в агент Microsoft Agent Framework и используйте его в веб-приложении.
- Преобразуйте существующую функциональность приложения в конечную точку OpenAPI для службы Foundry Agent.
- Вызвать агента Foundry в веб-приложении.
- Назначьте необходимые разрешения для подключения к системе с управляемыми удостоверениями.
Prerequisites
- Учетная запись Azure с активной подпиской — создание учетной записи бесплатно.
- Учетная запись GitHub, необходимая для использования GitHub Codespaces - Подробнее о пространствах кода GitHub.
Открытие примера с помощью codespaces
Проще всего приступить к работе с помощью GitHub Codespaces, который предоставляет полную среду разработки со всеми необходимыми средствами, предварительно установленными.
Перейдите в репозиторий GitHub по адресу https://github.com/Azure-Samples/app-service-agentic-semantic-kernel-ai-foundry-agent.
Нажмите кнопку "Код" , перейдите на вкладку "Пространства кода" и выберите "Создать пространство кода" на главном.
Подождите несколько минут, пока пространство кода инициализируется. Когда вы будете готовы, вы увидите полностью настроенную среду разработки в браузере.
Запустите приложение локально:
dotnet runКогда вы видите Ваше приложение, работающее на порту 5280, доступно, выберите Открыть в браузере и добавьте несколько задач.
Проверка кода агента
Оба подхода используют тот же шаблон реализации, где агент инициализируется как услуга (в Program.cs) в поставщике и внедряется в соответствующий компонент Blazor.
Инициализируется AgentFrameworkProvider в Services/AgentFrameworkProvider.cs. Код инициализации выполняет следующие действия:
- Создает объект
IChatClientиз Azure OpenAI с помощьюAzureOpenAIClient. -
TaskCrudToolВозвращает экземпляр, который инкапсулирует функциональные возможности приложения CRUD (в Tools/TaskCrudTool.cs). АтрибутыDescriptionметодов инструментов помогают агенту определить способ их вызова. - Создает агент ИИ с инструкциями
CreateAIAgent()и инструментами, зарегистрированными с помощьюAIFunctionFactory.Create(). - Создает поток для агента, чтобы сохранять состояние беседы при переходах навигации.
// Create IChatClient
IChatClient chatClient = new AzureOpenAIClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetChatClient(deployment)
.AsIChatClient();
// Get TaskCrudTool instance from service provider
var taskCrudTool = sp.GetRequiredService<TaskCrudTool>();
// Create agent with tools
var agent = chatClient.CreateAIAgent(
instructions: @"You are an agent that manages tasks using CRUD operations.
Use the provided functions to create, read, update, and delete tasks.
Always call the appropriate function for any task management request.
Don't try to handle any requests that are not related to task management.
When handling requests, if you're missing any information, don't make it up but prompt the user for it instead.",
tools:
[
AIFunctionFactory.Create(taskCrudTool.CreateTaskAsync),
AIFunctionFactory.Create(taskCrudTool.ReadTasksAsync),
AIFunctionFactory.Create(taskCrudTool.UpdateTaskAsync),
AIFunctionFactory.Create(taskCrudTool.DeleteTaskAsync)
]);
// Create thread for this scoped instance (persists across navigation)
var thread = agent.GetNewThread();
return (agent, thread);
Каждый раз, когда пользователь отправляет сообщение, компонент Blazor (в components/Pages/AgentFrameworkAgent.razor) вызывается Agent.RunAsync() с помощью входных данных пользователя и потока агента. Поток агента отслеживает историю чата.
var response = await this.Agent.RunAsync(sentInput, this.agentThread);
Развертывание примера приложения
Репозиторий с примером содержит шаблон для Azure Developer CLI (AZD), который создает приложение службы приложений Azure с управляемым удостоверением и развертывает образец приложения.
В терминале войдите в Azure с помощью Интерфейса командной строки разработчика Azure:
azd auth loginСледуйте инструкциям, чтобы завершить процесс проверки подлинности.
Разверните приложение Службы приложений Azure с помощью шаблона AZD:
azd upПри появлении запроса укажите следующие ответы:
Question Answer Введите новое имя среды: Введите уникальное имя. Выберите подписку Azure для использования: Выберите подписку. Выберите группу ресурсов для использования: Выберите команду Создать группу ресурсов. Выберите расположение для создания группы ресурсов в: Выберите Швецию Центральную. Введите имя новой группы ресурсов: Нажмите Enter. В выводе AZD найдите URL вашего приложения и откройте его в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Выберите элемент схемы OpenAPI, чтобы открыть автоматически созданную схему OpenAPI по умолчанию на пути
/openapi/v1.json. Вам потребуется эта схема позже.После успешного развертывания вы увидите URL-адрес развернутого приложения.
Теперь у вас есть приложение службы приложений с управляемым удостоверением, назначаемое системой.
Создание и настройка ресурса Microsoft Foundry
На портале Foundry убедитесь, что верхний переключатель New Foundry установлен в положение "активный", и затем создайте проект.
Разверните модель выбранного варианта (см. краткое руководство по Microsoft Foundry: создание ресурсов).
В верхней части игровой площадки модели скопируйте имя модели.
Самый простой способ получить конечную точку Azure OpenAI по-прежнему с классического портала. Нажмите переключатель New Foundry, затем выберите Azure OpenAI, а потом скопируйте URL-адрес в Azure OpenAI endpoint на будущее.
Назначьте необходимые разрешения
В верхнем меню нового портала Foundry выберите "Работа", а затем выберите "Администратор". В строке проекта Foundry вы увидите две ссылки. Один из столбцов Name — ресурс проекта Foundry, а в столбце "Родительский ресурс" — ресурс Foundry.
Выберите ресурс Foundry в родительском ресурсе и выберите "Управление этим ресурсом" на портале Azure. На портале Azure можно назначить роль для доступа к ресурсу, развернутому в веб-приложении.
Добавьте следующую роль для управляемого удостоверения приложения службы приложений:
Целевой ресурс Требуемая роль Требуется для Литейный завод Пользователь когнитивных сервисов OpenAI Служба завершения чата в Microsoft Agent Framework. Инструкции см. в разделе Назначение ролей Azure с помощью портала Azure.
Настройка переменных подключения в примере приложения
Откройте appsettings.json. Используя значения, скопированные ранее на портале Foundry, настройте следующие переменные:
Variable Description AzureOpenAIEndpointКонечная точка Azure OpenAI (скопирована из классического портала Foundry). ModelDeploymentИмя модели в развертывании (скопированное из тестовой среды модели на новом портале Foundry). Note
Чтобы упростить руководство, эти переменные будут использоваться при помощи appsettings.json, вместо того чтобы перезаписывать их параметрами приложения в службе приложений App Service.
Note
Чтобы упростить руководство, эти переменные будут использоваться при помощи appsettings.json, вместо того чтобы перезаписывать их параметрами приложения в службе приложений App Service.
Войдите в Azure с помощью Azure CLI:
az loginЭто позволяет клиентской библиотеке удостоверений Azure в примере кода получать маркер проверки подлинности для пользователя, вошедшего в систему. Помните, что вы добавили необходимую роль для этого пользователя ранее.
Запустите приложение локально:
dotnet runКогда вы увидите Ваше приложение, работающее на порту 5280, доступно, выберите Открыть в браузере.
Выберите ссылку Microsoft Agent Framework Agent и ссылку Служба агента Foundry, чтобы попробовать чат-интерфейс. Если вы получите ответ, приложение успешно подключается к ресурсу Microsoft Foundry.
Вернитесь в пространство кода GitHub, разверните изменения приложения.
azd upПерейдите к развернутому приложению еще раз и протестируйте агенты чата.
Очистите ресурсы
После завершения работы с приложением можно удалить ресурсы службы приложений, чтобы избежать дополнительных затрат:
azd down --purge
Так как шаблон AZD не включает ресурсы Microsoft Foundry, их необходимо удалить вручную, если вы хотите.