Аутентификация пользователей в действиях GPT: создание персонального помощника по расписанию
Создайте персонализированный опыт для ваших пользователей непосредственно в GPT. В этом руководстве показано, как использовать OAuth для создания персонального помощника по расписанию GPT.
GaoFounder
Хватит тратить недели на аутентификацию пользователей
Запускайте безопасные приложения быстрее с Logto. Интегрируйте аутентификацию пользователей за считанные минуты и сосредоточьтесь на вашем основном продукте.
GPTs отлично подходят для глубокого кастомизации опыта ChatGPT для конкретных случаев использования. Более того, они позволяют вам напрямую взаимодействовать с вашими сервисами, используя действия.
В этом руководстве мы покажем вам, как использовать OAuth для аутентификации пользователей в действиях ваших GPTs. Мы создадим персонального помощника по расписанию, который позволит пользователям управлять своими событиями непосредственно в GPT.
Итоговый GPT будет выглядеть так:
Слева - взаимодействие пользователя с GPT; справа - веб-приложение, которое показывает расписание пользователя. С помощью этого подхода доступны и другие возможности, такие как:
Создание персонального помощника, который помогает пользователям усваивать электронные письма и новости.
Создание GPT для поиска и бронирования авиабилетов без выхода из беседы.
Нажмите кнопку Создать новое действие внизу. На новой странице есть три раздела:
Аутентификация: Этот раздел позволяет настроить, как пользователи проходят аутентификацию с вашим действием. Оставьте Нет пока что.
Схема: OpenAPI схема в формате YAML, определяющая REST API для вашего действия. Чем более детализирована схема, тем лучше GPT может понять намерения пользователя.
Политика конфиденциальности: URL политики конфиденциальности для вашего действия.
В этом руководстве у нас есть заранее построенное приложение для управления расписанием, которое открывает REST API для управления расписанием пользователя. Вы можете найти OpenAPI схему в репозитории GitHub.
После вставки схемы GPT автоматически распознает конечные точки и создаст для вас таблицу. Вы можете нажать кнопку Тест для тестирования конечных точек.
GPT запросит ваше разрешение на выполнение вызова API. Нажмите кнопку Разрешить или Всегда разрешать, чтобы продолжить.
Если ваша конечная точка требует аутентификации, вы увидите сообщение об ошибке, как выше. Когда мы проверяем логи сервера, мы видим, что GPT отправляет запрос без какой-либо информации о аутентификации.
ChatGPT требует, чтобы как действия, так и конечные точки аутентификации находились на одном корневом домене. Например, если конечная точка ваших действий - https://api.example.com/, тогда конечная точка аутентификации должна быть что-то вроде https://auth.example.com/.
Чтобы соответствовать этому требованию, нам нужно настроить пользовательский домен в Logto Cloud. После входа в Logto Cloud нажмите вкладку Настройки слева, затем вкладку Домены сверху.
Обычно настройка занимает лишь несколько минут. После ее завершения вы увидите, что пользовательский домен стал В использовании.
Чтобы выполнить аутентификацию OAuth, нам нужно создать приложение в Logto Cloud. После входа в Logto Cloud нажмите вкладку Приложения слева, затем нажмите кнопку Создать приложение в правом верхнем углу.
На новой странице нажмите "Создать приложение без фреймворка" внизу. Выберите "Традиционное веб" в виде типа приложения и введите имя для вашего приложения, например, GPT Помощник по расписанию. Затем нажмите "Создать приложение" внизу.
После создания приложения перейдите к карточке ENDPOINTS & CREDENTIALS (возможно, вам потребуется немного прокрутить вниз). Нажмите Показать детали конечной точки, чтобы развернуть информацию.
Теперь вернитесь на страницу действий GPT, нажмите раздел Аутентификация, затем выберите OAuth. Элементы формы соответствуют информации в Logto Cloud следующим образом:
ID клиента: ID приложения в Logto Cloud.
Секрет клиента: Секрет приложения в Logto Cloud.
URL авторизации: Конечная точка авторизации в Logto Cloud.
URL токена: Конечная точка токена в Logto Cloud.
Для поля Объем введите openid offline_access; для поля "Метод обмена токенами" оставьте значение по умолчанию (POST запрос).
Вернитесь на страницу конфигурации GPT, и теперь вы увидите поле URL обратного вызова в разделе Действия.
Скопируйте этот URL, затем вернитесь на страницу приложения Logto Cloud. Вставьте URL в раздел URI переадресации.
Теперь прокрутите вниз, включите Всегда выдавать токен обновления, чтобы поддерживать поддержку токена обновления для GPT. Это может помочь вашим пользователям оставаться вошедшими в систему дольше в GPT.
Теперь у нас всё готово, давайте протестируем поток OAuth, чтобы убедиться, что все работает как ожидалось. Вернитесь на страницу конфигурации GPT, нажмите действие, которое мы создали, затем нажмите кнопку Тест для конечной точки listItems (первая).
В разделе предварительного просмотра вас попросят войти в систему. Нажмите кнопку Войти с [вашим именем действия], затем завершите поток OAuth.
Вы можете настроить опыт входа, например брендинг и методы входа, в Logto Cloud. Для получения дополнительной информации, пожалуйста, обращайтесь к 🎨 Настроить опыт входа.
Если всё работает как ожидалось, ваш сервер на заднем плане должен получить запрос с токеном доступа в заголовке Authorization. В нашем случае сервер на заднем фоне - это приложение для управления расписанием. Он вернет расписание пользователя в теле ответа:
Удивительно, так как наша схема OpenAPI достаточно детальна, GPT может выполнять вызов API без какой-либо дополнительной настройки. Например, если вы нажмете кнопку Тест для конечной точки createItems, вы увидите, что GPT генерирует для вас тело запроса (или попросит вас предоставить недостающую информацию, в зависимости от его настроения).
С работающим потоком OAuth мы теперь можем проверить токен доступа в серверных службах, чтобы убедиться, что запрос исходит от аутентифицированного пользователя. Поскольку Logto является провайдером OIDC, мы можем использовать конечную точку Userinfo для проверки токена доступа. Конечная точка может быть найдена на странице приложения Logto Cloud.
Просто отправьте GET запрос на конечную точку с токеном доступа в заголовке Authorization. Если токен доступа действителен, конечная точка вернет информацию о пользователе в теле ответа. Вот пример, использующий Node.js:
Бонус: Синхронизация в реальном времени с основным приложением#
Возможно, у вас есть собственное приложение для управления расписанием, и с аутентификацией вы можете синхронизировать расписание пользователя в реальном времени, не выходя из беседы. Чтобы увидеть синхронизацию в реальном времени в действии, вы можете перейти к веб-приложению и войти в систему с той же учетной записью, которую вы использовали в демонстрационном GPT.
Действия GPT могут быть мощным инструментом для создания персонализированного опыта для ваших пользователей. Если у вас есть какие-либо вопросы или отзывы, пожалуйста, присоединяйтесь к нашему серверу Discord для обсуждения.