Создание скрипта загрузки и выражения диаграммы для аналитического коннектора OpenAI. Примеры
В этих примерах показано, как использовать аналитический коннектор OpenAI для взаимодействия с большими языковыми моделями. В примерах также представлены простые упражнения, демонстрирующие внедрение текста, сгенерированного ИИ, в модель данных и выражения диаграммы.
В этих примерах будет использована конфигурация OpenAI API Chat Completions для коннектора аналитики OpenAI.
Этот пример также можно выполнить с помощью коннектора Azure OpenAI. При использовании этого коннектора взаимодействие с моделями осуществляется через платформу Microsoft Azure, а не через платформу OpenAI.
Перед началом работы
Для завершения этого примера необходимо выполнить следующее.
-
Создайте учетную запись на платформе OpenAI
-
Получите ключ OpenAI API
-
Активируйте подключения аналитики в Qlik Cloud
-
Создайте подключения с соответствующими конфигурациями коннекторов
Для получения дополнительной информации см.:
Использование коннектора OpenAI в скрипте загрузки
Создайте новое приложение Qlik Sense, в которое будет добавлен скрипт загрузки для взаимодействия с платформой OpenAI. Таблицы, загружаемые с помощью этого скрипта, будут доступны в модели данных приложения.
Выполните перечисленные ниже действия. Для получения дополнительных сведений см. раздел Выбор и загрузка данных из подключения OpenAI.
Создание таблицы данных для отправки в OpenAI
Во-первых, необходимо создать таблицу, которая содержит запрос, отправляемый в OpenAI. Строки данных в запросе представляют собой так называемые «завершения» (completions). Текст для каждого элемента должен обрабатываться в виде строк одного поля (столбца) таблицы. Каждая строка в этом столбце представляет текст, который будет завершен с помощью API OpenAI.
Может быть второе дополнительное поле для параметра Association Field(Поле связи), но оно должно совпадать с именем поля, указанным в конфигурации. Это специальное поле, которое не отправляется в OpenAI, а присоединяется к ответам с целью генерирования модели данных Qlik.
В приложении откройте редактор загрузки данных и вставьте следующий код в новый раздел скрипта:
SourceTable:
NoConcatenate
LOAD
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];
В этой таблице есть поле под названием Text, которое содержит один вопрос, отправляемый в OpenAI. Дополнительные вопросы можно добавлять как новые отдельные ячейки под ячейкой существующего вопроса. Поле RowId является полем ассоциации, которое будет использоваться на следующем этапе для связи ответов с моделью данных приложения.
Создание оператора load для OpenAI
На следующем этапе необходимо создать еще один оператор загрузки (load) для взаимодействия с OpenAI. Таблица, загружаемая с помощью этого оператора, ссылается на имена таблицы и полей, используемых для отправки данных запроса. Другими словами, вторая таблица загружается скриптом для предоставления ответов OpenAI на элементы запроса.
Для создания этой части скрипта можно использовать мастер Выбор данных в используемом подключении. При этом создается шаблон скрипта, включающий имена предоставленных свойств. Эту таблицу также можно добавить в редактор скриптов вручную, не используя мастер.
Найдите используемое подключение на панели Источники данных в редакторе загрузки данных и щелкните . Откроется мастер Выбор данных.
Кнопка Выбор данных для подключения аналитики в редакторе загрузки данных
При использовании мастера Выбор данных необходимо указать два свойства.
-
Имя резидентной таблицы. Это таблица с вопросами, отправляемыми в OpenAI. В данном случае это SourceTable.
-
Имя поля данных. Это поле с вопросами, отправляемыми в OpenAI. В данном случае это Text.
В разделе Таблицы установите флажок для таблицы под именем openai.
Мастер Выбор данных в редакторе загрузки данных
При нажатии кнопки Вставить скрипт новая таблица добавляется в скрипт загрузки.
После добавления оператора загрузки для OpenAI скрипт загрузки будет выглядеть следующим образом:
Теперь можно запускать скрипт загрузки.
Загрузка данных в приложение
После выполнения скрипта нажмите кнопку Загрузить данные. В результате производится обмен данными с OpenAI и вставка таблиц в данные модели в приложении.
Откройте окно для просмотра модели данных и убедитесь, что две таблицы связаны между собой, как и ожидалось. На панели Предварительный просмотр ответ OpenAI на заданный вопрос включен во вторую таблицу.
Модель данных, созданная из подключения OpenAI
Теперь можно генерировать аналитическое содержимое на основе данных, загруженных в приложение. В диаграммах, создаваемых с помощью этих данных, не нужно ссылаться на подключение OpenAI. Для получения информации о том, как использовать подключение OpenAI непосредственно в выражениях диаграммы (а не в скрипте загрузки), см. раздел Использование коннектора OpenAI в выражениях диаграммы.
Использование коннектора OpenAI в выражениях диаграммы
Можно добавлять вопросы и ответы OpenAI в модель данных приложения не только с помощью скрипта загрузки, но и непосредственно в диаграмме приложения. Это является альтернативой использованию таблиц в скрипте загрузки для взаимодействия с OpenAI.
Данные для одного поля передаются между пользователем и OpenAI. Во многих случаях код, используемый для подключения скрипта загрузки, можно использовать в диаграмме, но с некоторыми существенными изменениями.
Для получения дополнительных сведений см. раздел Использование подключений OpenAI в выражениях визуализации.
Что нужно знать об объемах запросов данных
Рекомендуется использовать подключения OpenAI только в выражениях диаграммы для одной или нескольких строк данных. Не рекомендуется использовать выражения диаграммы для отправки больших объемов данных в OpenAI.
Важно знать, сколько строк отправляется вместе с каждым запросом. Ошибки конфигурации подключения в выражении диаграммы могут привести к созданию непреднамеренно больших запросов (например, идентичные строки с одинаковым вопросом из-за неправильного использования модели данных в диаграммы). Прежде чем взаимодействовать с внешней платформой, необходимо оценить, как поля, используемые при расчете выражения диаграммы, а также с их местом в модели данных влияют на финансовое соглашение с внешним поставщиком и на оплату его услуг. Чем более интенсивно используется внешняя платформа, тем больше могут быть затраты.
Следуйте приведенным ниже рекомендациям, чтобы модерировать и ограничивать размер запросов:
-
При работе с выражениями диаграмм используйте подключение только в объекте Текст (из Dashboard bundle). Крайне нежелательно использовать подключение OpenAI в объекте Таблица, особенно если выражение добавляется в таблицу, в которой уже есть одно или несколько измерений.
-
Если выражение диаграммы связано с моделью данных приложения, используйте оператор if в выражении только для вычисления диаграммы, когда в приложении сделана только одна выборка. Это значительно сокращает количество строк в запросах, которые диаграмма будет отправлять в OpenAI.
-
Если подключение OpenAI служит для отправки больших запросов, используйте подключение в скрипте загрузки, а не в выражении диаграммы, чтобы данные предварительно загружались в модель данных.
Упражнение. Создание базового выражения диаграммы
Выполните следующие действия.
-
Создайте Qlik Sense приложение и откройте новый лист в режиме редактирования.
Примечание к информацииПодключение аналитики, используемое для выражения диаграммы, должно быть предварительно создано в пространстве, где создается приложение. Это можно сделать в редакторе загрузки данных прямо в приложении или на странице «Создать» в центре активностиАналитика. Для получения дополнительной информации см. раздел Создание подключения OpenAI . -
Откройте
Пользовательские объекты > Qlik Dashboard bundle и перетащите объект Текст на лист.
-
На панели свойств в разделе Данные > Меры добавьте меру и щелкните
, чтобы открыть редактор выражения.
-
Вставьте следующее выражение в редактор выражения:
endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI_Examples_Intro","column":"choices.message.content"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')Примечание к информацииВ этом примере является приемлемым не использовать оператор if, так как отправляется только одна строка данных и отсутствует подключение к модели данных. В других сценариях используйте оператор if, чтобы гарантировать расчет диаграммы только в тех случаях, когда в приложении выбрано одно значение поля. Примеры см. в разделе Быстрые примеры.Примечание к информацииДля правильной работы именно этого кода в приложении необходимо настроить подключение OpenAI, используя то же значение поля Name, что и в connectionname, указанном в выражении. Значения, которые используются для работы с данным учебным пособием, указаны в разделе Создание подключений. -
Нажмите Применить.
Объект Текст Qlik Sense с ответом от OpenAI
Упражнение. Создание поля ввода текста с использованием переменной
Также можно заменить строку вопроса именем переменной, созданной в приложении, чтобы создать поле ввода текста, в котором пользователи приложения могут вводить собственные вопросы, не взаимодействуя с выражениями.
Этот простой интерфейс позволяет расширить данные приложения за счет контекстной информации, генерируемой в реальном времени.
Выполните следующие действия.
-
Создайте приложение и добавьте данные и визуализации на новый лист.
-
Щелкните
, чтобы создать переменную. Для выполнения этого упражнения присвойте ей имя vUserQuestion. Оставьте оставшиеся параметры пустыми.
-
С панели ресурсов перетащите диаграмму Ввод диаграммы на лист. Ее можно найти здесь:
Пользовательские объекты > Пакет DashboardQlik.
-
На панели свойств для диаграммы Ввод переменной разверните меню Вид > Переменная.
-
В поле Имя выберите vUserQuestion.
-
В поле Показать как выберите Поле ввода.
-
В панели ресурсов откройте
Пользовательские объекты > Qlik Dashboard bundle и перетащите объект Текст на лист.
-
На панели свойств в разделе Данные > Меры добавьте меру и щелкните
, чтобы открыть редактор выражения.
-
Вставьте следующее выражение в редактор выражения:
if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI_Examples_Intro","column":"choices.message.content"}}',vUserQuestion))Примечание к информацииДля правильной работы именно этого кода в приложении необходимо настроить подключение OpenAI, используя то же значение поля Name, что и в connectionname, указанном в выражении. Значения, которые используются для работы с данным учебным пособием, указаны в разделе Создание подключений. -
Нажмите Применить.
-
Измените размер этих полей ввода и ответа по необходимости.
Теперь можно выйти из режима редактирования и ввести вопрос в поле ввода. При нажатии клавиши «Enter» или щелчке в любом месте листа появляется в поле ответа появляется ответ от OpenAI.
Простой лист с типовыми данными и полем ввода вопросов для OpenAI
Подключение OpenAI в этом упражнении совсем не взаимодействует с моделью данных приложения, но можно создать более сложные приложения, которые будут полностью интегрироваться с загруженными данными и реагировать на выборки, сделанные в приложении.
Для получения дополнительных сведений о работе с переменными см. Создание переменной и Элемент управления вводом переменной.
Различия между скриптом загрузки и кодом выражения диаграммы
В этих выражениях диаграммы изменено назначение кода, введенного при выполнении предыдущего упражнения со скриптом загрузки. В следующем списке выделены самые важные отличия между версией скрипта загрузки и выражениями диаграммы:
-
ScriptEval изменено на ScriptAggrStr. Здесь показана отправка одной строки данных, в ответ на которую ожидается одна результирующая строка. Это требуется при работе с пользовательскими данными, такими как переменные или константы, как в этом случае. Обозначение «Str» показывает, что отправляются и принимаются текстовые значения.
-
Добавлено новое свойство column со значением choices.message.content. Оно вложено в объект endpoint. Это дополнение строки конфигурации необходимо для указания того, какое поле должен вернуть коннектор. В выражении диаграммы используется только одно поле, необходимо указать, какое именно.
Для получения дополнительной информации см. раздел Синтаксис серверных расширений.