Русский
  • gpt
  • oauth
  • openai

Аутентификация пользователей в действиях GPT: создание персонального помощника по расписанию

Создайте персонализированный опыт для ваших пользователей непосредственно в GPT. В этом руководстве показано, как использовать OAuth для создания персонального помощника по расписанию GPT.

Gao
Gao
Founder

GPTs отлично подходят для глубокого кастомизации опыта ChatGPT для конкретных случаев использования. Более того, они позволяют вам напрямую взаимодействовать с вашими сервисами, используя действия.

В этом руководстве мы покажем вам, как использовать OAuth для аутентификации пользователей в действиях ваших GPTs. Мы создадим персонального помощника по расписанию, который позволит пользователям управлять своими событиями непосредственно в GPT.

Итоговый GPT будет выглядеть так:

Слева - взаимодействие пользователя с GPT; справа - веб-приложение, которое показывает расписание пользователя. С помощью этого подхода доступны и другие возможности, такие как:

  • Создание персонального помощника, который помогает пользователям усваивать электронные письма и новости.
  • Создание GPT для поиска и бронирования авиабилетов без выхода из беседы.

Результаты и ресурсы этого руководства:

  • Итоговый GPT доступен на ChatGPT.
  • Демонстрационное веб-приложение доступно на gpt-agenda.fordemo.app.
  • Полный код доступен на GitHub.

Предварительные требования

  • На момент написания GPT доступны только для пользователей ChatGPT Plus и выше.
  • Тенант Logto Cloud. Зарегистрируйтесь бесплатно, если у вас его нет.
  • Домен, который вы можете контролировать. Он будет использоваться как для GPT, так и для Logto Cloud.
  • Веб-приложение, которое может открывать REST API. В этом руководстве мы используем заранее построенное приложение для управления расписанием.

Создание и настройка GPT

Создание GPT

  1. Откройте ChatGPT, слева нажмите кнопку Explore GPTs, затем нажмите кнопку Create в правом верхнем углу.
  2. На новой странице GPT введите имя и описание для вашего GPT. Например, Помощник по расписанию и Управляет вашим расписанием непосредственно в беседе.
  3. Вы можете загрузить логотип для вашего GPT или использовать DALL-E, чтобы создать его, нажав на значок плюс.

Создание действия

Нажмите кнопку Создать новое действие внизу. На новой странице есть три раздела:

  • Аутентификация: Этот раздел позволяет настроить, как пользователи проходят аутентификацию с вашим действием. Оставьте Нет пока что.
  • Схема: OpenAPI схема в формате YAML, определяющая REST API для вашего действия. Чем более детализирована схема, тем лучше GPT может понять намерения пользователя.
  • Политика конфиденциальности: URL политики конфиденциальности для вашего действия.

В этом руководстве у нас есть заранее построенное приложение для управления расписанием, которое открывает REST API для управления расписанием пользователя. Вы можете найти OpenAPI схему в репозитории GitHub.

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

Добавить действия

GPT запросит ваше разрешение на выполнение вызова API. Нажмите кнопку Разрешить или Всегда разрешать, чтобы продолжить.

Тестировать действия

Если ваша конечная точка требует аутентификации, вы увидите сообщение об ошибке, как выше. Когда мы проверяем логи сервера, мы видим, что GPT отправляет запрос без какой-либо информации о аутентификации.

Ошибка теста действий


Вызов API без аутентификации

Настроить пользовательский домен в Logto Cloud

ChatGPT требует, чтобы как действия, так и конечные точки аутентификации находились на одном корневом домене. Например, если конечная точка ваших действий - https://api.example.com/, тогда конечная точка аутентификации должна быть что-то вроде https://auth.example.com/.

Чтобы соответствовать этому требованию, нам нужно настроить пользовательский домен в Logto Cloud. После входа в Logto Cloud нажмите вкладку Настройки слева, затем вкладку Домены сверху.

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

Пользовательский домен

Создать приложение в Logto Cloud

