Упражнение. Подключение в Azure OpenAI
Класс OpenAiService
содержит заглушку службы, которая может отправлять запросы на помощник ИИ и анализировать ответы.
В этом упражнении существует несколько ключевых требований.
- Импорт пакета SDK для .NET для Azure OpenAI
- Добавление конечной точки и ключа Azure OpenAI в параметры приложения
- Изменение класса службы с различными элементами и экземпляром клиента
Импорт пакета SDK для .NET
Пакет Azure.AI.OpenAI
NuGet предоставляет типизированный пакет SDK для доступа к различным развертываниям моделей из конечной точки учетной записи.
Откройте новый терминал.
Используется
dotnet add package
для импортаAzure.AI.OpenAI
пакета из NuGet, указывающего предварительную версию1.0.0-beta.14
.dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
Создайте проект .NET еще раз.
dotnet build
Закройте терминал.
Добавление параметров приложения
В приложении .NET обычно используются поставщики конфигураций для внедрения новых параметров в приложение. Для этого приложения используйте appsettings.Development.json
файл, чтобы указать самые текущие значения для конечной точки и ключа Azure OpenAI.
В корне проекта создайте файл с именем appsettings. Development.json.
Внимание
В Linux файлы чувствительны к регистру. Среда .NET для этого проекта называется "Разработка" , а имя файла должно соответствовать этому имени среды для работы.
В файле создайте объект JSON с свойством заполнителя для
OpenAi
параметров.{ "OpenAi": { } }
В свойстве
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" } }
Примечание.
Ключ в этом примере вымышлен.
Сохраните приложения. Development.json файл.
Добавление обязательных элементов и экземпляра клиента
Наконец, реализуйте переменные класса, необходимые для использования клиента Azure OpenAI. На этом шаге реализуйте несколько статических запросов и создайте новый экземпляр OpenAIClient
класса.
Откройте файл Services/OpenAiService.cs.
Добавьте директивы using для
Azure
пространств имен иAzure.AI.OpenAI
пространств имен.using Azure; using Azure.AI.OpenAI;
OpenAiService
В классе добавьте новую переменную с именем_client
типаOpenAIClient
.private readonly OpenAIClient _client;
Определите статический блок текста для отправки в помощник ИИ перед каждым запросом с помощью новой строковой переменной с именем
_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;
Определите второй статический блок текста для отправки в ИИ с инструкциями по обобщению беседы с новой строковой переменной с именем
_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;
В конструкторе класса добавьте две дополнительные строки кода, чтобы проверка, если конечная точка или ключ имеет значение NULL. Используется
ArgumentNullException.ThrowIfNullOrEmpty
для раннего возникновения ошибки, если одно из этих значений равно NULL.ArgumentNullException.ThrowIfNullOrEmpty(endpoint); ArgumentNullException.ThrowIfNullOrEmpty(key);
Совет
При запуске приложения это приведет к ошибке сразу, если любой из этих параметров не имеет допустимого значения, предоставленного с помощью приложений. Development.json файл.
Затем возьмите имя модели, которое является параметром конструктора и сохраните его в переменной
_modelName
._modelName = modelName;
Наконец, создайте новый экземпляр класса с помощью конечной
OpenAIClient
точки для созданияUri
и ключа для сборкиAzureKeyCredential
.Uri uri = new(endpoint); AzureKeyCredential credential = new(key); _client = new( endpoint: uri, keyCredential: credential );
Сохраните файл Services/OpenAiService.cs .
Проверьте свою работу
На этом этапе конструктор должен содержать достаточно логики для создания экземпляра клиента. Так как класс еще ничего не делает с клиентом, нет смысла запускать веб-приложение, но есть значение для создания приложения, чтобы убедиться, что код не имеет никаких упущений или ошибок.
Откройте новый терминал.
Создайте проект .NET.
dotnet build
Просмотрите выходные данные сборки и проверка, чтобы убедиться, что ошибки сборки отсутствуют.
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
Закройте терминал.