За последние недели с момента своего выпуска ChatGPT OpenAI покорил мир. The New York Times назвала продукт лучшим чат-ботом с искусственным интеллектом, когда-либо выпущенным для широкой публики.

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

ChatGPT использует API OpenAI для создания ответов. Согласно их документации, API OpenAI можно применять практически к любой задаче, связанной с пониманием или созданием естественного языка или кода. Сегодня я собираюсь создать TL;DR (слишком долго не читал) резюме контента, загруженного в Box — ведущее облако контента для управления документами, совместной работы и электронной подписи.

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

Если вы спрашиваете себя, что такое Box Skills, перейдите к моему краткому руководству по теме здесь, но TL; DR (видите, что я там сделал?) заключается в том, что Box Skills предоставляет разработчикам основу для хранения машин. данные обучения и искусственного интеллекта в качестве метаданных непосредственно в контенте в Box.

Это конечный результат, к которому мы собираемся прийти. Как показано ниже, краткое изложение эссе из пяти абзацев появляется на вкладке «Навыки работы с рамкой» справа, что дает вам четкое представление о том, о чем документ, без необходимости читать эссе целиком. Навык можно использовать для любых типов контента с текстом: docx, pdf, pptx и т. д.

А вот и схема решения.

Всякий раз, когда контент загружается, перемещается или копируется в папку, настроенную для Box Skill, вызывается URL-адрес вызова бессерверной функции. Это запускает блок кода, который извлекает текст из файла, отправляет этот текст в API OpenAI и записывает сводные данные обратно в карточку навыков файла в Box. В этом примере я собираюсь использовать Google Cloud Platform для размещения своей бессерверной функции, но подойдет любой облачный сервис.

Давайте перейдем к учебнику!

Навык коробки настройки

Создайте учетную запись разработчика Box (необязательно, но рекомендуется)

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

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

Создание навыка «Коробка»

Перейдите в Консоль разработчика и нажмите Создать новое приложение.

Выберите Пользовательский навык Box.

Дайте приложению имя и нажмите «Создать приложение».

После создания приложения вы увидите показанный ниже экран. В красное поле вы поместите URL-адрес, куда вы хотите отправить полезную нагрузку Box Skills. Мы добавим этот URL позже.

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

Поскольку этот навык Box будет использоваться для контента, содержащего текст, добавьте типы расширений файлов, показанные ниже. ПРИМЕЧАНИЕ. Возможно, это потребуется сделать в конце руководства.

Включить/авторизовать навык Box (заполняется администратором)

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

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

На экране консоли администратора навыков нажмите Добавить навык.

Введите идентификатор клиента навыка и нажмите «Далее».

Выберите, должен ли навык работать для всего содержимого или для подмножества папок.

Для (а) конкретной папки (папок) отфильтруйте всплывающее окно по имени пользователя и папки. Отметьте папки, для которых должен активироваться навык.

Подтвердите выбор и нажмите Включить.

Настройка OpenAI

Создайте учетную запись OpenAI

Перейдите на сайт разработчиков OpenAI API и зарегистрируйте новую учетную запись — если у вас ее еще нет.

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

Создать ключ API

Под своей учетной записью нажмите Просмотреть ключи API.

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

Настройка учетной записи GCP

В этом руководстве для развертывания нашего кода будет использоваться замечательная Serverless Framework.

Прежде чем продолжить, вам необходимо настроить учетную запись GCP с привязанным к ней способом выставления счетов. Я не буду описывать здесь все эти шаги, но вы можете найти их на странице Serverless. Веб-сайт. Обязательно выполните все шаги, включая создание проекта + включение API, создание сервисного аккаунта и загрузку файла ключа JSON.

Сохраните файл ключа JSON для следующего шага.

Развернуть функцию GCP

Загрузите или разветвите код для функции GCP на свой компьютер, где бы вы ни размещали свои типовые проекты кода.

Откройте проект в редакторе кода, например Visual Studio Code.

В терминале редактора подтвердите, что у вас Node v10.0.0 или выше.

Перетащите файл ключа JSON, загруженный на шаге выше, в папку .gcloud и переименуйте его в serverless.json.

Обновите файл serverless.yml, чтобы он содержал информацию о конфигурации и именах для вашей учетной записи GCP. Также не забудьте добавить ключи безопасности Box, показанные на снимке экрана ниже.

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

В терминале VS Code запустите npm install , а затем запустите sls deploy. Развертывание может занять несколько минут, особенно в первый раз. После его завершения вы получите URL-адрес вызова. Скопируйте и вставьте это в правильное поле на вкладке конфигурации приложения.

Посетите консоль GCP, чтобы убедиться, что ваша бессерверная функция активна. Вам также необходимо добавить дополнительное разрешение на функцию, чтобы Box мог ее вызывать. Щелкните разрешения › добавить. Введите «allUsers» в поле «Новые участники» с выбранной ролью Cloud Functions Invoker. Щелкните Сохранить.

Загрузите файл в папку Box, настроенную администратором. Откройте файл в Box, чтобы просмотреть сводку TL;DR, добавленную в карточку стенограммы Box Skills.

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

Приложение

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

Для справки, это файл index.js.

Извлечение текста

API OpenAI не может принимать файл напрямую и поэтому требует отправки текста вместе с запросом. К счастью, все содержимое с текстом автоматически имеет текстовое представление, созданное после загрузки в Box. Вот почему в начале мы устанавливаем ограничения расширения для Box Skill.

Обратите внимание, что Box создаст текстовое представление только для таких файлов, как Word, Powerpoint и т. д. Таким образом, для фото- или видеофайлов без текста это представление не будет создано.

В коде есть 5-секундный буфер, так как для генерации представления иногда требуется несколько секунд — особенно для более длинного текста. Если по какой-то причине текстовое представление все еще не готово, код возвращает 400, что затем запускает процесс повторной автоматической экспоненциальной отсрочки Box Skill.

Токенизация

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

Токены важны, потому что каждая из их моделей имеет лимит токенов. В коде используется текст-davinci-003. Это самый дорогой, но лучше всего подходит для создания хорошего резюме. Кроме того, у него самый высокий лимит токенов — 4000.

Текст из запроса плюс текст, отправленный обратно из сервиса, не должен превышать лимита.

В этом примере код использует свой пакет кодировщика GPT-3 npm, чтобы узнать, сколько токенов соответствует тексту, отправляемому в запросе. Если токенов больше 3800, отправляемый текст обрезается на отметке 3800.

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

Настройка имени карты Box Skills

По умолчанию в заголовке карточки стенограммы комплекта Box Skills указано «Тенограмма». Я просто отредактировал строку 371 в файле skills-kit-2.0.js, чтобы на карточке было написано «TL;DR Summary».

Спасибо, что ознакомились с моим руководством по Box Skills с OpenAI. Следите за обновлениями, скоро появится больше контента по навыкам!

Дополнительные ресурсы

Руководство разработчика по Box Skills

Документация OpenAI

Функции GCP

…И, как всегда, не стесняйтесь задавать вопросы на нашем форуме разработчиков.