Preparação
Você está atualizando uma solução .NET existente que tem um aplicativo Blazor como seu único projeto. Este projeto inclui classes de serviço para armazenamento de dados e conversação que são implementadas com espaços reservados. Aqui, discutimos os objetivos gerais do projeto e como você vai implementar o armazenamento de dados e a funcionalidade de conversação. Além disso, abordamos como configurar os recursos do Azure de que você precisa.
Visão geral do projeto
O objetivo deste projeto é implementar duas classes de serviço para armazenamento e conclusão de dados. Para a classe de serviço de armazenamento de dados, use o Azure Cosmos DB para NoSQL .NET SDK para criar, atualizar, consultar e excluir vários itens em um contêiner existente. Para a conclusão do chat, use o Azure OpenAI .NET SDK para enviar solicitações e analisar respostas.
As principais tarefas que você precisa fazer são:
- Implante o Azure Cosmos DB para recursos NoSQL e Azure OpenAI no Azure.
- Obtenha as credenciais para os recursos implantados do Azure Cosmos DB para NoSQL e Azure OpenAI.
- Abra a solução inicial no Visual Studio Code.
- Use o SDK do .NET para implementar o Azure Cosmos DB para NoSQL como um serviço de armazenamento de dados.
- Use o SDK do .NET para implementar o Azure OpenAI como uma interface de conversação.
- Verifique o funcionamento da aplicação.
Configurar
Para concluir este projeto, você precisa de uma conta do Azure Cosmos DB para NoSQL e uma conta do Azure OpenAI. Para simplificar esse processo, implante um modelo Bicep no Azure com essas duas contas.
Configurar ambiente de desenvolvimento
Um ambiente de contêiner de desenvolvimento está disponível com todas as dependências necessárias para concluir cada exercício neste projeto. O GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com o Visual Studio Code for the Web como interface do usuário. Para o ambiente de desenvolvimento mais simples, use o GitHub Codespaces para que você tenha as ferramentas e dependências de desenvolvedor corretas pré-instaladas para concluir este módulo de treinamento.
Importante
Todas as contas do GitHub podem usar o Codespaces por até 60 horas gratuitas por mês com 2 instâncias principais. Para obter mais informações, consulte GitHub Codespaces mensalmente incluído armazenamento e horas principais.
Inicie o processo para criar um novo GitHub Codespace selecionando a opção Ative Codespaces no início desta unidade.
Na página Criar espaço de código, revise as definições de configuração de espaço de código e selecione Criar novo espaço de código.
Aguarde até que o espaço de código inicie. Este processo de arranque pode demorar alguns minutos.
Abra um novo terminal no codespace.
Valide se a CLI do Azure está instalada em seu ambiente.
az --version
Valide se o .NET 8 está instalado em seu ambiente.
dotnet --list-sdks
Mude para o
src
diretório, onde o arquivo de projeto está localizado.cd src
Crie o projeto .NET.
dotnet build
Feche o terminal.
Os restantes exercícios deste projeto decorrem no contexto deste contentor de desenvolvimento.
Importante
Deixe o GitHub Codespace em execução para o restante deste módulo de treinamento.
Implantar infraestrutura a partir do modelo
Este projeto usa o repositório GitHub azure-samples/cosmosdb-chatgpt para a implantação modelada do Azure Resource Manager e o código do aplicativo. Nesta etapa, crie uma nova implantação usando o modelo Bicep para implantar seus recursos usando "infraestrutura como código".
Gorjeta
Este modelo Bicep "zero-touch" também inclui o aplicativo final em execução no Serviço de Aplicativo do Azure. Você sempre pode verificar isso se quiser ver uma solução totalmente funcional.
Entre na CLI do Azure.
az login --use-device-code
Crie uma nova variável de shell chamada resourceGroupName com o nome do grupo de recursos do Azure que você cria (
mslearn-cosmos-openai
).resourceGroupName="mslearn-cosmos-openai"
Criar um grupo de recursos com
az group create
.az group create \ --name $resourceGroupName \ --location "eastus"
Implante o arquivo de modelo azuredeploy.json no grupo de recursos usando
az deployment group create
o .az deployment group create \ --resource-group $resourceGroupName \ --name zero-touch-deployment \ --template-uri https://raw.githubusercontent.com/Azure-Samples/cosmosdb-chatgpt/start/azuredeploy.json
Aguarde a conclusão da implantação antes de prosseguir com este projeto.
Nota
Em média, essa implantação pode levar de cinco a dez minutos.
Obter credenciais de conta do Azure Cosmos DB para NoSQL e Azure OpenAI
Seu modelo implantou o Azure Cosmos DB para contas NoSQL e Azure OpenAI e, em seguida, armazenou suas credenciais na configuração do aplicativo Web do Serviço de Aplicativo do Azure. Agora, você tem a opção de usar o portal do Azure ou a CLI do Azure para recuperar as credenciais de cada serviço. Use az webapp config
a partir da CLI do Azure para obter as credenciais do Azure OpenAI e do Azure Cosmos DB para usar em seu ambiente de desenvolvimento local. Nesta seção, você filtra a saída dos vários comandos para retornar seu ponto de extremidade e cadeia de conexão para usar com as bibliotecas .NET do Azure OpenAI e do Azure Cosmos DB para NoSQL.
Primeiro, obtenha uma lista de todos os aplicativos Web em execução em seu grupo de recursos usando
az webapp list
o .az webapp list \ --resource-group $resourceGroupName \ --query "[?state=='Running'].name"
Agora, execute a mesma consulta novamente, mas retorne apenas o primeiro resultado da matriz no formato de valor
tsv
() separado por tabulações.webAppName=$( \ az webapp list \ --resource-group $resourceGroupName \ --query "[?state=='Running'].name | [0]" \ --output tsv \ )
Gorjeta
Se você não tiver certeza de que sua variável tem o valor correto, basta executar
echo $webAppName
no terminal para verificar o valor.Use
az webapp config appsettings list
para obter uma lista de configurações do aplicativo Web.az webapp config appsettings list \ --name $webAppName \ --resource-group $resourceGroupName
Aqui está um exemplo truncado da saída assumindo que o nome da conta do Azure Cosmos DB para NoSQL é nybncrsna76fo-cosmos-nosql e o nome da conta do Azure OpenAI é nybncrsna76fo-openai. As chaves neste exemplo são fictícias.
[ { "setting": "COSMOSDB__ENDPOINT", "value": "https://nybncrsna76fo-cosmos-nosql.documents.azure.com:443/" }, { "setting": "COSMOSDB__KEY", "value": "Aj2OSQqWhXfFzkITIi4MIbocWAAoBCUWnSPzHlQbDYA3TiyZCJlk8A6R1l6WqD45BxAG5vrsyQ4SCXEkPS1pLh==" }, ... { "setting": "OPENAI__ENDPOINT", "value": "https://nybncrsna76fo-openai.openai.azure.com/" }, { "setting": "OPENAI__KEY", "value": "4bf98cb194cdf0f9001eae3259a76ed8" }, ... ]
Registre o valor do ponto de extremidade e da chave para as contas do Azure Cosmos DB para NoSQL e do Azure OpenAI. Você usa essas credenciais posteriormente neste projeto para se conectar a cada conta.