Чтобы выполнить аутентификацию OAuth, нам нужно создать приложение в Logto Cloud. После входа в Logto Cloud нажмите вкладку Приложения слева, затем нажмите кнопку Создать приложение в правом верхнем углу.

На новой странице нажмите "Создать приложение без фреймворка" внизу. Выберите "Традиционное веб" в виде типа приложения и введите имя для вашего приложения, например, GPT Помощник по расписанию. Затем нажмите "Создать приложение" внизу.

После создания приложения перейдите к карточке ENDPOINTS & CREDENTIALS (возможно, вам потребуется немного прокрутить вниз). Нажмите Показать детали конечной точки, чтобы развернуть информацию.

Конфигурация приложения Logto

Настроить действие

Теперь вернитесь на страницу действий GPT, нажмите раздел Аутентификация, затем выберите OAuth. Элементы формы соответствуют информации в Logto Cloud следующим образом:

  • ID клиента: ID приложения в Logto Cloud.
  • Секрет клиента: Секрет приложения в Logto Cloud.
  • URL авторизации: Конечная точка авторизации в Logto Cloud.
  • URL токена: Конечная точка токена в Logto Cloud.

Для поля Объем введите openid offline_access; для поля "Метод обмена токенами" оставьте значение по умолчанию (POST запрос).

Конфигурация аутентификации действий GPT

Наконец, нажмите кнопку Сохранить внизу.

Обновить конфигурацию приложения Logto

Вернитесь на страницу конфигурации GPT, и теперь вы увидите поле URL обратного вызова в разделе Действия.

Скопируйте этот URL, затем вернитесь на страницу приложения Logto Cloud. Вставьте URL в раздел URI переадресации.

URI переадресации приложения Logto

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

Затем нажмите кнопку Сохранить внизу.

Контрольная точка: протестируйте поток OAuth

Теперь у нас всё готово, давайте протестируем поток OAuth, чтобы убедиться, что все работает как ожидалось. Вернитесь на страницу конфигурации GPT, нажмите действие, которое мы создали, затем нажмите кнопку Тест для конечной точки listItems (первая).

В разделе предварительного просмотра вас попросят войти в систему. Нажмите кнопку Войти с [вашим именем действия], затем завершите поток OAuth.

Тестовые подсказки для входа

Вы можете настроить опыт входа, например брендинг и методы входа, в Logto Cloud. Для получения дополнительной информации, пожалуйста, обращайтесь к 🎨 Настроить опыт входа.

Если всё работает как ожидалось, ваш сервер на заднем плане должен получить запрос с токеном доступа в заголовке Authorization. В нашем случае сервер на заднем фоне - это приложение для управления расписанием. Он вернет расписание пользователя в теле ответа:

Тест успешно API

Удивительно, так как наша схема OpenAPI достаточно детальна, GPT может выполнять вызов API без какой-либо дополнительной настройки. Например, если вы нажмете кнопку Тест для конечной точки createItems, вы увидите, что GPT генерирует для вас тело запроса (или попросит вас предоставить недостающую информацию, в зависимости от его настроения).

Тест API создания

Проверка токена доступа

С работающим потоком OAuth мы теперь можем проверить токен доступа в серверных службах, чтобы убедиться, что запрос исходит от аутентифицированного пользователя. Поскольку Logto является провайдером OIDC, мы можем использовать конечную точку Userinfo для проверки токена доступа. Конечная точка может быть найдена на странице приложения Logto Cloud.

Просто отправьте GET запрос на конечную точку с токеном доступа в заголовке Authorization. Если токен доступа действителен, конечная точка вернет информацию о пользователе в теле ответа. Вот пример, использующий Node.js:

Вы можете найти полный код в репозитории GitHub.

Бонус: Синхронизация в реальном времени с основным приложением

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

Заключение

Действия GPT могут быть мощным инструментом для создания персонализированного опыта для ваших пользователей. Если у вас есть какие-либо вопросы или отзывы, пожалуйста, присоединяйтесь к нашему серверу Discord для обсуждения.