Руководство по созданию агентного веб-приложения в Службе приложений Azure с помощью Microsoft Agent Framework или Службы агента Foundry (.NET)

В этом руководстве показано, как добавить агентическую возможность в существующее управляемое данными приложение 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

Открытие примера с помощью codespaces

Проще всего приступить к работе с помощью GitHub Codespaces, который предоставляет полную среду разработки со всеми необходимыми средствами, предварительно установленными.

  1. Перейдите в репозиторий GitHub по адресу https://github.com/Azure-Samples/app-service-agentic-semantic-kernel-ai-foundry-agent.

  2. Нажмите кнопку "Код" , перейдите на вкладку "Пространства кода" и выберите "Создать пространство кода" на главном.

  3. Подождите несколько минут, пока пространство кода инициализируется. Когда вы будете готовы, вы увидите полностью настроенную среду разработки в браузере.

  4. Запустите приложение локально:

    dotnet run
    
  5. Когда вы видите Ваше приложение, работающее на порту 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 с управляемым удостоверением и развертывает образец приложения.

  1. В терминале войдите в Azure с помощью Интерфейса командной строки разработчика Azure:

    azd auth login
    

    Следуйте инструкциям, чтобы завершить процесс проверки подлинности.

  2. Разверните приложение Службы приложений Azure с помощью шаблона AZD:

    azd up
    
  3. При появлении запроса укажите следующие ответы:

    Question Answer
    Введите новое имя среды: Введите уникальное имя.
    Выберите подписку Azure для использования: Выберите подписку.
    Выберите группу ресурсов для использования: Выберите команду Создать группу ресурсов.
    Выберите расположение для создания группы ресурсов в: Выберите Швецию Центральную.
    Введите имя новой группы ресурсов: Нажмите Enter.
  4. В выводе AZD найдите URL вашего приложения и откройте его в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  5. Выберите элемент схемы OpenAPI, чтобы открыть автоматически созданную схему OpenAPI по умолчанию на пути /openapi/v1.json. Вам потребуется эта схема позже.

  6. После успешного развертывания вы увидите URL-адрес развернутого приложения.

    Теперь у вас есть приложение службы приложений с управляемым удостоверением, назначаемое системой.

Создание и настройка ресурса Microsoft Foundry

  1. На портале Foundry убедитесь, что верхний переключатель New Foundry установлен в положение "активный", и затем создайте проект.

  2. Разверните модель выбранного варианта (см. краткое руководство по Microsoft Foundry: создание ресурсов).

  3. В верхней части игровой площадки модели скопируйте имя модели.

  4. Самый простой способ получить конечную точку Azure OpenAI по-прежнему с классического портала. Нажмите переключатель New Foundry, затем выберите Azure OpenAI, а потом скопируйте URL-адрес в Azure OpenAI endpoint на будущее.

    Скриншот, на котором показано, как скопировать конечную точку OpenAI и конечную точку проекта Foundry в портале.

Назначьте необходимые разрешения

  1. В верхнем меню нового портала Foundry выберите "Работа", а затем выберите "Администратор". В строке проекта Foundry вы увидите две ссылки. Один из столбцов Name — ресурс проекта Foundry, а в столбце "Родительский ресурс" — ресурс Foundry.

    Снимок экрана, показывающий, как быстро перейти к ресурсу литейного производства или ресурсу проекта литейного производства.

  2. Выберите ресурс Foundry в родительском ресурсе и выберите "Управление этим ресурсом" на портале Azure. На портале Azure можно назначить роль для доступа к ресурсу, развернутому в веб-приложении.

  3. Добавьте следующую роль для управляемого удостоверения приложения службы приложений:

    Целевой ресурс Требуемая роль Требуется для
    Литейный завод Пользователь когнитивных сервисов OpenAI Служба завершения чата в Microsoft Agent Framework.

    Инструкции см. в разделе Назначение ролей Azure с помощью портала Azure.

Настройка переменных подключения в примере приложения

  1. Откройте appsettings.json. Используя значения, скопированные ранее на портале Foundry, настройте следующие переменные:

    Variable Description
    AzureOpenAIEndpoint Конечная точка Azure OpenAI (скопирована из классического портала Foundry).
    ModelDeployment Имя модели в развертывании (скопированное из тестовой среды модели на новом портале Foundry).

    Note

    Чтобы упростить руководство, эти переменные будут использоваться при помощи appsettings.json, вместо того чтобы перезаписывать их параметрами приложения в службе приложений App Service.

    Note

    Чтобы упростить руководство, эти переменные будут использоваться при помощи appsettings.json, вместо того чтобы перезаписывать их параметрами приложения в службе приложений App Service.

  2. Войдите в Azure с помощью Azure CLI:

    az login
    

    Это позволяет клиентской библиотеке удостоверений Azure в примере кода получать маркер проверки подлинности для пользователя, вошедшего в систему. Помните, что вы добавили необходимую роль для этого пользователя ранее.

  3. Запустите приложение локально:

    dotnet run
    
  4. Когда вы увидите Ваше приложение, работающее на порту 5280, доступно, выберите Открыть в браузере.

  5. Выберите ссылку Microsoft Agent Framework Agent и ссылку Служба агента Foundry, чтобы попробовать чат-интерфейс. Если вы получите ответ, приложение успешно подключается к ресурсу Microsoft Foundry.

  6. Вернитесь в пространство кода GitHub, разверните изменения приложения.

    azd up
    
  7. Перейдите к развернутому приложению еще раз и протестируйте агенты чата.

Очистите ресурсы

После завершения работы с приложением можно удалить ресурсы службы приложений, чтобы избежать дополнительных затрат:

azd down --purge

Так как шаблон AZD не включает ресурсы Microsoft Foundry, их необходимо удалить вручную, если вы хотите.

Дополнительные ресурсы