- PVSM.RU - https://www.pvsm.ru -
Около трёх месяцев назад я задумался [1] о том, что в ближайшем будущем взаимодействие человека с техносферой (программно-аппаратно-сетевой инфраструктурой) будет происходить скорее через мессенджеры, такие как Telegram, чем через привычный браузер. Частое использование чатов на смартфоне быстро подтолкнуло меня к попытке снова попробовать голосовой ввод вместо привычных тапов по виртуальной клавиатуре или набора слов жестами. К моему приятному удивлению, распознавание голоса сейчас достигло очень высокого уровня как на Android, так и на iPhone. Причём настолько высокого, что STT (speech-to-text [2]) стал для меня основным способом ввода текста в чатах, включая браузер [3].
Поскольку искусственный интеллект в целом, и технологии OpenAI в частности, уже практически стали повседневной нормой (по крайней мере, для меня), я, естественно, начал использовать голосовое общение и в GPT-чатах. А узнав о действиях (actions) в настраиваемых GPT-чатах, я сразу загорелся идеей соединить GPT-чат с каким-нибудь внешним приложением. Однако на этом этапе встал вопрос: как аутентифицировать пользователей чата во внешнем приложении? Несмотря на то что OpenAI предлагает использовать OAuth 2.0 для интеграции, в этой статье я рассмотрю альтернативный вариант — парольную аутентификацию, которая, на мой взгляд, лучше подходит для голосового взаимодействия.
С точки зрения интеграции, GPT-чат по сравнению с Telegram-чатом всё ещё находится на начальной стадии развития. OpenAI предлагает только одно направление передачи данных — от чата наружу:
В общем случае бизнес может настроить GPT-чат (доступно начиная с плана "GPT Plus" и выше) и предоставить к нему доступ — как публичный, так и по приватной ссылке.
К основным настройкам чата относятся:
название чата;
иконка;
краткое описание (до 300 символов);
инструкции (системный промпт);
фразы-стартеры (предложения для новых пользователей, чтобы начать диалог);
библиотека знаний (загружаемые файлы);
дополнительные возможности (поиск в сети, генерация изображений, интерпретатор кода);
действия (интеграция GPT-чата с внешними веб-сервисами).
Пример моего демо-чата — CustomGPT Integration Demo [4], скриншоты его настроек приведены ниже:
Действия — это именно та функция, которая позволяет интегрировать GPT-чат с внешними веб-приложениями. Эти действия группируются по доменам, которые соответствуют адресам веб-сервисов в интернете. В моём случае используется один домен — user.demo.gpt.wiredgeese.com [5], на котором размещены четыре веб-сервиса.
Демо-чат предоставляет следующие действия:
userSignUpInit: инициирует процесс регистрации пользователя во внешнем приложении.
emailTestSend: отправляет запрос во внешнее приложение для отправки тестового email на адрес пользователя.
userProfileUpdateInit: запрашивает у внешнего приложения отправку ссылки на email пользователя для редактирования профиля или сброса парольной фразы.
emailOwnerSend: отправляет запрос во внешнее приложение на отправку email в свободном формате на адрес владельца бизнеса (в данном случае — на мой).
Настройка GPT-чата выполняется с использованием OpenAPI-спецификации (схемы [6]).
Доступ к веб-сервису ограничивается с помощью авторизации. В моём случае используется заголовок Authorization: Bearer ...):
GPT-чаты доступны во многих странах [7], но есть ряд регионов, где их использование недоступно. К таким странам относятся:
Китай
Гонконг
Россия
Иран
Северная Корея
Сирия
Куба
Причины включения этих стран в список ограничений я объяснять не буду.
Для использования GPT-чатов необходима хотя бы минимальная подписка на сайте chatgpt.com. Хотя OpenAI утверждает, что преднастроенные чаты доступны даже для бесплатных планов, я бы не рекомендовал основывать на этом свою бизнес-модель. Пользователи с бесплатным планом могут использовать преднастроенный чат какое-то время, однако это больше похоже на демонстрацию возможностей самого ChatGPT. Кроме того, пользователи с бесплатным планом периодически могут сталкиваться с такими сообщениями в чате:
При использовании смартфона в качестве основного устройства для работы с GPT-чатом доступны два варианта голосового взаимодействия.
В этом варианте пользователь использует возможности смартфона для преобразования голоса в текст. Для GPT-чата такой способ ввода практически не отличается от набора текста с помощью клавиатуры.
Ответы чата в этом случае будут выводиться в текстовом формате.
Аналогичная ситуация происходит, если вы используете запись голоса с последующим преобразованием средствами самого ChatGPT.
Этот способ общения значительно ускоряет ввод текста в чат и особенно удобен для пользователей с высокой скоростью чтения.
Вы можете переключить своё GPT-приложение в режим голосового диалога:
В этом случае взаимодействие с GPT-чатом будет происходить исключительно голосом.
Транскрибация вашего диалога с чатом выполняется в фоновом режиме. При этом ваши реплики преобразуются в осмысленную речь с корректным использованием знаков препинания.
Этот способ особенно удобен, если вы не можете читать сообщения чата и предпочитаете слушать его ответы. Хотя он медленнее по сравнению с текстовым выводом, в некоторых ситуациях, таких как вождение автомобиля, это может быть единственным доступным вариантом общения.
В текущем состоянии эта функция реализована довольно неудобно с точки зрения UX. Наиболее комфортный вариант, с которым мне удалось столкнуться, — это нативное приложение ChatGPT для Android, работающее в режиме диалога.
Основная сложность заключается в том, что отправка каждого сообщения чатом на сервер через действия требует явного подтверждения пользователя.

