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


Руководство по Сетке 201. Получение ответов на вопросы с помощью Azure OpenAI

В этой главе мы перейдем к пятой и последней станции, где вы узнаете, как реализовать виртуальный помощник на основе Azure OpenAI или чат-бот. Обратите внимание, что вы можете использовать любую службу ИИ, которую вы хотите использовать здесь (например, Copilot Studio). В соответствии с темой поиска места для ветряной фермы помощник ИИ будет настроен для ответа на вопросы, связанные с ветряной фермой.

Важные примечания.

  • OpenAI доступен только для утвержденных корпоративных клиентов и партнеров. Если вы еще не находитесь в этой группе, необходимо отправить форму регистрации. Дополнительные сведения о процессе регистрации.

  • Если у вас возникли проблемы с подписками и OpenAI, вы можете найти ответ, разместив на форуме разработчика сетки.

Настройка для этой станции

Чтобы завершить эту станцию, необходимо посетить портал Azure, а затем получить универсальный код ресурса (также называемый Endpoint) и ключ для клиента. Позже вы вставляете ключ в некоторый код, который позволит вызывать Azure OpenAI. Давайте сделаем этот шаг сейчас, чтобы вам не нужно прерывать рабочий процесс позже.

Создание и развертывание ресурса Azure OpenAI

  1. В браузере перейдите на портал Azure и войдите в систему.

  2. В поле поиска в верхней части окна введите "Azure openai", а затем нажмите клавишу ВВОД. Это делает вас в службах ИИ Azure | Страница Azure OpenAI .

    __________________________________

  3. Нажмите кнопку Создать.

    __________________________________

    ВАЖНО. Для многих параметров, описанных ниже, мы не делаем определенную рекомендацию. Вы должны выбрать варианты, которые лучше всего подходят для вас и вашей организации.

  4. На странице "Основы" создайте имена, где запрашивались, и выберите нужные параметры для подписки, региона и ценовой категории.

  5. На странице "Сеть" выберите нужный вариант.

    __________________________________

  6. На странице "Теги" можно добавить теги или пропустить эти параметры.

  7. На странице "Проверка и отправка" просмотрите сведения и нажмите кнопку "Создать".

Ресурс развертывается, и вы увидите сообщение о том, что развертывание выполняется. В конечном итоге вы увидите , что развертывание завершено .

__________________________________

Развертывание модели в Azure OpenAI Studio

  1. Нажмите кнопку "Перейти к ресурсу ".

  2. На странице "Ресурс" нажмите кнопку "Перейти к Azure OpenAI Studio".

    __________________________________

  3. В меню слева в разделе "Управление" выберите "Развертывания".

    __________________________________

  4. Выберите "Создать новое развертывание".

  5. Щелкните раскрывающийся список "Развернуть модель", а затем выберите "Развернуть базовую модель".

  6. В диалоговом окне "Выбор модели" выберите "gpt-35-turbo".

  7. Если вы хотите, просмотрите описание. По завершении нажмите кнопку "Подтвердить ".

    __________________________________

Примечание. Вы можете выбрать другую модель, но для этого потребуются некоторые изменения в коде.

  1. В поле "Имя развертывания" введите gpt-35-turbo.

  2. Для других параметров выберите имена и параметры, которые лучше всего подходят для вас и вашей организации. По завершении нажмите кнопку "Развернуть ".

Копирование универсального кода ресурса (URI) и ключа

  1. Вернитесь на главную страницу Azure, а затем в разделе "Ресурсы" выберите созданный ресурс.

    __________________________________

  2. На странице "Ресурс" в меню слева выберите "Ключи" и "Конечная точка".

    __________________________________

  3. На странице "Ключи и конечная точка" нажмите кнопку "Копировать в буфер обмена" для KEY 1 или KEY 2 (это не имеет значения), а затем вставьте его в текстовый файл с помощью Блокнота Windows или другого текстового редактора.

    __________________________________

  4. Нажмите кнопку "Копировать в буфер обмена" для конечной точки и вставьте ее в тот же текстовый файл.

  5. Сохраните текстовый файл. Эти два фрагмента информации потребуются далее в руководстве.

