Поделиться через


Вызов функций .NET с помощью модели ИИ

В этом кратком руководстве описано, как создать консольное приложение чата искусственного интеллекта .NET, которое подключается к модели ИИ с включенным локальным вызовом функций. Приложение использует библиотеку Microsoft.Extensions.AI, чтобы можно было писать код с помощью абстракций ИИ, а не конкретного пакета SDK. Абстракции искусственного интеллекта позволяют изменять базовую модель ИИ с минимальными изменениями кода.

Необходимые условия

Необходимые условия

Создание приложения

Выполните следующие действия, чтобы создать консольное приложение .NET для подключения к модели ИИ.

  1. В пустом каталоге на компьютере используйте команду dotnet new для создания нового консольного приложения:

    dotnet new console -o FunctionCallingAI
    
  2. Измените каталог в папку приложения:

    cd FunctionCallingAI
    
  3. Установите необходимые пакеты:

    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. Откройте приложение в Visual Studio Code или выбранный редактор

    code .
    

Создание службы ИИ

  1. Чтобы подготовить службу и модель Azure OpenAI, выполните действия, описанные в статье "Создание и развертывание ресурса Службы OpenAI Azure ".

  2. В терминале или командной строке перейдите в корневой каталог проекта.

  3. Выполните следующие команды, чтобы настроить конечную точку и имя модели Azure OpenAI для примера приложения:

    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>
    

Настройка приложения

  1. Перейдите в корневой каталог проекта .NET из терминала или командной строки.

  2. Выполните следующие команды, чтобы настроить ключ API OpenAI в качестве секрета для примера приложения:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-OpenAI-key>
    dotnet user-secrets set ModelName <your-OpenAI-model-name>
    

Добавление кода приложения

Приложение использует пакет Microsoft.Extensions.AI для отправки и получения запросов в модель ИИ.

  1. В файле Program.cs добавьте следующий код для подключения и аутентификации к модели ИИ. Элемент ChatClient также настроен для использования вызова функции, что позволяет ИИ-модели вызывать функции .NET в вашем коде.

    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. Создайте новый объект ChatOptions, содержащий встроенную функцию, которую модель искусственного интеллекта может вызывать для получения информации о текущей погоде. Объявление функции включает делегат для выполнения логики, а также параметры имени и описания, описывающие назначение функции модели ИИ.

    // 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. Добавьте системный запрос в chatHistory, чтобы предоставить модели контекст и инструкции. Отправьте пользователю запрос с вопросом, который требует от модели ИИ вызвать зарегистрированную функцию, чтобы правильно ответить на этот вопрос.

    // 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. Используйте команду dotnet run для запуска приложения:

    dotnet run
    

    Приложение выводит ответ завершения из модели ИИ, которая включает данные, предоставляемые функцией .NET. Модель искусственного интеллекта поняла, что зарегистрированная функция доступна и автоматически вызывает ее для создания правильного ответа.

Очистка ресурсов

Если они больше не нужны, удалите ресурс Azure OpenAI и развертывание модели GPT-4.

  1. На портале Azureперейдите к ресурсу Azure OpenAI.
  2. Выберите ресурс Azure OpenAI и выберите Удалить.

Дальнейшие действия