Хотя в GPT-чате предусмотрена возможность отключить подтверждение отправки данных на соответствующий внешний сервер:
Мне так и не удалось добиться стабильного поведения, при котором данные отправлялись бы на сервер из чата без дополнительного подтверждения со стороны пользователя.
С другой стороны, пользователь имеет возможность видеть, какие данные чат отправляет во внешний сервис:
Моей основной мотивацией для создания демо-чата и демо-приложения было исследование возможности регистрации новых пользователей через GPT-чат исключительно с использованием голосового взаимодействия.
В целом, эксперимент можно считать успешным:
Интеллектуальных возможностей GPT-чата более чем достаточно для распознавания запросов пользователя и подготовки данных в нужном формате для взаимодействия с внешним веб-сервисом через действия.
Идентификация пользователей с помощью числового PIN облегчает его ввод голосом. Для крупных веб-приложений с охватом миллионов пользователей это может потребовать шестизначных или более длинных PIN-кодов, но для небольших проектов вполне достаточно четырёх цифр.
Что касается паролей, голосовой ввод позволяет создавать достаточно длинные пароли, хотя и без использования специальных символов.
Самая большая сложность — подтверждение через email. Некоторые адреса сложно продиктовать голосом, их проще вводить вручную. В таких случаях было бы удобнее использовать подтверждение через номер мобильного телефона с цифровым вводом, аналогично PIN.
Очевидно, что безопасность данных (PIN и паролей), хранящихся в чате, оставляет желать лучшего. Любой, кто получит доступ к вашему чату, сможет легко запросить секретную информацию.
В целом, я удовлетворён результатами эксперимента. Хотя область применения такой интеграции не слишком широка, использование аутентификации через OAuth может существенно повысить безопасность. Однако однонаправленность передачи данных (от чата к внешнему приложению) ограничивает возможности. Интересные перспективы открываются при совмещении GPT-чата с Telegram-ботами. На мой взгляд, широкое применение мессенджеров может со временем вытеснить Web Push API [8].
демо-чат [4]
веб-приложение [9]
Автор: flancer
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/e-ksperiment/404434
Ссылки в тексте:
[1] задумался: https://habr.com/ru/articles/842284/
[2] speech-to-text: https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8
[3] включая браузер: https://dictanote.co/voicein/
[4] CustomGPT Integration Demo: https://chatgpt.com/g/g-6751aefcfe308191b7fb3d4a2fef049b-customgpt-integration-demo
[5] user.demo.gpt.wiredgeese.com: https://user.demo.gpt.wiredgeese.com
[6] схемы: https://user.demo.gpt.wiredgeese.com/openapi.json
[7] многих странах: https://help.openai.com/en/articles/8983035-why-can-t-i-sign-up-due-to-unsupported-country
[8] Web Push API: https://developer.mozilla.org/en-US/docs/Web/API/Push_API
[9] веб-приложение: https://user.demo.gpt.wiredgeese.com/
[10] исходники веб-приложения: https://github.com/flancer64/demo-gpt-user
[11] Источник: https://habr.com/ru/articles/864598/?utm_campaign=864598&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.