Compartilhar via


Invocar funções do .NET usando um modelo de IA

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

Pré-requisitos

Criar o aplicativo

Para criar um aplicativo de console do .NET para se conectar a um modelo de IA, execute as etapas a seguir.

  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 --prerelease
    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 --prerelease
    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 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

  1. Navegue até a raiz do projeto .NET 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 ao modelo de IA e autenticar. O ChatClient també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();
    
  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 chatHistory sistema 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}");
    
  4. Use o comando dotnet run 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 os recursos

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

  1. No Portal do Azure, navegue até o recurso OpenAI do Azure.
  2. Selecione o recurso do Azure OpenAI e selecione Excluir.

Próximas etapas