Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы создадите интеллектуальное приложение ИИ, интегрируя Azure OpenAI с приложением .NET Blazor и развертывая его в Службе приложений Azure. Вы создадите интерактивную страницу Blazor, которая отправляет запросы на завершение чата в модель в Azure OpenAI и передает ответ обратно на страницу.
В этом руководстве вы узнаете, как:
- Создание ресурса Azure OpenAI и развертывание языковой модели
- Создание приложения Blazor с помощью Azure OpenAI
- Развертывание приложения в Службе приложений Azure
- Реализация проверки подлинности без пароля как в среде разработки, так и в Azure
Предпосылки
- Учетная запись Azure с активной подпиской
- Учетная запись GitHub для использования GitHub Codespaces
1. Создание ресурса Azure OpenAI
В этом разделе описано, как создать ресурс Azure OpenAI с помощью Azure CLI в GitHub Codespaces.
Войдите в GitHub Codespaces с помощью учетной записи GitHub.
Выберите "Использовать этот шаблон " на пустой плитке, чтобы создать пустое пространство кода.
В терминале Codespace установите Azure CLI.
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bashВойдите в свою учетную запись Azure.
az loginСледуйте инструкциям в терминале для проверки подлинности.
Задайте переменные среды, указав имена для группы ресурсов и службы Azure OpenAI и указав соответствующий регион Azure в качестве расположения.
export RESOURCE_GROUP="<group-name>" export OPENAI_SERVICE_NAME="<azure-openai-name>" export APPSERVICE_NAME="<app-name>" export LOCATION="<azure-region>"Это важно
Расположение привязано к региональной доступности выбранной модели. Доступность моделей и типов развертывания зависит от регионов Azure и уровней выставления счетов. В этом руководстве используется
gpt-4o-mini, который доступен в нескольких регионах с типом развертывания "Стандартный".Перед выбором расположения ознакомьтесь с таблицей доступности модели и региона , чтобы проверить поддержку моделей в предпочитаемом регионе.
Создайте группу ресурсов и ресурс Azure OpenAI с личным доменом и добавьте
gpt-4o-miniмодель:# Resource group az group create --name $RESOURCE_GROUP --location $LOCATION # Azure OpenAI resource az cognitiveservices account create \ --name $OPENAI_SERVICE_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --custom-domain $OPENAI_SERVICE_NAME \ --kind OpenAI \ --sku s0 # gpt-4o-mini model az cognitiveservices account deployment create \ --name $OPENAI_SERVICE_NAME \ --resource-group $RESOURCE_GROUP \ --deployment-name gpt-4o-mini \ --model-name gpt-4o-mini \ --model-version 2024-07-18 \ --model-format OpenAI \ --sku-name Standard \ --sku-capacity 1 # Cognitive Services OpenAI User role that lets the signed in Azure user read models from Azure OpenAI az role assignment create \ --assignee $(az ad signed-in-user show --query id -o tsv) \ --role "Cognitive Services OpenAI User" \ --scope /subscriptions/$(az account show --query id -o tsv)/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.CognitiveServices/accounts/$OPENAI_SERVICE_NAME
Теперь, когда у вас есть ресурс Azure OpenAI, вы можете создать веб-приложение для взаимодействия с ним.
2. Создание и настройка веб-приложения Blazor
В этом разделе описано, как создать веб-приложение Blazor с помощью .NET CLI.
В терминале Codespace создайте новое приложение Blazor и попробуйте запустить его в первый раз.
dotnet new blazor -o . dotnet runВы увидите уведомление в GitHub Codespaces, указывающее, что приложение доступно на определенном порту. Нажмите кнопку "Открыть в браузере ", чтобы запустить приложение на новой вкладке браузера.
Вернитесь в терминал Codespace, остановите приложение с помощью CTRL+C.
Установите необходимые пакеты NuGet для работы с Azure OpenAI:
dotnet add package Azure.AI.OpenAI dotnet add package Azure.IdentityОткройте
Components/Pages/Home.razorи замените его содержимое следующим кодом для простого вызова потока завершения чата с помощью Azure OpenAI:@page "/" @rendermode InteractiveServer @using Azure.AI.OpenAI @using Azure.Identity @using OpenAI.Chat @inject Microsoft.Extensions.Configuration.IConfiguration _config <h3>Azure OpenAI Chat</h3> <div class="mb-3 d-flex align-items-center" style="margin:auto;"> <input class="form-control me-2" @bind="userMessage" placeholder="Type your message..." /> <button class="btn btn-primary" @onclick="SendMessage">Send</button> </div> <div class="card p-3" style="margin:auto;"> @if (!string.IsNullOrEmpty(aiResponse)) { <div class="alert alert-info mt-3 mb-0">@aiResponse</div> } </div> @code { private string? userMessage; private string? aiResponse; private async Task SendMessage() { if (string.IsNullOrWhiteSpace(userMessage)) return; // Initialize the Azure OpenAI client var endpoint = new Uri(_config["AZURE_OPENAI_ENDPOINT"]!); var client = new AzureOpenAIClient(endpoint, new DefaultAzureCredential()); var chatClient = client.GetChatClient("gpt-4o-mini"); aiResponse = string.Empty; StateHasChanged(); // Create a chat completion streaming request var chatUpdates = chatClient.CompleteChatStreamingAsync( [ new UserChatMessage(userMessage) ]); await foreach(var chatUpdate in chatUpdates) { // Update the UI with the streaming response foreach(var contentPart in chatUpdate.ContentUpdate) { aiResponse += contentPart.Text; StateHasChanged(); } } } }В терминале получите конечную точку OpenAI:
az cognitiveservices account show \ --name $OPENAI_SERVICE_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.endpoint \ --output tsvЗапустите приложение еще раз, добавив
AZURE_OPENAI_ENDPOINTсо значением из вывода командной строки (CLI):AZURE_OPENAI_ENDPOINT=<output-from-previous-cli-command> dotnet runНажмите кнопку "Открыть в браузере ", чтобы запустить приложение на новой вкладке браузера.
Введите сообщение в текстовое поле и нажмите кнопку "Отправить и дать приложению несколько секунд ответить с сообщением из Azure OpenAI.
Приложение использует DefaultAzureCredential, которое автоматически использует azure CLI, выполнившего вход пользователя для проверки подлинности маркера. Далее в этом руководстве вы развернете приложение Blazor в Службе приложений Azure и настройте его для безопасного подключения к ресурсу Azure OpenAI с помощью управляемого удостоверения. То же самое DefaultAzureCredential в вашем коде может обнаружить управляемое удостоверение и использовать его для аутентификации. Дополнительный код не требуется.
3. Развертывание в Службе приложений Azure и настройка подключения OpenAI
Теперь, когда приложение работает локально, давайте развернем его в Службе приложений Azure и настроим подключение службы к Azure OpenAI с помощью управляемого удостоверения.
Сначала разверните приложение в Службе приложений Azure с помощью команды
az webapp upAzure CLI. Эта команда создает веб-приложение и развертывает код в нем:az webapp up \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --name $APPSERVICE_NAME \ --plan $APPSERVICE_NAME \ --sku B1 \ --os-type Linux \ --track-status falseВремя выполнения этой команды может занять несколько минут. Он создает веб-приложение в той же группе ресурсов, что и ресурс OpenAI.
После развертывания приложения создайте подключение службы между веб-приложением и ресурсом Azure OpenAI с помощью управляемого удостоверения:
az webapp connection create cognitiveservices \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --target-resource-group $RESOURCE_GROUP \ --account $OPENAI_SERVICE_NAME --connection azure-openai \ --system-identityЭта команда создает подключение между веб-приложением и ресурсом Azure OpenAI, выполнив следующие действия.
- Создание системного управляемого удостоверения для веб-приложения.
- Добавление роли участника Cognitive Services OpenAI для управляемого удостоверения ресурса Azure OpenAI.
- Добавление настройки приложения
AZURE_OPENAI_ENDPOINTв ваше веб-приложение.
Ваше приложение теперь развернуто и подключено к Azure OpenAI с использованием управляемой идентификации. Он считывает
AZURE_OPENAI_ENDPOINTпараметр приложения с помощью внедрения зависимости IConfiguration.Откройте развернутое веб-приложение в браузере. Найдите URL-адрес развернутого веб-приложения в выходных данных терминала. Откройте веб-браузер и перейдите на нужный сайт.
az webapp browseВведите сообщение в текстовое поле и нажмите кнопку "Отправить" и предоставьте приложению несколько секунд ответить с сообщением из Azure OpenAI.
Часто задаваемые вопросы
- Что делать, если я хочу подключиться к OpenAI вместо Azure OpenAI?
- Можно ли подключиться к Azure OpenAI с помощью ключа API?
- Как функционирует DefaultAzureCredential в этом учебном пособии?
Что делать, если я хочу подключиться к OpenAI вместо Azure OpenAI?
Чтобы подключиться к OpenAI, используйте следующий код:
@using OpenAI.Client
var client = new OpenAIClient("<openai-api-key>");
Дополнительные сведения см. в разделе "Проверка подлинности API OpenAI".
При работе с секретами подключения в службе приложений следует использовать ссылки Key Vault вместо хранения секретов непосредственно в базе кода. Это гарантирует, что конфиденциальная информация остается безопасной и управляется централизованно.
Можно ли подключиться к Azure OpenAI с помощью ключа API?
Да, вы можете подключиться к Azure OpenAI с помощью ключа API вместо управляемого удостоверения. Этот подход поддерживается SDK для Azure OpenAI и Semantic Kernel.
- Дополнительные сведения об использовании ключей API с семантического ядра в C#см. в кратком руководстве по семантике ядра C#.
- Для получения деталей об использовании ключей API с клиентской библиотекой Azure OpenAI см. Краткое руководство: Начало работы с завершением чата с помощью Службы Azure OpenAI.
При работе с секретами подключения в службе приложений следует использовать ссылки Key Vault вместо хранения секретов непосредственно в базе кода. Это гарантирует, что конфиденциальная информация остается безопасной и управляется централизованно.
Как работает DefaultAzureCredential в этой инструкции?
DefaultAzureCredential упрощает аутентификацию, автоматически выбирая лучший доступный метод аутентификации:
-
Во время локальной разработки: после запуска
az loginиспользуются ваши локальные учетные данные Azure CLI. - При развертывании в Службе приложений Azure используется управляемое удостоверение приложения для безопасной проверки подлинности без пароля.
Такой подход позволяет безопасно и эффективно выполнять код как в локальных, так и в облачных средах без изменений.
Дополнительные ресурсы
- Руководство: Создание генерации с дополненным извлечением с помощью Azure OpenAI и Azure AI Search (.NET)
- Руководство: Запуск чат-бота в службе приложений с расширением Phi-4 для совместной работы (ASP.NET Core)
- Создание и развертывание ресурса Службы OpenAI Azure
- Узнайте больше об управляемом удостоверении в службе приложений