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

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

Необходимые компоненты

  • Пакет SDK для .NET 8.0. Установите пакет SDK для .NET 8.0.
  • Ключ API из OpenAI, чтобы можно было запустить этот пример.
  • В Windows требуется PowerShell v7+ . Чтобы проверить версию, запустите pwsh в терминале. Он должен возвращать текущую версию. Если он возвращает ошибку, выполните следующую команду: dotnet tool update --global PowerShell

Приступая к работе с ИИ, создав простое консольное приложение чата .NET 8.0 для сводки текста. Приложение выполняется локально и подключается к модели OpenAI, развернутой в Azure OpenAI gpt-35-turbo . Выполните следующие действия, чтобы подготовить службу Azure OpenAI и узнать, как использовать семантическое ядро.

Необходимые компоненты

Скачивание примера проекта

Клонируйте репозиторий GitHub, содержащий примеры приложений для всех кратких руководств:

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

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

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

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

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

    azd up
    

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

    Примечание.

    Если во время azd up развертывания возникла ошибка, посетите раздел устранения неполадок .

Попробуйте пример преимуществ для походов

  1. В терминале или командной строке перейдите openai\01-HikeBenefitsSummary в каталог.

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

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    
  3. dotnet run Используйте команду для запуска приложения:

    dotnet run
    
  1. В терминале или командной строке перейдите azure-openai\01-HikeBenefitsSummary в каталог.

  2. dotnet run Используйте команду для запуска приложения:

    dotnet run
    

    Совет

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

Обзор кода

Приложение использует Microsoft.SemanticKernel пакет для отправки и получения запросов в службу OpenAI.

Файл Program.cs содержит весь код приложения. Первые несколько строк конфигурации набора кода и получение ключа OpenAI, который ранее был задан с помощью dotnet user-secrets команды.

var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string model = "gpt-3.5-turbo";
string key = config["OpenAIKey"];

Класс Kernel упрощает запросы и ответы и регистрирует OpenAIChatCompletion службу.

// Create a Kernel containing the OpenAI Chat Completion Service
Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatCompletion(model, key)
    .Build();

Приложение использует Microsoft.SemanticKernel пакет для отправки и получения запросов в службу Azure OpenAI.

Файл Program.cs содержит весь код приложения. Первые несколько строк секретов загрузки кода и значений конфигурации, которые были заданы во dotnet user-secrets время подготовки приложения.

// Retrieve the local secrets saved during the Azure deployment
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];
string key = config["AZURE_OPENAI_KEY"];

Класс Kernel упрощает запросы и ответы и регистрирует OpenAIChatCompletion службу.

// Create a Kernel containing the Azure OpenAI Chat Completion Service
Kernel kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deployment, endpoint, key)
    .Build();

Kernel После создания код приложения считывает benefits.md содержимое файла и использует его для создания prompt модели. Запрос указывает модели суммировать текстовое содержимое файла.

// Create and print out the prompt
string prompt = $"""
    Please summarize the the following text in 20 words or less:
    {File.ReadAllText("benefits.md")}
    """;
Console.WriteLine($"user >>> {prompt}");

Функция InvokePromptAsync отправляет prompt модель для создания ответа.

// Submit the prompt and print out the response
string response = await kernel.InvokePromptAsync<string>(
    prompt,
    new(new OpenAIPromptExecutionSettings() 
        { 
            MaxTokens = 400 
        })
    );
Console.WriteLine($"assistant >>> {response}");

Настройте текстовое содержимое файла или длину сводки, чтобы увидеть различия в ответах.

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

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

azd down

Устранение неполадок

В Windows после выполнения azd upмогут появиться следующие сообщения об ошибках:

postprovision.ps1 не имеет цифровой подписи. Сценарий не будет выполняться в системе

Скрипт postprovision.ps1 выполняется для задания секретов пользователей .NET, используемых в приложении. Чтобы избежать этой ошибки, выполните следующую команду PowerShell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Затем повторно запустите azd up команду.

Еще одна возможная ошибка:

Pwsh не распознается как внутренняя или внешняя команда, операблирование программы или пакетного файла. ПРЕДУПРЕЖДЕНИЕ: сбой перехватчика postprovision с кодом выхода: "1", путь: ".\infra\post-script\postprovision.ps1". : код выхода: 1 Выполнение будет продолжаться, так как Параметр ContinueOnError имеет значение true.

Скрипт postprovision.ps1 выполняется для задания секретов пользователей .NET, используемых в приложении. Чтобы избежать этой ошибки, вручную запустите скрипт с помощью следующей команды PowerShell:

.\infra\post-script\postprovision.ps1

Теперь приложения .NET AI настраивают секреты пользователей и их можно протестировать.

Следующие шаги