Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как добавить агентные возможности в существующее CRUD-приложение FastAPI, ориентированное на данные. Это делается с помощью двух различных подходов: LangGraph и Агентской службы Foundry.
Если веб-приложение уже имеет полезные функции, такие как покупки, бронирование отелей или управление данными, это относительно просто добавить функции агента в веб-приложение, упаковав эти функции в подключаемый модуль (для LangGraph) или как конечную точку OpenAPI (для службы агента Foundry). В этом руководстве вы начнете с простого приложения со списком дел. К концу вы сможете создавать, обновлять и управлять задачами с агентом в приложении службы приложений.
Служба агента LangGraph и Foundry позволяют создавать агентские веб-приложения с возможностями на основе ИИ. LangGraph похож на Microsoft Agent Framework и является пакетом SDK. В следующей таблице показаны некоторые рекомендации и компромиссы.
| Рассмотрение | LangGraph или Microsoft Agent Framework | Служба агента Foundry |
|---|---|---|
| Performance | Быстро (работает локально) | Медленнее (управляемая, удаленная служба) |
| Развитие | Полный код, полный контроль | Низкий код, быстрая интеграция |
| Testing | Ручные тесты/модульные тесты в коде | Встроенная площадка для быстрого тестирования |
| Масштабируемость | Управляется через приложение | Под управлением Azure, с автоматическим масштабированием |
| Ограничительные меры безопасности | Требуется настраиваемая реализация | Встроенная безопасность содержимого и модерация |
| Идентичность | Требуется настраиваемая реализация | Встроенный идентификатор агента и проверка подлинности |
| Предприятие | Требуется настраиваемая интеграция | Встроенное развертывание Microsoft 365/Teams и вызовы интегрированных средств Microsoft 365. |
В этом руководстве вы узнаете, как:
- Преобразуйте существующие функции приложения в подключаемый модуль для LangGraph.
- Добавьте подключаемый модуль в агент LangGraph и используйте его в веб-приложении.
- Преобразуйте существующую функциональность приложения в конечную точку OpenAPI для службы Foundry Agent.
- Вызвать агента Foundry в веб-приложении.
- Назначьте необходимые разрешения для подключения с использованием управляемой идентичности.
Предпосылки
- Учетная запись Azure с активной подпиской — создание учетной записи бесплатно.
- Учетная запись GitHub для работы с GitHub Codespaces — Подробнее о GitHub Codespaces.
Открытие примера с помощью codespaces
Проще всего приступить к работе с помощью GitHub Codespaces, который предоставляет полную среду разработки со всеми необходимыми средствами, предварительно установленными.
Перейдите в репозиторий GitHub по адресу https://github.com/Azure-Samples/app-service-agentic-langgraph-foundry-python.
Нажмите кнопку "Код" , перейдите на вкладку "Пространства кода" и выберите "Создать пространство кода" на главном.
Подождите несколько минут, пока пространство кода инициализируется. Когда вы будете готовы, вы увидите полностью настроенную среду разработки в браузере.
Запустите приложение локально:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt uvicorn src.app:app --host 0.0.0.0 --port 3000Когда вы увидите сообщение Ваше приложение, запущенное на порту 3000, доступно, выберите Open in Browser и добавьте несколько задач.
Агенты не полностью настроены, поэтому они еще не работают. Вы настроите их позже.
Просмотреть код агента
Оба подхода используют один и тот же шаблон реализации, где агент инициализируется при запуске приложения и отвечает на пользовательские сообщения с помощью запросов POST.
LangGraphTaskAgent инициализируется в конструкторе в src/agents/langgraph_task_agent.py. Код инициализации выполняет следующие действия:
- Настраивает клиент AzureChatOpenAI с помощью переменных среды.
- Создает предварительно созданный агент ReAct с памятью и набором средств CRUD для управления задачами (см. краткое руководство по LangGraph).
# Initialize Azure OpenAI client
credential = DefaultAzureCredential()
azure_ad_token_provider = get_bearer_token_provider(
credential, "https://cognitiveservices.azure.com/.default"
)
self.llm = AzureChatOpenAI(
azure_endpoint=endpoint,
azure_deployment=deployment_name,
azure_ad_token_provider=azure_ad_token_provider,
api_version="2024-10-21"
)
# Define tools
tools = [
self._create_task_tool(),
self._get_tasks_tool(),
self._get_task_tool(),
self._update_task_tool(),
self._delete_task_tool()
]
# Create the agent
self.agent = create_react_agent(self.llm, tools, checkpointer=self.memory)
print("LangGraph Task Agent initialized successfully")
При обработке сообщений пользователей агент вызывается с ainvoke() сообщением пользователя и идентификатором потока для непрерывности общения.
result = await self.agent.ainvoke(
{"messages": [("user", message)]},
config=config
)
Развертывание примера приложения
Репозиторий с примерами содержит шаблон Azure Developer CLI (AZD), который создает приложение App Service с управляемой идентичностью и развертывает ваше приложение-пример.
В терминале войдите в Azure с помощью Интерфейса командной строки разработчика Azure:
azd auth loginСледуйте инструкциям, чтобы завершить процесс проверки подлинности.
Разверните приложение Службы приложений Azure с помощью шаблона AZD:
azd upПри появлении запроса укажите следующие ответы:
Question Ответ Введите новое имя среды: Введите уникальное имя. Выберите подписку Azure для использования: Выберите подписку. Выберите группу ресурсов для использования: Выберите "Создать группу ресурсов". Выберите расположение для создания группы ресурсов в: Выберите Швецию Центральную. Введите имя новой группы ресурсов: Нажмите Enter. В выходных данных AZD найдите URL-адрес приложения и перейдите к нему в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Откройте автоматически созданную схему OpenAPI по пути
https://....azurewebsites.net/openapi.json. Вам потребуется эта схема позже.Теперь у вас есть приложение App Service с управляемым системой удостоверением.
Создание и настройка ресурса 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 можно назначить доступ на основе ролей к ресурсу, относящемуся к развернутому веб-приложению.
Добавьте следующую роль для управляемой учетной записи служебного приложения App Service:
Целевой ресурс Требуемая роль Требуется для Литейный завод Пользователь когнитивных сервисов OpenAI Служба завершения чата в Microsoft Agent Framework. Инструкции см. в статье "Назначение ролей Azure" с помощью портала Azure.
Настройка переменных подключения в примере приложения
Откройте .env. Используя значения, скопированные ранее на портале Foundry, настройте следующие переменные:
Variable Description AZURE_OPENAI_ENDPOINTКонечная точка Azure OpenAI (скопирована с классического портала Foundry). AZURE_OPENAI_DEPLOYMENT_NAMEИмя модели в развертывании (скопированное с площадки модели в новом портале Foundry). Замечание
Чтобы упростить руководство, вы будете использовать эти переменные в .env вместо того, чтобы переопределять их с помощью настроек приложения в App Service.
Замечание
Чтобы упростить руководство, вы будете использовать эти переменные в .env вместо того, чтобы переопределять их с помощью настроек приложения в App Service.
Войдите в Azure с помощью Azure CLI:
az loginЭто позволяет клиентской библиотеке удостоверений Azure в примере кода получать маркер проверки подлинности для пользователя, вошедшего в систему. Помните, что вы добавили необходимую роль для этого пользователя ранее.
Запустите приложение локально:
npm run build npm startКогда вы увидите Приложение, работающее на порту 3000, доступно, выберите Открыть в браузере.
Выберите ссылку агента LangGraph и ссылку агента Foundry , чтобы попробовать интерфейс чата. Если вы получите ответ, приложение успешно подключается к ресурсу Microsoft Foundry.
Вернитесь в пространство кода GitHub, разверните изменения приложения.
azd upПерейдите к развернутому приложению еще раз и протестируйте агенты чата.
Очистите ресурсы
После завершения работы с приложением можно удалить ресурсы службы приложений, чтобы избежать дополнительных затрат:
azd down --purge
Так как шаблон AZD не включает ресурсы Microsoft Foundry, их необходимо удалить вручную, если вы хотите.