• gpt
  • oauth
  • openai

Uwierzytelnienie użytkowników w działaniach GPT: Zbuduj osobistego asystenta agendy

Zbuduj spersonalizowane doświadczenie dla swoich użytkowników bezpośrednio w swoim GPT. Ten samouczek pokazuje, jak użyć OAuth do stworzenia osobistego asystenta agendy GPT.

Gao
Gao
Founder

GPTs są świetne do głębokiego dostosowywania doświadczenia ChatGPT do specyficznych zastosowań. Co więcej, pozwala to na bezpośrednią interakcję z twoimi usługami za pomocą działań.

W tym samouczku pokażemy, jak użyć OAuth do uwierzytelnienia użytkowników w działaniach w GPT. Zbudujemy osobistego asystenta agendy, który pozwoli użytkownikom zarządzać swoimi wydarzeniami bezpośrednio w GPT.

Końcowy GPT będzie wyglądał tak:

Lewa strona to interakcja użytkownika z GPT; prawa strona to aplikacja webowa, która pokazuje agendę użytkownika. Jest więcej możliwości z tym podejściem, takich jak:

  • Stworzenie osobistego asystenta, który pomaga użytkownikom przyswajać e-maile i wiadomości.
  • Stworzenie GPT do przeglądania i rezerwowania lotów bez opuszczania rozmowy.

Rezultaty i zasoby tego samouczka:

Wymagania wstępne

  • Na moment pisania tego tekstu, GPT są dostępne tylko dla użytkowników ChatGPT Plus i wyżej.
  • Tenant Logto Cloud. Zarejestruj się za darmo, jeśli jeszcze nie masz.
  • Domenę, którą możesz kontrolować. Będzie używana zarówno dla GPT, jak i Logto Cloud.
  • Aplikację webową, która może odsłaniać REST API. W tym samouczku użyjemy aplikacji do agendy wstępnie zbudowanej.

Tworzenie i konfiguracja GPT

Tworzenie GPT

  1. Otwórz ChatGPT, po lewej stronie kliknij przycisk Explore GPTs, następnie kliknij przycisk Create w prawym górnym rogu.
  2. Na nowej stronie GPT wprowadź nazwę i opis dla swojego GPT. Na przykład, Asystent Agendy i Zarządza twoją agendą bezpośrednio w rozmowie.
  3. Opcjonalnie możesz przesłać logo dla swojego GPT lub użyć DALL-E do wygenerowania jednego, klikając ikonę plusa.

Tworzenie działania

Kliknij przycisk Create new action na dole. Na nowej stronie są trzy sekcje:

  • Uwierzytelnienie: Ta sekcja pozwala skonfigurować, jak użytkownicy uwierzytelniają się w twoim działaniu. Na razie zostawiamy None.
  • Schemat: Schemat OpenAPI w formacie YAML, który definiuje REST API dla twojego działania. Im bardziej szczegółowy schemat, tym lepiej GPT może zrozumieć zamiar użytkownika.
  • Polityka prywatności: URL polityki prywatności dla twojego działania.

W tym samouczku mamy gotową aplikację do agendy, która udostępnia REST API do zarządzania agendą użytkownika. Możesz znaleźć schemat OpenAPI w repozytorium GitHub.

Po wklejeniu schematu, GPT automatycznie rozpozna punkty końcowe i wygeneruje dla Ciebie tabelę. Możesz kliknąć przycisk Test aby przetestować punkty końcowe.

Dodaj działania

GPT poprosi o twoją zgodę na wykonanie wywołania API. Kliknij przycisk Allow lub Always Allow, aby kontynuować.

Testowanie działań

Jeśli twój punkt końcowy wymaga uwierzytelnienia, zobaczysz komunikat o błędzie jak powyżej. Kiedy sprawdzimy logi serwera, możemy zobaczyć, że GPT wysyła żądanie bez żadnych informacji o uwierzytelnieniu.

Błąd testowania działań


Wywołanie API bez uwierzytelnienia

Konfiguracja niestandardowej domeny w Logto Cloud

ChatGPT wymaga, aby zarówno punkty końcowe działań, jak i punkty końcowe uwierzytelnienia były w tej samej domenie głównej. Na przykład, jeśli twój punkt końcowy działań to https://api.example.com/, to punkt końcowy uwierzytelnienia musi być czymś w rodzaju https://auth.example.com/.

Aby spełnić ten wymóg, musimy skonfigurować niestandardową domenę w Logto Cloud. Po zalogowaniu się do Logto Cloud, kliknij kartę Settings po lewej stronie, a następnie kliknij kartę Domains na górze.

Zwykle konfiguracja trwa tylko kilka minut. Po jej zakończeniu zobaczysz, że niestandardowa domena staje się In use.

Niestandardowa domena

Tworzenie aplikacji w Logto Cloud

