Nederlands
  • gpt
  • oauth
  • openai

Verifieer gebruikers in GPT-acties: Bouw een persoonlijke agenda-assistent

Bouw een gepersonaliseerde ervaring voor je gebruikers direct in je GPT. Deze tutorial laat je zien hoe je OAuth kunt gebruiken om een persoonlijke agenda-assistent GPT te creëren.

Gao
Gao
Founder

GPTs zijn geweldig om de ChatGPT-ervaring diepgaand aan te passen voor specifieke gebruikssituaties. Nog beter, het stelt je in staat om direct met je services te communiceren via acties.

In deze tutorial laten we zien hoe je OAuth kunt gebruiken om gebruikers in je GPT-acties te verifiëren. We bouwen een persoonlijke agenda-assistent waarmee gebruikers hun evenementen direct in de GPT kunnen beheren.

De uiteindelijke GPT ziet er als volgt uit:

De linkerkant is de interactie van de gebruiker met de GPT; de rechterkant is de webapp die de agenda van de gebruiker weergeeft. Er zijn meer mogelijkheden met deze benadering, zoals:

  • Maak een persoonlijke assistent die gebruikers helpt e-mails en nieuws te verwerken.
  • Maak een GPT om te bladeren en vluchten te boeken zonder het gesprek te verlaten.

De resultaten en bronnen van deze tutorial:

Vereisten

  • Vanaf dit schrijven zijn GPTs alleen beschikbaar voor ChatGPT Plus en hogere gebruikers.
  • Een Logto Cloud-tenant. Meld je aan voor gratis als je er nog geen hebt.
  • Een domein dat je kunt beheren. Het wordt gebruikt voor zowel de GPT als Logto Cloud.
  • Een webapp die REST API's kan blootstellen. In deze tutorial gebruiken we de vooraf gebouwde agenda-app.

Maak en configureer de GPT

Maak een GPT

  1. Open ChatGPT, klik links op de knop Verken GPTs en klik vervolgens op de knop Maak in de rechterbovenhoek.
  2. Voer op de nieuwe GPT-pagina een naam en beschrijving in voor je GPT. Bijvoorbeeld, Agenda Assistent en Beheert je agenda direct in het gesprek.
  3. Je kunt optioneel een logo voor je GPT uploaden, of DALL-E gebruiken om er een voor je te laten genereren door op het pluspictogram te klikken.

Maak een actie

Klik op de knop Maak nieuwe actie onderaan. Op de nieuwe pagina zijn er drie secties:

  • Authenticatie: In deze sectie kun je configureren hoe gebruikers zich authenticeren met je actie. We laten het voor nu op Geen.
  • Schema: Het OpenAPI schema in YAML-formaat dat de REST API's voor je actie definieert. Hoe gedetailleerder het schema is, hoe beter de GPT de intentie van de gebruiker kan begrijpen.
  • Privacybeleid: De URL van het privacybeleid voor je actie.

In deze tutorial hebben we een vooraf gebouwde agenda-app die REST API's blootstelt voor het beheren van de agenda van de gebruiker. Je kunt het OpenAPI-schema vinden in de GitHub-repo.

Zodra je het schema plakt, herkent de GPT automatisch de eindpunten en genereert een tabel voor je. Je kunt op de knop Testen klikken om de eindpunten te testen.

Acties toevoegen

De GPT zal om je toestemming vragen om de API-aanroep uit te voeren. Klik op de knop Toestaan of Altijd Toestaan om door te gaan.

Acties testen

Als je eindpunt authenticatie vereist, zie je een foutmelding zoals hierboven. Wanneer we de serverlogboeken controleren, zien we dat de GPT het verzoek verzendt zonder enige authenticatie-informatie.

Fout bij testen van acties


API-aanroep zonder authenticatie

Configureer een aangepast domein in Logto Cloud

ChatGPT vereist dat zowel de acties als de authenticatie-eindpunten in hetzelfde hoofddomein zitten. Bijvoorbeeld, als je acties-eindpunt https://api.example.com/ is, dan moet het authenticatie-eindpunt iets zijn als https://auth.example.com/.

Om aan deze eis te voldoen, moeten we een aangepast domein configureren in Logto Cloud. Nadat je bent aangemeld bij Logto Cloud, klik je op het tabblad Instellingen links en klik je vervolgens op het tabblad Domeinen bovenaan.

Gewoonlijk duurt het slechts een paar minuten om de configuratie te voltooien. Zodra het is voltooid, zie je dat het aangepaste domein in gebruik is.

Aangepast domein

Maak een app in Logto Cloud

Om OAuth-authenticatie uit te voeren, moeten we een app maken in Logto Cloud. Nadat je bent aangemeld bij Logto Cloud, klik je op het tabblad Toepassingen links en klik je vervolgens op de knop Applicatie maken rechtsboven.

