Упражнение. Подключение в Azure OpenAI

Завершено

Класс OpenAiService содержит заглушку службы, которая может отправлять запросы на помощник ИИ и анализировать ответы.

В этом упражнении существует несколько ключевых требований.

  • Импорт пакета SDK для .NET для Azure OpenAI
  • Добавление конечной точки и ключа Azure OpenAI в параметры приложения
  • Изменение класса службы с различными элементами и экземпляром клиента

Импорт пакета SDK для .NET

Пакет Azure.AI.OpenAI NuGet предоставляет типизированный пакет SDK для доступа к различным развертываниям моделей из конечной точки учетной записи.

  1. Откройте новый терминал.

  2. Используется dotnet add package для импорта Azure.AI.OpenAI пакета из NuGet, указывающего предварительную версию 1.0.0-beta.14.

    dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
    
  3. Создайте проект .NET еще раз.

    dotnet build
    
  4. Закройте терминал.

Добавление параметров приложения

В приложении .NET обычно используются поставщики конфигураций для внедрения новых параметров в приложение. Для этого приложения используйте appsettings.Development.json файл, чтобы указать самые текущие значения для конечной точки и ключа Azure OpenAI.

  1. В корне проекта создайте файл с именем appsettings. Development.json.

    Внимание

    В Linux файлы чувствительны к регистру. Среда .NET для этого проекта называется "Разработка" , а имя файла должно соответствовать этому имени среды для работы.

  2. В файле создайте объект JSON с свойством заполнителя для OpenAi параметров.

    {
      "OpenAi": {            
      }
    }
    
  3. В свойстве OpenAi создайте два новых свойства для Endpoint и Key. Используйте конечную точку Azure OpenAI и ключевые параметры, записанные ранее в этом проекте.

    {
      "OpenAi": {
        "Endpoint": "<your-azure-openai-endpoint>",
        "Key": "<your-azure-openai-key>"
      }
    }
    

    Если имя учетной записи Azure OpenAI — nybncrsna76fo-openai , а ключ — 4bf98cb194cdf0f9001eae3259a76ed8это, вы настроите объект JSON, как в этом примере.

    {
      "OpenAi": {
        "Endpoint": "https://nybncrsna76fo-openai.openai.azure.com/",
        "Key": "4bf98cb194cdf0f9001eae3259a76ed8"
      }
    }
    

    Примечание.

    Ключ в этом примере вымышлен.

  4. Сохраните приложения. Development.json файл.

Добавление обязательных элементов и экземпляра клиента

Наконец, реализуйте переменные класса, необходимые для использования клиента Azure OpenAI. На этом шаге реализуйте несколько статических запросов и создайте новый экземпляр OpenAIClient класса.

  1. Откройте файл Services/OpenAiService.cs.

  2. Добавьте директивы using для Azure пространств имен и Azure.AI.OpenAI пространств имен.

    using Azure;
    using Azure.AI.OpenAI;
    
  3. OpenAiService В классе добавьте новую переменную с именем _client типаOpenAIClient.

    private readonly OpenAIClient _client;
    
  4. Определите статический блок текста для отправки в помощник ИИ перед каждым запросом с помощью новой строковой переменной с именем_systemPromptText.

    private readonly string _systemPrompt = @"
        You are an AI assistant that helps people find information.
        Provide concise answers that are polite and professional." + Environment.NewLine;
    
  5. Определите второй статический блок текста для отправки в ИИ с инструкциями по обобщению беседы с новой строковой переменной с именем _summarizePrompt.

    private readonly string _summarizePrompt = @"
        Summarize this prompt in one or two words to use as a label in a button on a web page.
        Do not use any punctuation." + Environment.NewLine;
    
  6. В конструкторе класса добавьте две дополнительные строки кода, чтобы проверка, если конечная точка или ключ имеет значение NULL. Используется ArgumentNullException.ThrowIfNullOrEmpty для раннего возникновения ошибки, если одно из этих значений равно NULL.

    ArgumentNullException.ThrowIfNullOrEmpty(endpoint);
    ArgumentNullException.ThrowIfNullOrEmpty(key);
    

    Совет

    При запуске приложения это приведет к ошибке сразу, если любой из этих параметров не имеет допустимого значения, предоставленного с помощью приложений. Development.json файл.

  7. Затем возьмите имя модели, которое является параметром конструктора и сохраните его в переменной _modelName .

    _modelName = modelName;
    
  8. Наконец, создайте новый экземпляр класса с помощью конечной OpenAIClient точки для создания Uri и ключа для сборки AzureKeyCredential.

    Uri uri = new(endpoint);
    AzureKeyCredential credential = new(key);
    _client = new(
        endpoint: uri,
        keyCredential: credential
    );
    
  9. Сохраните файл Services/OpenAiService.cs .

Проверьте свою работу

На этом этапе конструктор должен содержать достаточно логики для создания экземпляра клиента. Так как класс еще ничего не делает с клиентом, нет смысла запускать веб-приложение, но есть значение для создания приложения, чтобы убедиться, что код не имеет никаких упущений или ошибок.

  1. Откройте новый терминал.

  2. Создайте проект .NET.

    dotnet build
    
  3. Просмотрите выходные данные сборки и проверка, чтобы убедиться, что ошибки сборки отсутствуют.

    MSBuild version 17.5.1+f6fdcf537 for .NET
      Determining projects to restore...
      All projects are up-to-date for restore.
      cosmoschatgpt -> /workspaces/cosmosdb-chatgpt/bin/Debug/net8.0/cosmoschatgpt.dll
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:02.93
    
  4. Закройте терминал.