Перейти к основному содержимому Перейти к дополнительному содержимому

Создание скрипта загрузки и выражения диаграммы для аналитического коннектора 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 скрипт загрузки будет выглядеть следующим образом:

SourceTable: NoConcatenate LOAD RowNo() as RowId, Text Inline [Text translate from English to French: What is the time you go to work?]; [openai]: LOAD [id], [object], [created], [model], [prompt_tokens], [completion_tokens], [total_tokens], [choices.message.role], [choices.message.content], [choices.index], [choices.finish_reason], [RowId] EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI_Examples_Intro"}}', SourceTable);

 

Примечание к информацииДля правильной работы именно этого кода в приложении необходимо настроить подключение OpenAI, используя то же значение поля Name, которое указано для connectionname в скрипте загрузки выше. Значения, которые используются для работы с данным учебным пособием, указаны в разделе Создание подключений.

Теперь можно запускать скрипт загрузки.

Загрузка данных в приложение

После выполнения скрипта нажмите кнопку Загрузить данные. В результате производится обмен данными с OpenAI и вставка таблиц в данные модели в приложении.

Примечание к информацииЕсли при загрузке скрипта возникла ошибка, возможно, необходимо убедиться, что дополнительное поле связи в конфигурации подключения совпадает с соответствующим полем в скрипте загрузки. Если в конфигурации подключения определено значение для параметра Association Field (Поле связи), убедитесь, что оно также включено в скрипт запроса.

Откройте окно для просмотра модели данных и убедитесь, что две таблицы связаны между собой, как и ожидалось. На панели Предварительный просмотр ответ OpenAI на заданный вопрос включен во вторую таблицу.

Модель данных, созданная из подключения OpenAI

Окно просмотра модели, в котором отображается полученная модель, состоящая из двух таблиц.

Теперь можно генерировать аналитическое содержимое на основе данных, загруженных в приложение. В диаграммах, создаваемых с помощью этих данных, не нужно ссылаться на подключение OpenAI. Для получения информации о том, как использовать подключение OpenAI непосредственно в выражениях диаграммы (а не в скрипте загрузки), см. раздел Использование коннектора OpenAI в выражениях диаграммы.

Использование коннектора OpenAI в выражениях диаграммы

Можно добавлять вопросы и ответы OpenAI в модель данных приложения не только с помощью скрипта загрузки, но и непосредственно в диаграмме приложения. Это является альтернативой использованию таблиц в скрипте загрузки для взаимодействия с OpenAI.

Данные для одного поля передаются между пользователем и OpenAI. Во многих случаях код, используемый для подключения скрипта загрузки, можно использовать в диаграмме, но с некоторыми существенными изменениями.

Для получения дополнительных сведений см. раздел Использование подключений OpenAI в выражениях визуализации.

Что нужно знать об объемах запросов данных

Рекомендуется использовать подключения OpenAI только в выражениях диаграммы для одной или нескольких строк данных. Не рекомендуется использовать выражения диаграммы для отправки больших объемов данных в OpenAI.

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

Следуйте приведенным ниже рекомендациям, чтобы модерировать и ограничивать размер запросов:

  • При работе с выражениями диаграмм используйте подключение только в объекте Текст (из Dashboard bundle). Крайне нежелательно использовать подключение OpenAI в объекте Таблица, особенно если выражение добавляется в таблицу, в которой уже есть одно или несколько измерений.

  • Если выражение диаграммы связано с моделью данных приложения, используйте оператор if в выражении только для вычисления диаграммы, когда в приложении сделана только одна выборка. Это значительно сокращает количество строк в запросах, которые диаграмма будет отправлять в OpenAI.

  • Если подключение OpenAI служит для отправки больших запросов, используйте подключение в скрипте загрузки, а не в выражении диаграммы, чтобы данные предварительно загружались в модель данных.