Op de nieuwe pagina klik je onderaan op "App maken zonder framework". Kies "Traditioneel web" als het applicatietype en voer een naam in voor je app, bijvoorbeeld GPT Agenda Assistent. Klik vervolgens onderaan op "Applicatie maken".

Nadat de app is gemaakt, navigeer je naar de kaart EINDPUNTEN & INLOGGEGEVENS (je moet mogelijk een beetje naar beneden scrollen). Klik op Eindpuntgegevens weergeven om de informatie uit te breiden.

Logto app config

Configureer de actie

Navigeer nu terug naar de GPT-actiepagina, klik op de sectie Authenticatie, en kies vervolgens OAuth. De formulieritems komen overeen met de informatie in Logto Cloud zoals volgt:

  • Client-ID: De App-ID in Logto Cloud.
  • Clientgeheim: Het Appgeheim in Logto Cloud.
  • Autorisatie-URL: Het Autorisatie-eindpunt in Logto Cloud.
  • Token-URL: Het Token-eindpunt in Logto Cloud.

Voor het veld Scope, voer openid offline_access in; voor het veld "Tokenuitwisselingsmethode", houd de standaardwaarde (POST-verzoek) aan.

GPT-actie authenticatieconfiguratie

Klik ten slotte op de knop Opslaan onderaan.

Update Logto app configuratie

Ga terug naar de GPT-configuratiepagina, nu zie je een veld Callback-URL onder de sectie Acties.

Kopieer die URL en ga dan terug naar de Logto Cloud app-pagina. Plak de URL in de sectie Omleidings-URI's.

Logto app omleidings-URI's

Scroll nu naar beneden, schakel Altijd Verversings-Token uitgeven in om verversings-tokenondersteuning in te schakelen voor GPT. Dit kan je gebruikers helpen ingelogd te blijven voor een langere tijd in de GPT.

Klik dan op de knop Opslaan onderaan.

Controlepunt: Test de OAuth-flow

Nu we alles gereed hebben, laten we de OAuth-flow testen om ervoor te zorgen dat alles werkt zoals verwacht. Ga terug naar de GPT-configuratiepagina, klik op de actie die we hebben gemaakt, en klik vervolgens op de knop Testen voor het listItems-eindpunt (de eerste).

Het voorbeeldvenster vraagt je om in te loggen. Klik op de knop Inloggen met [je actienaam] en voltooi de OAuth-flow.

Test aanmeldingsprompt

Je kunt de aanmeldingservaring aanpassen, zoals de branding en de aanmeldingsmethoden in de Logto Cloud. Voor meer informatie, zie 🎨 Aanmeldingservaring aanpassen.

Als alles werkt zoals verwacht, zou je backend-server een verzoek moeten ontvangen met de toegangstoken in de Authorization header. In ons geval is de backend-server de agenda-app. Het zal de agenda van de gebruiker retourneren in de responsebody:

Test API succes

Verbazingwekkend genoeg, omdat ons OpenAPI-schema gedetailleerd genoeg is, kan de GPT de API-aanroep uitvoeren zonder enige extra configuratie. Bijvoorbeeld, als je op de knop Testen klikt voor het createItems-eindpunt, zie je dat de GPT het verzoeklichaam voor je genereert (of je vraagt om de ontbrekende informatie te verstrekken, afhankelijk van zijn gemoedstoestand).

Test API creëren

Valideer toegangstoken

Met de werkende OAuth-flow kunnen we nu het toegangstoken in backend-services valideren om ervoor te zorgen dat het verzoek afkomstig is van een geauthenticeerde gebruiker. Aangezien Logto een OIDC-provider is, kunnen we het Userinfo-eindpunt gebruiken om het toegangstoken te valideren. Het eindpunt kan worden gevonden op de Logto Cloud app-pagina.

Stuur eenvoudigweg een GET-verzoek naar het eindpunt met het toegangstoken in de Authorization header. Als het toegangstoken geldig is, zal het eindpunt de informatie van de gebruiker teruggeven in de responsebody. Hier is een voorbeeld met Node.js:

Je kunt de volledige code vinden in de GitHub-repo.

Bonus: Realtime synchronisatie met de hoofdapp

Je hebt mogelijk je eigen agenda-app, en met authenticatie kun je de agenda van de gebruiker in realtime synchroniseren zonder het gesprek te verlaten. Om de realtime synchronisatie in actie te zien, kun je naar de webapp gaan en inloggen met hetzelfde account dat je in de demo GPT hebt gebruikt.

Conclusie

GPT-acties kunnen een krachtig hulpmiddel zijn om een gepersonaliseerde ervaring voor je gebruikers te creëren. Als je vragen of feedback hebt, voel je vrij om deel te nemen aan onze Discord-server voor discussie.