Бөлісу құралы:


Вызов функций .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
    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. Откройте приложение в 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-5").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 и выберите Удалить.

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