Autenticare gli utenti nelle azioni GPT: Costruisci un assistente personale per l'agenda
Costruisci un'esperienza personalizzata per i tuoi utenti direttamente nel tuo GPT. Questo tutorial ti mostra come usare OAuth per creare un assistente personale per l'agenda GPT.
I GPT sono ottimi per personalizzare profondamente l'esperienza di ChatGPT per usi specifici. Ancora meglio, ti permettono di interagire direttamente con i tuoi servizi utilizzando le azioni.
In questo tutorial, ti mostreremo come usare OAuth per autenticare gli utenti nelle azioni dei tuoi GPT. Costruiremo un assistente personale per l'agenda che permetterà agli utenti di gestire i loro eventi direttamente nel GPT.
Il GPT finale sembrerà così:
Sul lato sinistro c'è l'interazione dell'utente con il GPT; sul lato destro c'è l'app web che mostra l'agenda dell'utente. Ci sono più possibilità con questo approccio, come:
- Creare un assistente personale che aiuta gli utenti a assimilare email e notizie.
- Creare un GPT per navigare e prenotare voli senza lasciare la conversazione.
I risultati e le risorse di questo tutorial:
- Il GPT finale è disponibile su ChatGPT.
- L'app web demo è disponibile su gpt-agenda.fordemo.app.
- Il codice completo è disponibile su GitHub.
Prerequisiti
- Al momento della stesura, i GPT sono disponibili solo per gli utenti di ChatGPT Plus e superiori.
- Un tenant di Logto Cloud. Registrati gratuitamente se non ne hai uno.
- Un dominio che puoi controllare. Verrà utilizzato sia per il GPT che per Logto Cloud.
- Un'app web che può esporre API REST. In questo tutorial, utilizzeremo l'app agenda pre-costruita.
Creare e configurare il GPT
Creare un GPT
- Apri ChatGPT, sul lato sinistro, clicca sul pulsante Esplora GPT, poi clicca sul pulsante Crea in alto a destra.
- Nella pagina del nuovo GPT, inserisci un nome e una descrizione per il tuo GPT. Ad esempio, Agenda Assistant e Gestisce la tua agenda direttamente nella conversazione.
- Puoi opzionalmente caricare un logo per il tuo GPT, oppure utilizzare DALL-E per generarne uno cliccando sull'icona più.
Creare un'azione
Clicca sul pulsante Crea nuova azione in basso. Nella nuova pagina, ci sono tre sezioni:
- Autenticazione: Questa sezione ti permette di configurare come gli utenti si autenticano con la tua azione. Lasciamo Nessuna per ora.
- Schema: Lo schema OpenAPI in formato YAML che definisce le API REST per la tua azione. Più dettagliato è lo schema, meglio il GPT può comprendere l'intento dell'utente.
- Politica sulla privacy: L'URL della politica sulla privacy per la tua azione.
In questo tutorial, abbiamo un'app agenda pre-costruita che espone API REST per gestire l'agenda dell'utente. Puoi trovare lo schema OpenAPI nel repo GitHub.
Una volta incollato lo schema, il GPT riconoscerà automaticamente gli endpoint e genererà una tabella per te. Puoi cliccare sul pulsante Test per testare gli endpoint.
Il GPT chiederà il tuo consenso per eseguire la chiamata API. Clicca sul pulsante Consenti o Sempre Consenti per continuare.
Se il tuo endpoint richiede l'autenticazione, vedrai un messaggio di errore come sopra. Quando controlliamo i log del server, possiamo vedere che il GPT sta inviando la richiesta senza nessuna informazione di autenticazione.
Configurare il dominio personalizzato in Logto Cloud
ChatGPT richiede che sia le azioni che gli endpoint di autenticazione siano nello stesso dominio radice. Ad esempio, se il tuo endpoint delle azioni è https://api.example.com/
, allora l'endpoint di autenticazione deve essere qualcosa come https://auth.example.com/
.
Per rispettare questo requisito, dobbiamo configurare un dominio personalizzato in Logto Cloud. Dopo aver effettuato l'accesso a Logto Cloud, clicca sulla scheda Impostazioni sul lato sinistro, quindi clicca sulla scheda Domini in alto.
Di solito ci vogliono solo pochi minuti per completare la configurazione. Una volta terminata, vedrai che il dominio personalizzato diventerà In uso.
Creare un'app in Logto Cloud
Per eseguire l'autenticazione OAuth, dobbiamo creare un'app in Logto Cloud. Dopo aver effettuato l'accesso a Logto Cloud, clicca sulla scheda Applicazioni sul lato sinistro, quindi clicca sul pulsante Crea applicazione in alto a destra.
Nella nuova pagina, clicca su "Crea app senza framework" in basso. Scegli "Web tradizionale" come tipo di applicazione e inserisci un nome per la tua app, ad esempio, Assistente Agenda GPT. Quindi clicca su "Crea applicazione" in basso.
Dopo che l'app è stata creata, naviga fino alla scheda ENDPOINT E CREDENZIALI (potrebbe essere necessario scorrere un po' verso il basso). Clicca su Mostra dettagli endpoint per espandere le informazioni.
Configurare l'azione
Ora, torna alla pagina delle azioni GPT, clicca sulla sezione Autenticazione, quindi scegli OAuth. Gli elementi del modulo corrispondono alle informazioni nel Logto Cloud come segue:
- ID Cliente: L'ID App in Logto Cloud.
- Segreto Cliente: Il Segreto App in Logto Cloud.
- URL Autorizzazione: L'Endpoint Autorizzazione in Logto Cloud.
- URL Token: L'Endpoint Token in Logto Cloud.
Per il campo Ambito, inserisci openid offline_access
; per il campo "Metodo di scambio token", mantieni il valore predefinito (richiesta POST).
Infine, clicca sul pulsante Salva in basso.
Aggiornare la configurazione dell'app Logto
Torna alla pagina di configurazione del GPT, ora puoi vedere un campo URL di callback nella sezione Azioni.
Copia quell'URL, quindi torna alla pagina dell'app Logto Cloud. Incolla l'URL nella sezione URI di reindirizzamento.
Ora, scorri fino in fondo, attiva l'opzione Emetti sempre il token di aggiornamento per abilitare il supporto al token di aggiornamento per GPT. Questo può aiutare i tuoi utenti a rimanere connessi per un tempo più lungo nel GPT.
Quindi clicca sul pulsante Salva in basso.
Punto di controllo: Testare il flusso OAuth
Ora abbiamo tutto pronto, testiamo il flusso OAuth per assicurarci che tutto funzioni come previsto. Torna alla pagina di configurazione del GPT, clicca sull'azione che abbiamo creato, quindi clicca sul pulsante Test per l'endpoint listItems (il primo).
La sezione di anteprima ti richiederà di accedere. Clicca sul pulsante Accedi con [il nome della tua azione], poi completa il flusso OAuth.
Puoi personalizzare l'esperienza di accesso come il branding e i metodi di accesso nel Logto Cloud. Per ulteriori informazioni, consulta 🎨 Personalizzare l'esperienza di accesso.
Se tutto funziona come previsto, il tuo server backend dovrebbe ricevere una richiesta con il token di accesso nell'intestazione Authorization
. Nel nostro caso, il server backend è l'app agenda. Restituirà l'agenda dell'utente nel corpo della risposta:
Incredibilmente, poiché il nostro schema OpenAPI è abbastanza dettagliato, il GPT può eseguire la chiamata API senza nessuna configurazione aggiuntiva. Ad esempio, se clicchi sul pulsante Test per l'endpoint createItems, vedrai che il GPT sta generando il corpo della richiesta per te (o ti chiederà di fornire le informazioni mancanti, dipende dal suo umore).
Convalida del token di accesso
Con il flusso OAuth funzionante, possiamo ora convalidare il token di accesso nei servizi backend per assicurarci che la richiesta provenga da un utente autenticato. Poiché Logto è un provider OIDC, possiamo utilizzare l'endpoint Userinfo per convalidare il token di accesso. L'endpoint può essere trovato nella pagina dell'app Logto Cloud.
Basta inviare una richiesta GET all'endpoint con il token di accesso nell'intestazione Authorization
. Se il token di accesso è valido, l'endpoint restituirà le informazioni dell'utente nel corpo della risposta. Ecco un esempio utilizzando Node.js:
Puoi trovare il codice completo nel repo GitHub.
Bonus: Sincronizzazione in tempo reale con l'app principale
Potresti avere la tua app agenda, e con l'autenticazione, puoi sincronizzare l'agenda dell'utente in tempo reale senza lasciare la conversazione. Per vedere la sincronizzazione in tempo reale in azione, puoi andare all'app web e accedere con lo stesso account utilizzato nel demo GPT.
Conclusione
Le azioni GPT possono essere uno strumento potente per costruire un'esperienza personalizzata per i tuoi utenti. Se hai domande o feedback, sentiti libero di unirti al nostro server Discord per la discussione.