Добавление префаб для станции 5

  1. В папке Project перейдите к Assets>MeshCloudScripting, а затем перетащите префаб 5 — AIAssistant в иерархию и поместите его в качестве дочернего объекта в сетку Cloud Scripting и чуть менее 4 — GlobeWithCloudScripting.

    __________________________________

Вставка сведений URI и API для Azure OpenAI

  1. В иерархии выберите объект Mesh Cloud Scripting GameObject.

  2. В инспекторе перейдите к компоненту Сетки Cloud Scripting и щелкните "Открыть папку приложения". Откроется папка проекта, содержащая файлы для облачной скриптов Сетки в Проводник Windows.

    __________________________________

  3. Откройте файл с именем appsettings. UnityLocalDev.json в редакторе кода. Последние две строки кода содержат комментарии заполнителей для параметров конфигурации Azure OpenAI.

    __________________________________

  4. Вставьте URI и ключ, скопированные ранее на портале Azure, в эти две строки, заменив комментарии заполнителя.

    __________________________________

  5. Сохранить и закрыть файл.

Обновление файла Directory.packages.props

  1. В окне проводник, в котором отображаются файлы Cloud Scripting Сетки, откройте файл с именем Directory.Packages.props в редакторе кода. Обратите внимание на комментарий о добавлении ссылок на пакет.

    __________________________________

  2. Замените комментарий строкой ниже:

    <PackageVersion Include="Azure.AI.OpenAI" Version="1.0.0-beta.15"/>
    
  3. Сохранить и закрыть файл.

Обновление csproj-файла

  1. В окне проводник, в котором отображаются файлы скриптов Mesh Cloud, откройте файл с именем StartingPoint.csproj в редакторе кода.

    __________________________________

  2. Обратите внимание, что в нижней части файла над элементом ItemGroup с информацией WeatherAPI есть комментарий с заполнителем для ссылки на пакет.

    __________________________________

  3. Удалите комментарий и замените его строкой ниже:

    <PackageReference Include="Azure.AI.OpenAI" />
    

    __________________________________

  4. Сохранить и закрыть файл.

Добавьте код, который включает OpenAI

  1. В окне проводник, в котором отображаются файлы скриптов Mesh Cloud, перейдите в папку StartingPoint, а затем откройте файл с именем App.cs в редакторе кода.

    __________________________________

  2. В файле App.cs найдите комментарий "Вставить код здесь" в верхней части списка using директив.

    __________________________________

  3. Скопируйте приведенный ниже код.

    using Azure;
    using Azure.AI.OpenAI;
    
  4. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    __________________________________

  5. Найдите комментарий "Вставить код здесь", расположенный под полем _weatherAPIKey_ .

    __________________________________

  6. Скопируйте приведенный ниже код.

    private OpenAIClient _openAIClient;
    
  7. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    ___

  8. Найдите комментарий "Вставить код здесь", расположенный в тексте конструктора.

    __________________________________

  9. Скопируйте приведенный ниже код.

    Uri azureOpenAIResourceUri = new(configuration.GetValue<string>("AZURE_OPENAI_API_URI"));
    AzureKeyCredential azureOpenAIApiKey = new(configuration.GetValue<string>("AZURE_OPENAI_API_KEY"));
    _openAIClient = new(azureOpenAIResourceUri, azureOpenAIApiKey);
    
  10. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    __________________________________

  11. Найдите комментарий "Вставить код здесь", который следует инструкции refreshButtonNode if внутри StartAsync() метода.

    __________________________________

  12. Скопируйте приведенный ниже код.

    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
        };
    }
    
  13. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    __________________________________

Добавление кода, отображающего диалоговое окно ввода OpenAI

  1. Найдите комментарий "Вставить код здесь", расположенный GetCurrentWeather() вскоре после метода в инструкции infoButton if .

    __________________________________

  2. Скопируйте приведенный ниже код.

    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);
    
  3. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    __________________________________

    Код делает следующее:

    • Вызов cloud Scripting сетки с помощью метода ShowInputDialogToParticipantAsync(). Аргументы — это сообщение, в котором пользователь запрашивает ("Ask Azure OpenAI") и кому нужно отобразить входное диалоговое окно (args). Участник).
    • Когда появится диалоговое окно ввода, проверьте наличие ошибок.
    • Сохраните любой тип участника ( результат) для участникаInput в виде строки.

