Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы узнаете, как предоставить функциональные возможности веб-приложения Spring Boot с помощью OpenAPI, добавить его в службу агента Foundry и взаимодействовать с приложением с помощью естественного языка в песочнице агентов.
Если веб-приложение уже имеет полезные функции, такие как покупки, бронирование отелей или управление данными, это легко сделать эти возможности доступными агенту ИИ в Службе агента Foundry. Просто добавив в приложение схему OpenAPI, агент может понять и использовать возможности приложения при реагировании на запросы пользователей. Это означает, что ваше приложение может сделать все, что может сделать агент ИИ, с минимальными усилиями, помимо создания конечной точки OpenAPI для вашего приложения. В этом руководстве вы начнёте с простого приложения для списков to-do. К концу вы сможете создавать, обновлять и управлять задачами с агентом с помощью общения ИИ.
- Добавьте функции OpenAPI в веб-приложение.
- Убедитесь, что схема OpenAPI совместима со службой агента Foundry.
- Зарегистрируйте приложение в качестве средства OpenAPI в службе агента Foundry.
- Проверьте агент на игровой площадке агентов.
Предпосылки
В этом руководстве предполагается, что вы работаете с примером, используемым в руководстве. Создание веб-приложения Java Spring Boot с помощью Службы приложений Azure в Linux и Azure Cosmos DB.
По крайней мере, откройте образец приложения в GitHub Codespaces и разверните приложение, запустив команду azd up.
Добавление функций OpenAPI в веб-приложение
Подсказка
Чтобы внести все следующие изменения, дайте указания GitHub Copilot в агентском режиме:
I'd like to generate OpenAPI functionality using Spring Boot OpenAPI. Please also generate the server URL and operation ID in the schema.
В пространстве кода откройте pom.xml и добавьте следующую зависимость:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.6.0</version> </dependency>Откройте src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/controller/TodoListController.java и добавьте следующие импорты.
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag;Класс
TodoListControllerреализует@RestController, поэтому необходимо добавить только несколько заметок, чтобы сделать его совместимым с OpenAPI. Кроме того, чтобы обеспечить совместимость API с службой агента Foundry, необходимо указатьoperationIdсвойство в заметке@Operation(см. раздел "Использование службы агента Foundry" с указанными средствами OpenAPI: предварительные требования).Найдите объявление класса и добавьте аннотацию
@Tag, как показано в следующем фрагменте кода.@RestController @Tag(name = "Todo List", description = "Todo List management APIs") public class TodoListController {getTodoItemНайдите объявление метода и добавьте заметку@OperationсdescriptionиoperationId, как показано в следующем фрагменте кода:@Operation(description = "Returns a single todo item", operationId = "getTodoItem") @GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE}) public TodoItem getTodoItem(@PathVariable("index") String index) {getAllTodoItemsНайдите объявление метода и добавьте заметку@OperationсdescriptionиoperationId, как показано в следующем фрагменте кода:@Operation(description = "Returns a list of all todo items", operationId = "getAllTodoItems") @GetMapping(path = "/api/todolist", produces = {MediaType.APPLICATION_JSON_VALUE}) public List<TodoItem> getAllTodoItems() {addNewTodoItemНайдите объявление метода и добавьте заметку@OperationсdescriptionиoperationId, как показано в следующем фрагменте кода:@Operation(description = "Creates a new todo item", operationId = "addNewTodoItem") @PostMapping(path = "/api/todolist", consumes = MediaType.APPLICATION_JSON_VALUE) public String addNewTodoItem(@RequestBody TodoItem item) {updateTodoItemНайдите объявление метода и добавьте заметку@OperationсdescriptionиoperationId, как показано в следующем фрагменте кода:@Operation(description = "Updates an existing todo item", operationId = "updateTodoItem") @PutMapping(path = "/api/todolist", consumes = MediaType.APPLICATION_JSON_VALUE) public String updateTodoItem(@RequestBody TodoItem item) {deleteTodoItemНайдите объявление метода и добавьте заметку@OperationсdescriptionиoperationId, как показано в следующем фрагменте кода:@Operation(description = "Deletes a todo item by ID", operationId = "deleteTodoItem") @DeleteMapping("/api/todolist/{id}") public String deleteTodoItem(@PathVariable("id") String id) {Эта минимальная конфигурация дает следующие параметры, как описано в springdoc-openapi:
- Пользовательский интерфейс Swagger в
/swagger-ui.html. - Спецификация OpenAPI по адресу
/v3/api-docs.
- Пользовательский интерфейс Swagger в
В терминале пространства кода запустите приложение, используя
mvn spring-boot:run.Выберите Открыть в браузере.
Перейдите на Swagger UI, добавив
/swagger-ui.htmlк URL.Убедитесь, что операции API работают, пробуя их в пользовательском интерфейсе Swagger.
Вернитесь в терминал codespace, зафиксируйте изменения (метод GitHub Actions) или запустите
azd up(метод Azure Developer CLI).После развертывания изменений перейдите к
https://<your-app's-url>/v3/api-docsсхеме и скопируйте ее позже.
Создание агента в Microsoft Foundry
Замечание
В этих шагах используется новый портал Foundry.
На портале Foundry в правом верхнем меню выберите New Foundry.
Если это первый раз на новом портале Foundry, выберите имя проекта и нажмите кнопку "Создать проект".
Присвойте проекту имя и нажмите кнопку "Создать".
Нажмите кнопку "Начать сборку", а затем создайте агент.
Присвойте агенту имя и нажмите кнопку "Создать". Когда агент будет готов, вы увидите игровую площадку агента.
Обратите внимание на модели, которые можно использовать и доступные регионы.
На игровой площадке агента разверните Инструменты и выберите Добавить>Настраиваемый инструмент>OpenAPI>Создать.
Присвойте инструменту имя и описание. В поле схемы OpenAPI 3.0+ вставьте скопированную ранее схему.
Нажмите кнопку "Создать".
Нажмите кнопку "Сохранить".
Подсказка
В этом руководстве средство OpenAPI настроено для анонимного вызова приложения без проверки подлинности. Для рабочих сценариев необходимо защитить инструмент с помощью идентификации управляемой учетной записи. Пошаговые инструкции см. в разделе "Безопасные конечные точки OpenAPI" для службы агента Foundry.
Протестируйте агент
В инструкциях приведены некоторые простые инструкции, например "Используйте средство todosApp для управления задачами".
Свяжитесь с агентом с учетом следующих вариантов запроса:
- Показать мне все задачи.
- Создайте задачу под названием "Придумать три шутки салата".
- Измените это на "Придумать с тремя шутками стука-стука".
Рекомендации по обеспечению безопасности
При предоставлении API-интерфейсов с помощью OpenAPI в Службе приложений Azure следуйте приведенным ниже рекомендациям по обеспечению безопасности.
- Проверка подлинности и авторизация. Защита конечных точек OpenAPI с помощью проверки подлинности Microsoft Entra. Пошаговые инструкции см. в разделе "Безопасные конечные точки OpenAPI" для службы агента Foundry. Кроме того, вы можете защитить свои конечные точки с помощью Azure API Management и идентификатора Microsoft Entra ID, обеспечив доступ только для авторизованных пользователей или агентов.
- Проверка и очистка входных данных: Пример кода, приведенный в этом руководстве, исключает проверку входных данных и очистку для простоты и ясности. В рабочих сценариях всегда реализуйте правильную проверку и очистку для защиты приложения. Сведения о Spring см. в разделе Spring: Проверка входных данных формы.
- Используйте ПРОТОКОЛ HTTPS: В примере используется служба приложений Azure, которая по умолчанию применяет ПРОТОКОЛ HTTPS и предоставляет бесплатные СЕРТИФИКАТЫ TLS/SSL для шифрования данных во время передачи.
- Ограничение CORS: Ограничить общий доступ к ресурсам между источниками (CORS) только доверенным доменам. Дополнительные сведения см. в разделе "Включение CORS".
- Применение ограничения скорости:Используйте службу управления API или службу пользовательского промежуточного слоя, чтобы предотвратить злоупотребления и атаки типа "отказ в обслуживании".
- Скрытие конфиденциальных конечных точек: Избегайте предоставления внутренних или административных API в схеме OpenAPI.
- Просмотрите схему OpenAPI: Убедитесь, что схема OpenAPI не раскрывает конфиденциальную информацию (например, внутренние ссылки, секреты или детали реализации).
- Обновление зависимостей: Регулярно обновляйте пакеты NuGet и отслеживайте рекомендации по безопасности.
- Ведение журнала и мониторинг активности: Включите ведение журнала и мониторинг доступа для обнаружения подозрительной активности.
- Используйте управляемые удостоверения: При вызове других служб Azure используйте управляемые удостоверения вместо жестко закодированных учетных данных.
Дополнительные сведения см. в статье "Защита приложения службы приложений " и рекомендации по обеспечению безопасности REST API.
Следующий шаг
Теперь вы настроили приложение App Service для использования в качестве инструмента для службы агента Foundry. Взаимодействуйте с API вашего приложения через естественный язык на платформе для агентов. Здесь вы можете продолжать добавлять функции в агент на портале Foundry, интегрировать его в собственные приложения с помощью пакета SDK Microsoft Foundry или REST API или развернуть его в составе более крупного решения. Агенты, созданные в Microsoft Foundry, можно запускать в облаке, интегрировать в чат-боты или внедрять в веб-приложения и мобильные приложения.
Замечание
В настоящее время служба агента Foundry не содержит пакет SDK для Java. Сведения о том, как использовать созданный агент, см. в руководстве по созданию агентного веб-приложения в Службе приложений Azure с помощью семантического ядра Майкрософт или службы агента Foundry (.NET).