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

Пример 1. Конфигурация OpenAI Completions API (GPT-3) — Rows (API Завершения OpenAI (GPT-3) — строки)

Этот пример демонстрирует использование коннектора аналитики OpenAI с конфигурацией OpenAI Completions API (GPT-3) — Rows (API Завершения OpenAI (GPT-3) — строки). С помощью базовых упражнений демонстрируется внедрение этой функции в модель данных и выражения диаграммы.

С точки зрения функциональности, данный коннектор очень напоминает конфигурацию OpenAI Chat Completions API (GPT-3.5, GPT-4) — Rows (API Завершения чата OpenAI (GPT-3.5, GPT-4) — строки). Однако эти две конфигурации используют разные модели, что, в свою очередь, приводит к разным результатам. Кроме того, в этих двух конфигурациях используются разные имена параметров, поэтому в учебном пособии выбирайте тот пример, который соответствует конфигурации. Конфигурацию для Chat Completions (Завершения чата) см. в разделе Пример 3. Конфигурация OpenAI Chat Completions API (GPT-3.5, GPT-4) — Rows (API Завершения чата OpenAI (GPT-3.5, GPT-4) — строки).

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

Перед началом работы

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

  • Создание учетной записи на платформе OpenAI

  • Получение ключа OpenAI API

  • Включение функции подключения аналитики в Qlik Cloud

  • Создание подключений с использованием применимых конфигураций коннекторов

Использование коннектора OpenAI в скрипте загрузки

Создайте новое приложение Qlik Sense, в которое будет добавлен скрипт загрузки для взаимодействия с платформой OpenAI. Таблицы, загружаемые с помощью этого скрипта, будут доступны в модели данных приложения.

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

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

Создание таблицы данных для отправки в OpenAI

Во-первых, необходимо создать таблицу, которая содержит запрос, отправляемый в OpenAI. Строки данных в запросе представляют собой так называемые «завершения». Текст для каждого элемента должен заключаться в виде строк в одном поле (столбце) таблицы. Каждая строка в этом столбце представляет текст, который будет завершен с помощью OpenAI API.

Может быть второе дополнительное поле для параметра 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 является полем ассоциации, которое будет использоваться на следующем этапе для связи ответов с моделью данных приложения.

Создание оператора загрузки OpenAI (load)

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

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

Найдите используемое подключение на панели Источники данных в редакторе загрузки данных и щелкните Выбор данных. Откроется мастер Выбор данных.

Кнопка Выбрать данные для подключения аналитики в редакторе загрузки данных

Вкладка «Добавить данные» редактора загрузки данных с выделенным значком «Выбор данных»

При использовании мастера Выбор данных необходимо указать два свойства.

  • Имя резидентной таблицы. Это таблица с вопросами, отправляемыми в OpenAI. В данном случае это SourceTable.

  • Имя поля данных. Это поле с вопросами, отправляемыми в OpenAI. В данном случае это Text.

В разделе Таблицы установите флажок для таблицы под именем openai.

Мастер Выбор данных в редакторе загрузки данных

Вкладка «Добавить данные» редактора загрузки данных с выделенным значком «Выбор данных»

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

После добавления оператора загрузки OpenAI (load) скрипт загрузки будет выглядеть следующим образом:

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.text], [choices.index], [choices.logprobs], [choices.finish_reason], [RowId] EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)"}}', SourceTable{RowId,Text});

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
    Примечание к информацииВ этом примере является приемлемым не использовать оператор if, так как отправляется только одна строка данных и отсутствует подключение к модели данных. В других сценариях используйте оператор if, чтобы гарантировать расчет диаграммы только в тех случаях, когда в приложении выбрано одно значение поля. Примеры см. в разделе Быстрые примеры.
    Примечание к информацииДля правильной работы именно этого кода в приложении необходимо настроить подключение OpenAI с использованием того же значения поля Имя, которое указано для connectionname в выражении. Значения, используемые для работы с данным учебным пособием, приводятся в разделе Создание подключений.
  5. Нажмите Применить.

Qlik SenseДиаграмма Текст и изображение с ответом OpenAI

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

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

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

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

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

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

  3. С панели ресурсов перетащите диаграмму Ввод переменной на лист. Этот параметр находится в разделе РасширенияПакет Qlik Dashboard bundle.

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

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

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

  7. С панели ресурсов перетащите на лист диаграмму Текст и изображение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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