Autenticar usuários em ações GPT: Construa um assistente de agenda pessoal
Construa uma experiência personalizada para seus usuários diretamente no seu GPT. Este tutorial mostra como usar OAuth para criar um assistente de agenda pessoal GPT.
Construa uma experiência personalizada para seus usuários diretamente no seu GPT. Este tutorial mostra como usar OAuth para criar um assistente de agenda pessoal GPT.
GPTs são ótimos para personalizar profundamente a experiência do ChatGPT para casos de uso específicos. Melhor ainda, ele permite interagir diretamente com seus serviços usando ações.
Neste tutorial, vamos mostrar como usar OAuth para autenticar usuários nas ações do seu GPT. Vamos construir um assistente de agenda pessoal que permite aos usuários gerenciar seus eventos diretamente no GPT.
O GPT final ficará assim:
O lado esquerdo é a interação do usuário com o GPT; o lado direito é o aplicativo web que mostra a agenda do usuário. Existem mais possibilidades com essa abordagem, como:
Os resultados e recursos deste tutorial:
Clique no botão Create new action na parte inferior. Na nova página, há três seções:
Neste tutorial, temos um aplicativo de agenda pré-construído que expõe APIs REST para gerenciar a agenda do usuário. Você pode encontrar o esquema OpenAPI no repositório do GitHub.
Assim que você colar o esquema, o GPT reconhecerá automaticamente os endpoints e gerará uma tabela para você. Você pode clicar no botão Test para testar os endpoints.

O GPT solicitará sua autorização para realizar a chamada da API. Clique no botão Allow ou Always Allow para continuar.

Se o seu endpoint exigir autenticação, você verá uma mensagem de erro como a acima. Quando verificamos os logs do servidor, podemos ver que o GPT está enviando a solicitação sem qualquer informação de autenticação.


O ChatGPT requer que tanto os endpoints de ações quanto de autenticação estejam no mesmo domínio raiz. Por exemplo, se o seu endpoint de ações for https://api.example.com/, o endpoint de autenticação deve ser algo como https://auth.example.com/.
Para atender a esse requisito, precisamos configurar um domínio personalizado no Logto Cloud. Após fazer login no Logto Cloud, clique na guia Settings no lado esquerdo, depois clique na guia Domains na parte superior.
Normalmente, leva apenas alguns minutos para completar a configuração. Assim que for concluído, você verá que o domínio personalizado tornou-se In use.

Para realizar a autenticação OAuth, precisamos criar um aplicativo no Logto Cloud. Após fazer login no Logto Cloud, clique na guia Applications no lado esquerdo, depois clique no botão Create application no canto superior direito.
Na nova página, clique em "Create app without framework" na parte inferior. Escolha "Traditional web" como o tipo de aplicação e digite um nome para o seu aplicativo, por exemplo, GPT Agenda Assistant. Em seguida, clique em "Create application" na parte inferior.
Depois que o aplicativo for criado, navegue até o cartão ENDPOINTS & CREDENTIALS (pode ser necessário rolar um pouco para baixo). Clique em Show endpoint details para expandir a informação.

Agora, navegue de volta para a página de ações do GPT, clique na seção Authentication, depois escolha OAuth. Os itens do formulário correspondem à informação no Logto Cloud da seguinte forma:
Para o campo Scope, digite openid offline_access; para o campo "Token Exchange Method", mantenha o valor padrão (requisição POST).
Finalmente, clique no botão Save na parte inferior.
Volte para a página de configuração do GPT, agora você pode ver um campo Callback URL na seção Actions.
Copie essa URL, depois volte para a página do aplicativo Logto Cloud. Cole a URL na seção Redirect URIs.

Agora, role para baixo até o final, ative Always issue Refresh Token para habilitar o suporte a token de atualização para o GPT. Isso pode ajudar seus usuários a permanecerem conectados por mais tempo no GPT.
Em seguida, clique no botão Save na parte inferior.
Agora temos tudo pronto, vamos testar o fluxo OAuth para garantir que tudo esteja funcionando conforme esperado. Volte para a página de configuração do GPT, clique na ação que criamos, depois clique no botão Test para o endpoint listItems (o primeiro).
A seção de visualização solicitará que você faça login. Clique no botão Sign in with [nome da sua ação], depois conclua o fluxo OAuth.

Você pode personalizar a experiência de login, como a marca e os métodos de login no Logto Cloud. Para mais informações, por favor, consulte 🎨 Customize sign-in experience.
Se tudo estiver funcionando conforme esperado, seu servidor de backend deve receber uma solicitação com o token de acesso no cabeçalho Authorization. No nosso caso, o servidor de backend é o aplicativo de agenda. Ele retornará a agenda do usuário no corpo da resposta:

Incrivelmente, como nosso esquema OpenAPI é detalhado o suficiente, o GPT pode realizar a chamada da API sem qualquer configuração adicional. Por exemplo, se você clicar no botão Test para o endpoint createItems, verá que o GPT está gerando o corpo da solicitação para você (ou pedindo para você fornecer a informação faltante, dependendo do seu humor).

Com o fluxo OAuth funcionando, podemos agora validar o token de acesso nos serviços de backend para garantir que a solicitação esteja vindo de um usuário autenticado. Como o Logto é um provedor OIDC, podemos usar o Userinfo endpoint para validar o token de acesso. O endpoint pode ser encontrado na página do aplicativo Logto Cloud.
Basta enviar uma requisição GET para o endpoint com o token de acesso no cabeçalho Authorization. Se o token de acesso for válido, o endpoint retornará as informações do usuário no corpo da resposta. Aqui está um exemplo usando Node.js:
Você pode encontrar o código completo no repositório do GitHub.
Você pode ter seu próprio aplicativo de agenda e, com autenticação, pode sincronizar a agenda do usuário em tempo real sem sair da conversa. Para ver a sincronização em tempo real em ação, você pode acessar o aplicativo web e fazer login com a mesma conta que você usou no GPT de demonstração.
As ações GPT podem ser uma ferramenta poderosa para construir uma experiência personalizada para seus usuários. Se você tiver alguma dúvida ou feedback, sinta-se à vontade para participar do nosso servidor Discord para discussão.