Упражнение. Создание базового выражения диаграммы

  1. Создайте Qlik Sense приложение и откройте новый лист в режиме редактирования.

    Примечание к информацииПодключение аналитики, используемое для выражения диаграммы, должно быть предварительно создано в пространстве, где создается приложение. Это можно сделать в редакторе загрузки данных прямо в приложении или на странице «Создать» в центре активностиАналитика. Для получения дополнительной информации см. раздел Создание подключения OpenAI .
  2. Откройте Расширение Пользовательские объекты > Qlik Dashboard bundle и перетащите объект Текст на лист.

  3. На панели свойств в разделе Данные > Меры добавьте меру и щелкните Выражение, чтобы открыть редактор выражения.

  4. Вставьте следующее выражение в редактор выражения:

    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, указанном в выражении. Значения, которые используются для работы с данным учебным пособием, указаны в разделе Создание подключений.
  5. Нажмите Применить.

Объект Текст Qlik Sense с ответом от OpenAI

Объект листа Qlik Sense с ответом от OpenAI.

Упражнение. Создание поля ввода текста с использованием переменной

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

Этот простой интерфейс позволяет расширить данные приложения за счет контекстной информации, генерируемой в реальном времени.

  1. Создайте приложение и добавьте данные и визуализации на новый лист.

  2. Щелкните Переменные, чтобы создать переменную. Для выполнения этого упражнения присвойте ей имя vUserQuestion. Оставьте оставшиеся параметры пустыми.

  3. С панели ресурсов перетащите диаграмму Ввод диаграммы на лист. Ее можно найти здесь: Расширение Пользовательские объектыПакет DashboardQlik.

  4. На панели свойств для диаграммы Ввод переменной разверните меню Вид > Переменная.

  5. В поле Имя выберите vUserQuestion.

  6. В поле Показать как выберите Поле ввода.

  7. В панели ресурсов откройте Расширение Пользовательские объектыQlik Dashboard bundle и перетащите объект Текст на лист.

  8. На панели свойств в разделе Данные > Меры добавьте меру и щелкните Выражение, чтобы открыть редактор выражения.

  9. Вставьте следующее выражение в редактор выражения:

    if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI_Examples_Intro","column":"choices.message.content"}}',vUserQuestion))
    Примечание к информацииДля правильной работы именно этого кода в приложении необходимо настроить подключение OpenAI, используя то же значение поля Name, что и в connectionname, указанном в выражении. Значения, которые используются для работы с данным учебным пособием, указаны в разделе Создание подключений.
  10. Нажмите Применить.

  11. Измените размер этих полей ввода и ответа по необходимости.

Теперь можно выйти из режима редактирования и ввести вопрос в поле ввода. При нажатии клавиши «Enter» или щелчке в любом месте листа появляется в поле ответа появляется ответ от OpenAI.

Простой лист с типовыми данными и полем ввода вопросов для OpenAI

Объект листа Qlik Sense с ответом от OpenAI.

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

Для получения дополнительных сведений о работе с переменными см. Создание переменной и Элемент управления вводом переменной.

Различия между скриптом загрузки и кодом выражения диаграммы

В этих выражениях диаграммы изменено назначение кода, введенного при выполнении предыдущего упражнения со скриптом загрузки. В следующем списке выделены самые важные отличия между версией скрипта загрузки и выражениями диаграммы:

  • ScriptEval изменено на ScriptAggrStr. Здесь показана отправка одной строки данных, в ответ на которую ожидается одна результирующая строка. Это требуется при работе с пользовательскими данными, такими как переменные или константы, как в этом случае. Обозначение «Str» показывает, что отправляются и принимаются текстовые значения.

  • Добавлено новое свойство column со значением choices.message.content. Оно вложено в объект endpoint. Это дополнение строки конфигурации необходимо для указания того, какое поле должен вернуть коннектор. В выражении диаграммы используется только одно поле, необходимо указать, какое именно.

Для получения дополнительной информации см. раздел Синтаксис серверных расширений.

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!