Aby przeprowadzić uwierzytelnienie OAuth, musimy stworzyć aplikację w Logto Cloud. Po zalogowaniu się do Logto Cloud, kliknij kartę Applications po lewej stronie, a następnie kliknij przycisk Create application w prawym górnym rogu.

Na nowej stronie kliknij "Create app without framework" na dole. Wybierz "Traditional web" jako typ aplikacji i wprowadź nazwę dla swojej aplikacji, na przykład GPT Agenda Assistant. Następnie kliknij "Create application" na dole.

Po utworzeniu aplikacji przejdź do karty ENDPOINTS & CREDENTIALS (może trzeba przewinąć trochę w dół). Kliknij Show endpoint details, aby rozwinąć informacje.

Konfiguracja aplikacji Logto

Konfiguracja działania

Teraz przejdź z powrotem do strony działania GPT, kliknij sekcję Authentication, a następnie wybierz OAuth. Elementy formularza pasują do informacji w Logto Cloud w następujący sposób:

  • Client ID: App ID w Logto Cloud.
  • Client Secret: App secret w Logto Cloud.
  • Authorization URL: Authorization endpoint w Logto Cloud.
  • Token URL: Token endpoint w Logto Cloud.

Dla pola Scope wprowadź openid offline_access; dla pola "Token Exchange Method" pozostaw wartość domyślną (żądanie POST).

Konfiguracja uwierzytelnienia działania GPT

Na koniec kliknij przycisk Save na dole.

Aktualizacja konfiguracji aplikacji Logto

Wróć do strony konfiguracji GPT, teraz możesz zobaczyć pole Callback URL w sekcji Actions.

Skopiuj ten URL, a następnie wróć do strony aplikacji Logto Cloud. Wklej URL w sekcji Redirect URIs.

Aplikacja Logto, przekierowania URLs

Teraz przewiń na dół, przełącz pozycję Always issue Refresh Token, aby włączyć obsługę tokenów odświeżania dla GPT. To może pomóc użytkownikom pozostać zalogowanym przez dłuższy czas w GPT.

Następnie kliknij przycisk Save na dole.

Punkt kontrolny: Testowanie przepływu OAuth

Mamy teraz wszystko gotowe, przetestujmy przepływ OAuth, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami. Wróć do strony konfiguracji GPT, kliknij utworzone działanie, a następnie kliknij przycisk Test dla punktu końcowego listItems (ten pierwszy).

Sekcja podglądu poprosi o zalogowanie się. Kliknij przycisk Sign in with [nazwa twojego działania], a następnie zakończ przepływ OAuth.

Testowanie monitu o zalogowanie

Możesz dostosować doświadczenie logowania, takie jak brandowanie i metody logowania w Logto Cloud. Aby uzyskać więcej informacji, odnieś się do 🎨 Customize sign-in experience.

Jeśli wszystko działa zgodnie z oczekiwaniami, twój serwer backend powinien otrzymać żądanie z tokenem dostępu w nagłówku Authorization. W naszym przypadku, serwer backend to aplikacja do agendy. Zwróci on agendę użytkownika w treści odpowiedzi:

Sukces wywołania API testu

Niesamowite jest to, że nasz schemat OpenAPI jest na tyle szczegółowy, że GPT może wykonać wywołanie API bez jakichkolwiek dodatkowych konfiguracji. Na przykład, jeśli klikniesz przycisk Test dla punktu końcowego createItems, zobaczysz, że GPT generuje dla ciebie body żądania (lub prosi o dostarczenie brakujących informacji, w zależności od jego nastroju).

Testowanie tworzenia API

Walidacja tokenu dostępu

Z działającym przepływem OAuth, możemy teraz zweryfikować token dostępu w usługach backend, aby upewnić się, że żądanie pochodzi od uwierzytelnionego użytkownika. Jako że Logto jest dostawcą OIDC, możemy użyć Userinfo endpoint do zweryfikowania tokenu dostępu. Punkt końcowy można znaleźć na stronie aplikacji Logto Cloud.

Wystarczy wysłać żądanie GET do punktu końcowego z tokenem dostępu w nagłówku Authorization. Jeśli token dostępu jest ważny, punkt końcowy zwróci informacje o użytkowniku w treści odpowiedzi. Oto przykład użycia Node.js:

Możesz znaleźć pełny kod w repozytorium GitHub.

Bonus: Synchronizacja w czasie rzeczywistym z główną aplikacją

Możesz mieć własną aplikację do agendy, a dzięki uwierzytelnieniu możesz synchronizować agendę użytkownika w czasie rzeczywistym bez opuszczania rozmowy. Aby zobaczyć synchronizację w czasie rzeczywistym w akcji, możesz przejść do aplikacji webowej i zalogować się na to samo konto, które użyłeś w demo GPT.

Podsumowanie

Działania GPT mogą być potężnym narzędziem do budowania spersonalizowanych doświadczeń dla twoich użytkowników. Jeśli masz jakieś pytania lub uwagi, zapraszamy do dołączenia do naszej Discord server do dyskusji.