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


Создание приложения чата ИИ с помощью .NET

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

Примечание.

Библиотека Microsoft.Extensions.AI в настоящее время находится в предварительной версии.

Предпосылки

Предпосылки

Примечание.

Вы также можете использовать Семантическое ядро для выполнения задач, описанных в этой статье. Семантический ядро — это упрощенный пакет SDK с открытым исходным кодом, который позволяет создавать агенты ИИ и интегрировать последние модели ИИ в приложения .NET.

Клонирование примера репозитория

Вы можете создать собственное приложение, следуя шагам, описанным в следующих разделах, или клонировать репозиторий GitHub, содержащий готовые примеры приложений для всех быстрых стартов. Если вы планируете использовать Azure OpenAI, пример репозитория также структурирован как шаблон интерфейса командной строки разработчика Azure, который может подготовить ресурс Azure OpenAI для вас.

git clone https://github.com/dotnet/ai-samples.git

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

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

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

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

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

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    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 .
    

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

Пример репозитория GitHub структурирован как шаблон интерфейса командной строки разработчика Azure (azd), который azd можно использовать для предоставления службы и модели Azure OpenAI для вас.

  1. В терминале или командной строке перейдите в каталог src\quickstarts\azure-openai примера репозитория.

  2. Выполните команду azd up, чтобы подготовить ресурсы Azure OpenAI. Для создания службы Azure OpenAI и развертывания модели может потребоваться несколько минут.

    azd up
    

    azd также настраивает необходимые секреты пользователей для примера приложения, например имя конечной точки и модели Azure OpenAI.

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

  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 добавьте следующий код для подключения и аутентификации к модели ИИ.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.AI;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    
    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_GPT_NAME"];
    
    IChatClient chatClient =
        new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
        .GetChatClient(deployment)
    

    Примечание.

    DefaultAzureCredential выполняет поиск аутентификационных данных из локального инструментария. Если вы не используете шаблон azd для подготовки ресурса Azure OpenAI, вам потребуется назначить роль Azure AI Developer учетной записи, которую вы использовали для входа в Visual Studio или Azure CLI. Дополнительные сведения см. в статье Аутентификация в службах ИИ Azure с помощью.NET.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.AI;
    using OpenAI;
    
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient chatClient =
        new OpenAIClient(key).GetChatClient(model).AsIChatClient();
    
  2. Создайте системный запрос для предоставления модели искусственного интеллекта с начальным контекстом роли и инструкциями по рекомендациям по походам:

    // Start the conversation with context for the AI model
    List<ChatMessage> chatHistory =
        [
            new ChatMessage(ChatRole.System, """
                You are a friendly hiking enthusiast who helps people discover fun hikes in their area.
                You introduce yourself when first saying hello.
                When helping people out, you always ask them for this information
                to inform the hiking recommendation you provide:
    
                1. The location where they would like to hike
                2. What hiking intensity they are looking for
    
                You will then provide three suggestions for nearby hikes that vary in length
                after you get that information. You will also share an interesting fact about
                the local nature on the hikes when making a recommendation. At the end of your
                response, ask if there is anything else you can help with.
            """)
        ];
    
  3. Создайте цикл беседы, который принимает входной запрос от пользователя, отправляет запрос в модель и выводит завершение ответа:

    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        string? userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        string response = "";
        await foreach (ChatResponseUpdate item in
            chatClient.GetStreamingResponseAsync(chatHistory))
        {
            Console.Write(item.Text);
            response += item.Text;
        }
        chatHistory.Add(new ChatMessage(ChatRole.Assistant, response));
        Console.WriteLine();
    }
    
  4. Используйте команду dotnet run для запуска приложения:

    dotnet run
    

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

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

Если вам больше не нужен пример приложения или ресурсов, удалите соответствующее развертывание и все ресурсы.

azd down

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