Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você criará um aplicativo de chat de IA do console do .NET que se conecta a um modelo de IA com a chamada de função local habilitada. O aplicativo usa a biblioteca de Microsoft.Extensions.AI para que você possa escrever código usando abstrações de IA em vez de um SDK específico. As abstrações de IA permitem que você altere o modelo de IA subjacente com alterações mínimas de código.
Pré-requisitos
- SDK do .NET 8.0 ou superior – Instalar o SDK do .NET 8.0.
- Uma chave de API do OpenAI para que você possa executar este exemplo.
Pré-requisitos
- SDK do .NET 8.0 ou superior – Instalar o SDK do .NET 8.
- Uma assinatura do Azure – Crie uma gratuitamente.
- CLI do Desenvolvedor do Azure (opcional) – Instalar ou atualizar a CLI do Desenvolvedor do Azure.
Criar o aplicativo
Para criar um aplicativo de console do .NET para se conectar a um modelo de IA, execute as etapas a seguir.
Em um diretório vazio no computador, use o comando
dotnet newpara criar um novo aplicativo de console:dotnet new console -o FunctionCallingAIAltere o diretório para a pasta do aplicativo:
cd FunctionCallingAIInstale os pacotes necessários:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsdotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsAbra o aplicativo no Visual Studio Code ou no editor de sua escolha
code .
Criar o serviço de IA
Para provisionar um serviço e um modelo do Azure OpenAI, conclua as etapas no artigo Criar e implantar um recurso do Serviço OpenAI do Azure .
Em um terminal ou prompt de comando, navegue até a raiz do diretório do projeto.
Execute os seguintes comandos para configurar o endpoint do Azure OpenAI e o nome do modelo para o aplicativo de exemplo:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name> dotnet user-secrets set AZURE_OPENAI_API_KEY <your-Azure-OpenAI-key>
Configurar o aplicativo
Navegue até a raiz do projeto .NET de um terminal ou prompt de comando.
Execute os seguintes comandos para configurar sua chave de API OpenAI como um segredo para o aplicativo de exemplo:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
Adicionar o código do aplicativo
O aplicativo usa o Microsoft.Extensions.AI pacote para enviar e receber solicitações para o modelo de IA.
No arquivo Program.cs, adicione o código a seguir, para se conectar ao modelo de IA e autenticar. O
ChatClienttambém está configurado para usar a invocação de função, que permite que o modelo de IA chame funções .NET em seu código.IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; string apiKey = config["AZURE_OPENAI_API_KEY"]; IChatClient client = new ChatClientBuilder( new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(apiKey)) .GetChatClient(deployment).AsIChatClient()) .UseFunctionInvocation() .Build();using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string? model = config["ModelName"]; string? key = config["OpenAIKey"]; IChatClient client = new ChatClientBuilder(new OpenAIClient(key).GetChatClient(model ?? "gpt-4o").AsIChatClient()) .UseFunctionInvocation() .Build();Crie um novo
ChatOptionsobjeto que contenha uma função embutida que o modelo de IA pode chamar para obter o clima atual. A declaração de função inclui um delegado para executar a lógica e parâmetros de nome e descrição para descrever a finalidade da função para o modelo de IA.// Add a new plugin with a local .NET function // that should be available to the AI model. var chatOptions = new ChatOptions { Tools = [AIFunctionFactory.Create((string ___location, string unit) => { // Here you would call a weather API // to get the weather for the ___location. return "Periods of rain or drizzle, 15 C"; }, "get_current_weather", "Gets the current weather in a given ___location")] };Adicione um prompt do
chatHistorysistema ao para fornecer contexto e instruções ao modelo. Envie um prompt do usuário com uma pergunta que exija que o modelo de IA chame a função registrada para responder corretamente à pergunta.// System prompt to provide context. List<ChatMessage> chatHistory = [new(ChatRole.System, """ You are a hiking enthusiast who helps people discover fun hikes in their area. You are upbeat and friendly. """)]; // Weather conversation relevant to the registered function. chatHistory.Add(new ChatMessage(ChatRole.User, "I live in Montreal and I'm looking for a moderate intensity hike. What's the current weather like?")); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}"); ChatResponse response = await client.GetResponseAsync(chatHistory, chatOptions); Console.WriteLine($"Assistant >>> {response.Text}");Use o comando
dotnet runpara executar o aplicativo:dotnet runO aplicativo imprime a resposta de conclusão do modelo de IA, que inclui dados fornecidos pela função .NET. O modelo de IA entendeu que a função registrada estava disponível e a chamou automaticamente para gerar uma resposta adequada.
Limpar os recursos
Se você não precisar mais deles, exclua o recurso do Azure OpenAI e a implantação do modelo GPT-4.
- No Portal do Azure, navegue até o recurso OpenAI do Azure.
- Selecione o recurso do Azure OpenAI e selecione Excluir.