Exercício - Conectar-se ao Azure OpenAI
A OpenAiService
classe contém uma implementação de stub de um serviço que pode enviar prompts para um assistente de IA e analisar as respostas.
Há alguns requisitos fundamentais a abordar neste exercício:
- Importar o SDK do .NET para o Azure OpenAI
- Adicionar o ponto de extremidade e a chave do Azure OpenAI às configurações do aplicativo
- Modificar a classe de serviço com vários membros e uma instância de cliente
Importar o SDK do .NET
O Azure.AI.OpenAI
pacote no NuGet fornece um SDK digitado para acessar várias implantações de modelo a partir do ponto de extremidade da sua conta.
Abra um novo terminal.
Use
dotnet add package
para importar o pacote do NuGet,Azure.AI.OpenAI
especificando uma versão de pré-lançamento do1.0.0-beta.14
.dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
Crie o projeto .NET novamente.
dotnet build
Feche o terminal.
Adicionar definições da aplicação
Em um aplicativo .NET, é comum usar os provedores de configuração para injetar novas configurações em seu aplicativo. Para este aplicativo, use o appsettings.Development.json
arquivo para fornecer os valores mais atuais para o ponto de extremidade e a chave do Azure OpenAI.
Na raiz do projeto, crie um novo arquivo chamado appsettings. Development.json.
Importante
No Linux, os arquivos diferenciam maiúsculas de minúsculas. O ambiente .NET para este projeto é chamado Desenvolvimento e o nome do arquivo deve corresponder a esse nome de ambiente para funcionar.
Dentro do arquivo, crie um novo objeto JSON com uma propriedade de espaço reservado para
OpenAi
configurações.{ "OpenAi": { } }
Dentro da
OpenAi
propriedade, crie duas novas propriedades para oEndpoint
eKey
. Use o ponto de extremidade do Azure OpenAI e as configurações de chave que você registrou anteriormente neste projeto.{ "OpenAi": { "Endpoint": "<your-azure-openai-endpoint>", "Key": "<your-azure-openai-key>" } }
Supondo que o nome da conta do Azure OpenAI seja nybncrsna76fo-openai e a chave seja
4bf98cb194cdf0f9001eae3259a76ed8
, você configuraria o objeto JSON como este exemplo.{ "OpenAi": { "Endpoint": "https://nybncrsna76fo-openai.openai.azure.com/", "Key": "4bf98cb194cdf0f9001eae3259a76ed8" } }
Nota
A chave neste exemplo é fictícia.
Salve as configurações do aplicativo. Development.json arquivo.
Adicionar membros necessários e uma instância de cliente
Finalmente, implemente as variáveis de classe necessárias para usar o cliente OpenAI do Azure. Nesta etapa, implemente alguns prompts estáticos e crie uma nova instância da OpenAIClient
classe.
Abra o arquivo Serviços/OpenAiService.cs .
Adicione usando diretivas para os
Azure
namespaces eAzure.AI.OpenAI
.using Azure; using Azure.AI.OpenAI;
Dentro da
OpenAiService
classe, adicione uma nova variável chamada_client
do tipoOpenAIClient
.private readonly OpenAIClient _client;
Defina um bloco estático de texto para enviar ao assistente de IA antes de cada prompt com uma nova variável de cadeia de caracteres chamada
_systemPromptText
.private readonly string _systemPrompt = @" You are an AI assistant that helps people find information. Provide concise answers that are polite and professional." + Environment.NewLine;
Defina um segundo bloco estático de texto para enviar à IA com instruções sobre como resumir uma conversa com uma nova variável de cadeia de caracteres chamada
_summarizePrompt
.private readonly string _summarizePrompt = @" Summarize this prompt in one or two words to use as a label in a button on a web page. Do not use any punctuation." + Environment.NewLine;
Dentro do construtor da classe, adicione duas linhas extras de código para verificar se o ponto de extremidade ou chave é nulo. Use
ArgumentNullException.ThrowIfNullOrEmpty
para lançar um erro antecipadamente se qualquer um desses valores for nulo.ArgumentNullException.ThrowIfNullOrEmpty(endpoint); ArgumentNullException.ThrowIfNullOrEmpty(key);
Gorjeta
Quando você executa o aplicativo, isso gerará um erro imediatamente se qualquer uma dessas configurações não tiver um valor válido fornecido por meio das configurações do aplicativo. Development.json arquivo.
Em seguida, pegue o nome do modelo que é um parâmetro do construtor e salve-o na
_modelName
variável._modelName = modelName;
Finalmente, crie uma nova instância da classe usando o ponto de
OpenAIClient
extremidade para criar umUri
e a chave para criar umAzureKeyCredential
arquivo .Uri uri = new(endpoint); AzureKeyCredential credential = new(key); _client = new( endpoint: uri, keyCredential: credential );
Salve o arquivo Serviços/OpenAiService.cs .
Verifique o seu trabalho
Neste ponto, seu construtor deve incluir lógica suficiente para criar uma instância de cliente. Como a classe ainda não faz nada com o cliente, não faz sentido executar o aplicativo Web, mas há valor em criar o aplicativo para garantir que seu código não tenha omissões ou erros.
Abra um novo terminal.
Crie o projeto .NET.
dotnet build
Observe a saída da compilação e verifique se não há erros de compilação.
MSBuild version 17.5.1+f6fdcf537 for .NET Determining projects to restore... All projects are up-to-date for restore. cosmoschatgpt -> /workspaces/cosmosdb-chatgpt/bin/Debug/net8.0/cosmoschatgpt.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.93
Feche o terminal.