Partilhar via


Invoque funções .NET usando um modelo de IA

Neste quickstart, cria uma aplicação de chat de IA na consola .NET que se liga a um modelo de IA com a chamada local de funções ativada. O aplicativo usa a biblioteca 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

Pré-requisitos

Criar a aplicação

Conclua as etapas a seguir para criar um aplicativo de console .NET para se conectar a um modelo de IA.

  1. Em um diretório vazio no computador, use o comando dotnet new para criar um novo aplicativo de console:

    dotnet new console -o FunctionCallingAI
    
  2. Altere o diretório para a pasta do aplicativo:

    cd FunctionCallingAI
    
  3. Instale 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
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Abra o aplicativo no Visual Studio Code ou no editor de sua escolha

    code .
    

Criar o serviço de IA

  1. 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 .

  2. Em um terminal ou prompt de comando, navegue até a raiz do diretório do projeto.

  3. Execute os seguintes comandos para configurar o endpoint do Azure OpenAI e o nome do modelo para a aplicação 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

  1. Navegue até a raiz do seu projeto .NET a partir de um terminal ou prompt de comando.

  2. 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.

  1. No arquivo Program.cs, adicione o código a seguir para se conectar e autenticar no modelo AI. O ChatClient também é configurado para usar a invocação de função, 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-5").AsIChatClient())
        .UseFunctionInvocation()
        .Build();
    
  2. Crie um novo ChatOptions objeto 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")]
    };
    
  3. Adicione um prompt do sistema ao chatHistory 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}");
    
  4. Use o dotnet run comando para executar o aplicativo:

    dotnet run
    

    O 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 recursos

Se você não precisar mais deles, exclua o recurso OpenAI do Azure e a implantação do modelo GPT-4.

  1. No portal Azure, navegue até ao recurso Azure OpenAI.
  2. Selecione o recurso Azure OpenAI e, em seguida, selecione Excluir.

Próximos passos