Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste tutorial, você criará um aplicativo de IA inteligente integrando o Azure OpenAI a um aplicativo Java Spring Boot e implantando-o no Serviço de Aplicativo do Azure. Você criará uma página do Razor que envia solicitações de conclusão de bate-papo para um modelo no Azure OpneAI e transmite a resposta de volta para a página.
Neste tutorial, aprenderás como:
- Criar um recurso do Azure OpenAI e implantar um modelo de linguagem
- Criar um aplicativo Blazor com o Azure OpenAI
- Implantar o aplicativo no Serviço de Aplicativo do Azure
- Implementar autenticação sem senha no ambiente de desenvolvimento e no Azure
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa
- Uma conta do GitHub para usar os Codespaces do GitHub
1. Criar um recurso do Azure OpenAI
Nesta seção, você usará o GitHub Codespaces para criar um recurso do Azure OpenAI com a CLI do Azure.
Vá para o GitHub Codespaces e faça login com sua conta do GitHub.
Encontre o modelo em branco do GitHub e selecione Usar este modelo para criar um novo espaço de código em branco.
No terminal do Codespace, instale o Azure CLI.
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Inicie sessão na sua conta do Azure:
az login
Siga as instruções no terminal para autenticar.
Defina variáveis de ambiente para o nome do grupo de recursos, o nome do serviço Azure OpenAI e a localização:
export RESOURCE_GROUP="<group-name>" export OPENAI_SERVICE_NAME="<azure-openai-name>" export APPSERVICE_NAME="<app-name>" export LOCATION="eastus2"
Importante
A região é crítica, pois está ligada à disponibilidade regional do modelo escolhido. A disponibilidade do modelo e a disponibilidade do tipo de implantação variam de região para região. Este tutorial usa
gpt-4o-mini
, que está disponível no tipo de implantação Padrão deeastus2
. Se você implantar em uma região diferente, esse modelo pode não estar disponível ou exigir uma camada diferente. Antes de alterar as regiões, consulte a tabela de resumo do modelo e a disponibilidade da região para verificar o suporte ao modelo na sua região preferida.Crie um grupo de recursos e um recurso do Azure OpenAI com um domínio personalizado e, em seguida, adicione um modelo 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 to 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
Agora que você tem um recurso do Azure OpenAI, criará um aplicativo Web para interagir com ele.
2. Crie e configure um aplicativo web Blazor
Nesta seção, você criará um novo aplicativo Web Blazor usando a CLI .NET.
No seu terminal Codespace, crie um novo aplicativo Blazor e tente executá-lo pela primeira vez.
dotnet new blazor -o . dotnet run
Você deve ver uma notificação no GitHub Codespaces indicando que o aplicativo está disponível em uma porta específica. Selecione Abrir no navegador para iniciar o aplicativo em uma nova guia do navegador.
De volta ao terminal Codespace, pare o aplicativo com Ctrl+C.
Instale os pacotes NuGet necessários para trabalhar com o Azure OpenAI:
dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity
Abra
Components/Pages/Home.razor
e substitua seu conteúdo pelo código a seguir, para uma chamada de fluxo de conclusão de chat simples com o 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(); } } } }
No terminal, recupere seu endpoint OpenAI:
az cognitiveservices account show \ --name $OPENAI_SERVICE_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.endpoint \ --output tsv
Execute a aplicação novamente adicionando
AZURE_OPENAI_ENDPOINT
e o seu valor da saída da linha de comando.AZURE_OPENAI_ENDPOINT=<output-from-previous-cli-command> dotnet run
Selecione Abrir no navegador para iniciar o aplicativo em uma nova guia do navegador.
Digite uma mensagem na caixa de texto e selecione "Enviar e dê ao aplicativo alguns segundos para responder com a mensagem do Azure OpenAI.
O aplicativo usa DefaultAzureCredential, que usa automaticamente seu usuário conectado à CLI do Azure para autenticação de token. Mais adiante neste tutorial, você implantará seu aplicativo Blazor no Serviço de Aplicativo do Azure e o configurará para se conectar com segurança ao seu recurso do Azure OpenAI usando a identidade gerenciada. O mesmo DefaultAzureCredential
em seu código pode detetar a identidade gerenciada e usá-la para autenticação. Nenhum código extra é necessário.
3. Implantar no Serviço de Aplicativo do Azure e configurar a conexão OpenAI
Agora que seu aplicativo funciona localmente, vamos implantá-lo no Serviço de Aplicativo do Azure e configurar uma conexão de serviço com o Azure OpenAI usando a identidade gerenciada.
Primeiro, implante seu aplicativo no Serviço de Aplicativo do Azure usando o comando
az webapp up
CLI do Azure . Este comando cria um novo aplicativo Web e implanta seu código nele:az webapp up \ --resource-group $RESOURCE_GROUP \ --___location $LOCATION \ --name $APPSERVICE_NAME \ --plan $APPSERVICE_NAME \ --sku B1 \ --os-type Linux \ --track-status false
Esse comando pode levar alguns minutos para ser concluído. Ele cria um novo aplicativo Web no mesmo grupo de recursos que seu recurso OpenAI.
Depois que o aplicativo for implantado, crie uma conexão de serviço entre seu aplicativo Web e o recurso OpenAI do Azure usando a identidade gerenciada:
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
Este comando cria uma conexão entre seu aplicativo Web e o recurso OpenAI do Azure ao:
- Geração de identidade gerenciada atribuída pelo sistema para o aplicativo Web.
- Adicionar a função de Colaborador OpenAI dos Serviços Cognitivos à identidade gerenciada para o recurso OpenAI do Azure.
- Adicionar a definição da
AZURE_OPENAI_ENDPOINT
aplicação à sua aplicação Web.
Seu aplicativo agora está implantado e conectado ao Azure OpenAI com identidade gerenciada. Eu leio a configuração da
AZURE_OPENAI_ENDPOINT
aplicação através da injeção IConfiguration.Abra o aplicativo Web implantado no navegador. Encontre a URL do aplicativo Web implantado na saída do terminal. Abra o navegador da Web e navegue até ele.
az webapp browse
Digite uma mensagem na caixa de texto e selecione "Enviar e dê ao aplicativo alguns segundos para responder com a mensagem do Azure OpenAI.
Perguntas frequentes
- E se eu quiser me conectar ao OpenAI em vez do Azure OpenAI?
- Posso me conectar ao Azure OpenAI com uma chave de API?
- Como funciona o DefaultAzureCredential neste tutorial?
E se eu quiser me conectar ao OpenAI em vez do Azure OpenAI?
Para se conectar ao OpenAI, use o seguinte código:
@using OpenAI.Client
var client = new OpenAIClient("<openai-api-key>");
Para obter mais informações, consulte Autenticação da API OpenAI.
Ao trabalhar com segredos de conexão no Serviço de Aplicativo, você deve usar referências do Cofre de Chaves em vez de armazenar segredos diretamente em sua base de código. Isso garante que as informações confidenciais permaneçam seguras e sejam gerenciadas centralmente.
Posso conectar-me ao Azure OpenAI com uma chave de API?
Sim, você pode se conectar ao Azure OpenAI usando uma chave de API em vez de identidade gerenciada. Essa abordagem é suportada pelos SDKs do Azure OpenAI e pelo Kernel Semântico.
- Para obter detalhes sobre como usar chaves de API com o Kernel Semântico em C#, consulte o Guia de início rápido do Kernel Semântico em C#.
- Para obter detalhes sobre como usar chaves de API com a biblioteca de cliente do Azure OpenAI: Guia de início rápido: comece a usar as finalizações de bate-papo com o Serviço OpenAI do Azure.
Ao trabalhar com segredos de conexão no Serviço de Aplicativo, você deve usar referências do Cofre de Chaves em vez de armazenar segredos diretamente em sua base de código. Isso garante que as informações confidenciais permaneçam seguras e sejam gerenciadas centralmente.
Como funciona o DefaultAzureCredential neste tutorial?
O DefaultAzureCredential
simplifica a autenticação selecionando automaticamente o melhor método de autenticação disponível:
-
Durante o desenvolvimento local: após executar
az login
, são usadas as suas credenciais locais da CLI do Azure. - Quando implantado no Serviço de Aplicativo do Azure: ele usa a identidade gerenciada do aplicativo para autenticação segura e sem senha.
Essa abordagem permite que seu código seja executado de forma segura e transparente em ambientes locais e na nuvem, sem modificações.
Mais recursos
- Tutorial: Criar uma geração aumentada de recuperação com o Azure OpenAI e o Azure AI Search (.NET)
- Tutorial: Executar chatbot no Serviço de Aplicações com uma extensão de sidecar Phi-4 (ASP.NET Core)
- Criar e implantar um recurso do Serviço OpenAI do Azure
- Saiba mais sobre a identidade gerenciada no Serviço de Aplicativo