Отправка GPT-3.5 Turbo результат диалогового окна ввода

Приведенный ниже код отправляет модель GPT-3.5 Turbo результат диалогового окна ввода с инструкциями по реагированию на текущие данные погоды.

  1. Найдите первый комментарий "Вставить код здесь" в попытке... блокировать только что вставленный блок.

    __________________________________

  2. Скопируйте приведенный ниже код:

        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),
            }
        };
    
  3. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    __________________________________

    Код делает следующее:

    • Создайте экземпляр класса ChatCompletionOptions с именем chatCompletionOptions.
    • Инициализация переменной с именем DeploymentName с именем развертывания, созданным ранее (gpt-35-turbo).
    • Инициализировать новый экземпляр ChatRequestSystemMessage с руководством по вопросу о том, как помощник должен отвечать на вопросы. Это включает в себя расположения с интересующими вас погодными данными и текущими условиями (_currentWeatherText) для этих расположений. Значение _currentWeatherText было получено при вызове weatherapi.com в главе 5.
    • Инициализировать новый экземпляр ChatRequestUserMessage с вопросом, заданным участником.
    • Отправьте сведения о запросе в LLM (большая языковая модель).

Добавьте код, отображающий ответ от LLM

  1. Найдите оставшийся комментарий "Вставить код здесь" в попытке... блокировать только что вставленный блок.

    __________________________________

  2. Скопируйте приведенный ниже код:

            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);
    
  3. Замените комментарий "Вставить здесь", который вы только что нашли с скопированным кодом.

    __________________________________

    Код делает следующее:

    • Дождитесь ответа от LLM.
    • LLM отправляет несколько ответов в массиве (responseMessage). Вы можете выбрать тот, который вы хотите показать.
    • Вызов ShowMessageToParticipant () в API облачной скриптов сетки для отображения ответа.
  4. Сохранить и закрыть файл.

Проверка результатов своих действий

  1. В редакторе Unity сохраните проект и нажмите кнопку "Воспроизвести".

  2. Ваш аватар порожден на стороне Террасы Sphere, которая содержит первые три станции. Перейдите к противоположной стороне террасы Sphere, а затем позиционируйте себя перед станцией 5.

    __________________________________

  3. Нажмите кнопку "Сведения", расположенную в текстовом поле для станции 5.

    __________________________________

  4. Когда появится диалоговое окно "Задать Azure OpenAI" , введите вопрос.

    __________________________________

  5. Ответ появится в диалоговом окне. После этого нажмите кнопку ОК.

    __________________________________

Заключение

Поздравляем! В этом руководстве по Сетке 201 вы узнали следующее:

  • Загрузка локальных общих и не общих HTML-файлов в WebSlate.
  • Использование трехмерного ресурса для вызова веб-API и скачивания данных в WebSlate.
  • Извлеките данные из внутренних или общедоступных источников в сцену и отобразите их в трехмерном формате.
  • Настройте взаимодействие с искусственным интеллектом с помощью виртуального помощника на основе Azure OpenAI или чат-бота.

Теперь вы можете поставить новые навыки сетки для работы и создания совместной работы, которые еще более полезны и интересны!

Next Steps

Сборка и публикация

Если вы хотите создать и опубликовать этот проект учебника, сделайте следующее:

  1. Перейдите в нашу статью по подготовке проекта Облачной скриптов Сетки, а затем следуйте инструкциям по записи идентификатора группы ресурсов и подписки.
  2. Перейдите в нашу статью по созданию и публикации среды , а затем следуйте инструкциям. В определенный момент вам придется перейти к дополнительной статье со специальными инструкциями по созданию проекта с помощью Cloud Scripting Сетки, а затем вернуться к основной статье сборки и публикации. Этот поток представлен для вас в статьях.
  3. Если вы хотите, вы можете протестировать среду в приложении Сетки.

Дополнительные сведения о WebSlates

Посетите статью WebSlates на сайте справки сетки.

Ознакомьтесь с записью блога, написанной диспетчером продуктов WebSlates.

Задача

Попробуйте создать собственную станцию с помощью WebSlate и кнопки, которая загружает HTML-файл. Не забудьте поделиться своими усилиями на форуме разработчика сетки!