Руководство по Сетке 201. Получение ответов на вопросы с помощью Azure OpenAI
В этой главе мы перейдем к пятой и последней станции, где вы узнаете, как реализовать виртуальный помощник на основе Azure OpenAI или чат-бот. Обратите внимание, что вы можете использовать любую службу ИИ, которую вы хотите использовать здесь (например, Copilot Studio). В соответствии с темой поиска места для ветряной фермы помощник ИИ будет настроен для ответа на вопросы, связанные с ветряной фермой.
Важные примечания.
OpenAI доступен только для утвержденных корпоративных клиентов и партнеров. Если вы еще не находитесь в этой группе, необходимо отправить форму регистрации. Дополнительные сведения о процессе регистрации.
Если у вас возникли проблемы с подписками и OpenAI, вы можете найти ответ, разместив на форуме разработчика сетки.
Настройка для этой станции
Чтобы завершить эту станцию, необходимо посетить портал Azure, а затем получить универсальный код ресурса (также называемый Endpoint) и ключ для клиента. Позже вы вставляете ключ в некоторый код, который позволит вызывать Azure OpenAI. Давайте сделаем этот шаг сейчас, чтобы вам не нужно прерывать рабочий процесс позже.
Создание и развертывание ресурса Azure OpenAI
В браузере перейдите на портал Azure и войдите в систему.
В поле поиска в верхней части окна введите "Azure openai", а затем нажмите клавишу ВВОД. Это делает вас в службах ИИ Azure | Страница Azure OpenAI .
Нажмите кнопку Создать.
ВАЖНО. Для многих параметров, описанных ниже, мы не делаем определенную рекомендацию. Вы должны выбрать варианты, которые лучше всего подходят для вас и вашей организации.
На странице "Основы" создайте имена, где запрашивались, и выберите нужные параметры для подписки, региона и ценовой категории.
На странице "Сеть" выберите нужный вариант.
На странице "Теги" можно добавить теги или пропустить эти параметры.
На странице "Проверка и отправка" просмотрите сведения и нажмите кнопку "Создать".
Ресурс развертывается, и вы увидите сообщение о том, что развертывание выполняется. В конечном итоге вы увидите , что развертывание завершено .
Развертывание модели в Azure OpenAI Studio
Нажмите кнопку "Перейти к ресурсу ".
На странице "Ресурс" нажмите кнопку "Перейти к Azure OpenAI Studio".
В меню слева в разделе "Управление" выберите "Развертывания".
Выберите "Создать новое развертывание".
Щелкните раскрывающийся список "Развернуть модель", а затем выберите "Развернуть базовую модель".
В диалоговом окне "Выбор модели" выберите "gpt-35-turbo".
Если вы хотите, просмотрите описание. По завершении нажмите кнопку "Подтвердить ".
Примечание. Вы можете выбрать другую модель, но для этого потребуются некоторые изменения в коде.
В поле "Имя развертывания" введите gpt-35-turbo.
Для других параметров выберите имена и параметры, которые лучше всего подходят для вас и вашей организации. По завершении нажмите кнопку "Развернуть ".
Копирование универсального кода ресурса (URI) и ключа
Вернитесь на главную страницу Azure, а затем в разделе "Ресурсы" выберите созданный ресурс.
На странице "Ресурс" в меню слева выберите "Ключи" и "Конечная точка".
На странице "Ключи и конечная точка" нажмите кнопку "Копировать в буфер обмена" для KEY 1 или KEY 2 (это не имеет значения), а затем вставьте его в текстовый файл с помощью Блокнота Windows или другого текстового редактора.
Нажмите кнопку "Копировать в буфер обмена" для конечной точки и вставьте ее в тот же текстовый файл.
Сохраните текстовый файл. Эти два фрагмента информации потребуются далее в руководстве.
Добавление префаб для станции 5
В папке Project перейдите к Assets>MeshCloudScripting, а затем перетащите префаб 5 — AIAssistant в иерархию и поместите его в качестве дочернего объекта в сетку Cloud Scripting и чуть менее 4 — GlobeWithCloudScripting.
Вставка сведений URI и API для Azure OpenAI
В иерархии выберите объект Mesh Cloud Scripting GameObject.
В инспекторе перейдите к компоненту Сетки Cloud Scripting и щелкните "Открыть папку приложения". Откроется папка проекта, содержащая файлы для облачной скриптов Сетки в Проводник Windows.
Откройте файл с именем appsettings. UnityLocalDev.json в редакторе кода. Последние две строки кода содержат комментарии заполнителей для параметров конфигурации Azure OpenAI.
Вставьте URI и ключ, скопированные ранее на портале Azure, в эти две строки, заменив комментарии заполнителя.
Сохранить и закрыть файл.
Обновление файла Directory.packages.props
В окне проводник, в котором отображаются файлы Cloud Scripting Сетки, откройте файл с именем Directory.Packages.props в редакторе кода. Обратите внимание на комментарий о добавлении ссылок на пакет.
Замените комментарий строкой ниже:
<PackageVersion Include="Azure.AI.OpenAI" Version="1.0.0-beta.15"/>
Сохранить и закрыть файл.
Обновление csproj-файла
В окне проводник, в котором отображаются файлы скриптов Mesh Cloud, откройте файл с именем StartingPoint.csproj в редакторе кода.
Обратите внимание, что в нижней части файла над элементом ItemGroup с информацией WeatherAPI есть комментарий с заполнителем для ссылки на пакет.
Удалите комментарий и замените его строкой ниже:
<PackageReference Include="Azure.AI.OpenAI" />
Сохранить и закрыть файл.
Добавьте код, который включает OpenAI
В окне проводник, в котором отображаются файлы скриптов Mesh Cloud, перейдите в папку StartingPoint, а затем откройте файл с именем App.cs в редакторе кода.
В файле App.cs найдите комментарий "Вставить код здесь" в верхней части списка
using
директив.Скопируйте приведенный ниже код.
using Azure; using Azure.AI.OpenAI;
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Найдите комментарий "Вставить код здесь", расположенный под полем
_weatherAPIKey_
.Скопируйте приведенный ниже код.
private OpenAIClient _openAIClient;
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Найдите комментарий "Вставить код здесь", расположенный в тексте конструктора.
Скопируйте приведенный ниже код.
Uri azureOpenAIResourceUri = new(configuration.GetValue<string>("AZURE_OPENAI_API_URI")); AzureKeyCredential azureOpenAIApiKey = new(configuration.GetValue<string>("AZURE_OPENAI_API_KEY")); _openAIClient = new(azureOpenAIResourceUri, azureOpenAIApiKey);
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Найдите комментарий "Вставить код здесь", который следует инструкции
refreshButtonNode
if внутриStartAsync()
метода.Скопируйте приведенный ниже код.
var aiParentNode = _app.Scene.FindFirstChild("5 - AIAssistant", true) as TransformNode; var infoButton = aiParentNode?.FindFirstChild<InteractableNode>(true); if (infoButton != null) { infoButton.Selected += async (sender, args) => { // Ensure we have weather data before beginning the conversation await GetCurrentWeather(_latlong); // Display an input dialog for the user to send a message to the large language model (LLM) // Paste code here }; }
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Добавление кода, отображающего диалоговое окно ввода OpenAI
Найдите комментарий "Вставить код здесь", расположенный
GetCurrentWeather()
вскоре после метода в инструкцииinfoButton
if .Скопируйте приведенный ниже код.
await _app.ShowInputDialogToParticipantAsync("Ask Azure OpenAI", args.Participant).ContinueWith(async (response) => { try { if (response.Exception != null) { throw response.Exception.InnerException ?? response.Exception; } string participantInput = response.Result; // Paste code here // Wait for a response from OpenAI based on the user's message // Paste code here } catch (Exception ex) { var log = $"Exception during OpenAI request: {ex.Message}"; _logger.LogCritical(log); if (!response.IsCanceled) { _app.ShowMessageToParticipant(log, args.Participant); } } }, TaskScheduler.Default);
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Код делает следующее:
- Вызов cloud Scripting сетки с помощью метода ShowInputDialogToParticipantAsync(). Аргументы — это сообщение, в котором пользователь запрашивает ("Ask Azure OpenAI") и кому нужно отобразить входное диалоговое окно (args). Участник).
- Когда появится диалоговое окно ввода, проверьте наличие ошибок.
- Сохраните любой тип участника ( результат) для участникаInput в виде строки.
Отправка GPT-3.5 Turbo результат диалогового окна ввода
Приведенный ниже код отправляет модель GPT-3.5 Turbo результат диалогового окна ввода с инструкциями по реагированию на текущие данные погоды.
Найдите первый комментарий "Вставить код здесь" в попытке... блокировать только что вставленный блок.
Скопируйте приведенный ниже код:
var chatCompletionsOptions = new ChatCompletionsOptions() { DeploymentName = "gpt-35-turbo", // Use DeploymentName for "model" with non-Azure clients Messages = { // The system message represents instructions or other guidance about how the assistant should behave new ChatRequestSystemMessage( "You are a helpful assistant." + "You're part of a developer sample for the Mesh Toolkit." + "Use brief answers, less than 1 paragraph." + "You can suggest a good location for a wind farm based on current and historical weather data." + "We're looking at globe with the current weather data displayed for each of these locations: Lagos Nigeria, Redmond WA USA, Dublin Ireland" + "Current weather conditions for these locations:" + _currentWeatherText ), new ChatRequestUserMessage(participantInput), } };
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Код делает следующее:
- Создайте экземпляр класса ChatCompletionOptions с именем chatCompletionOptions.
- Инициализация переменной с именем DeploymentName с именем развертывания, созданным ранее (gpt-35-turbo).
- Инициализировать новый экземпляр ChatRequestSystemMessage с руководством по вопросу о том, как помощник должен отвечать на вопросы. Это включает в себя расположения с интересующими вас погодными данными и текущими условиями (_currentWeatherText) для этих расположений. Значение _currentWeatherText было получено при вызове weatherapi.com в главе 5.
- Инициализировать новый экземпляр ChatRequestUserMessage с вопросом, заданным участником.
- Отправьте сведения о запросе в LLM (большая языковая модель).
Добавьте код, отображающий ответ от LLM
Найдите оставшийся комментарий "Вставить код здесь" в попытке... блокировать только что вставленный блок.
Скопируйте приведенный ниже код:
var aiResponse = await _openAIClient.GetChatCompletionsAsync(chatCompletionsOptions); // Display the first response from the LLM var responseMessage = aiResponse.Value.Choices[0].Message; _app.ShowMessageToParticipant($"<i>You asked: {participantInput}</i>\n\nResponse: {responseMessage.Content}", args.Participant);
Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.
Код делает следующее:
- Дождитесь ответа от LLM.
- LLM отправляет несколько ответов в массиве (responseMessage). Вы можете выбрать тот, который вы хотите показать.
- Вызов ShowMessageToParticipant () в API облачной скриптов сетки для отображения ответа.
Сохранить и закрыть файл.
Проверка результатов своих действий
В редакторе Unity сохраните проект и нажмите кнопку "Воспроизвести".
Ваш аватар порожден на стороне Террасы Sphere, которая содержит первые три станции. Перейдите к противоположной стороне террасы Sphere, а затем позиционируйте себя перед станцией 5.
Нажмите кнопку "Сведения", расположенную в текстовом поле для станции 5.
Когда появится диалоговое окно "Задать Azure OpenAI" , введите вопрос.
Ответ появится в диалоговом окне. После этого нажмите кнопку ОК.
Заключение
Поздравляем! В этом руководстве по Сетке 201 вы узнали следующее:
- Загрузка локальных общих и не общих HTML-файлов в WebSlate.
- Использование трехмерного ресурса для вызова веб-API и скачивания данных в WebSlate.
- Извлеките данные из внутренних или общедоступных источников в сцену и отобразите их в трехмерном формате.
- Настройте взаимодействие с искусственным интеллектом с помощью виртуального помощника на основе Azure OpenAI или чат-бота.
Теперь вы можете поставить новые навыки сетки для работы и создания совместной работы, которые еще более полезны и интересны!
Next Steps
Сборка и публикация
Если вы хотите создать и опубликовать этот проект учебника, сделайте следующее:
- Перейдите в нашу статью по подготовке проекта Облачной скриптов Сетки, а затем следуйте инструкциям по записи идентификатора группы ресурсов и подписки.
- Перейдите в нашу статью по созданию и публикации среды , а затем следуйте инструкциям. В определенный момент вам придется перейти к дополнительной статье со специальными инструкциями по созданию проекта с помощью Cloud Scripting Сетки, а затем вернуться к основной статье сборки и публикации. Этот поток представлен для вас в статьях.
- Если вы хотите, вы можете протестировать среду в приложении Сетки.
Дополнительные сведения о WebSlates
Посетите статью WebSlates на сайте справки сетки.
Ознакомьтесь с записью блога, написанной диспетчером продуктов WebSlates.
Задача
Попробуйте создать собственную станцию с помощью WebSlate и кнопки, которая загружает HTML-файл. Не забудьте поделиться своими усилиями на форуме разработчика сетки!