Português (Portugal)
  • gpt
  • oauth
  • openai

Autenticar utilizadores nas ações GPT: Criar um assistente de agenda pessoal

Construa uma experiência personalizada para os seus utilizadores diretamente no seu GPT. Este tutorial mostra como usar OAuth para criar um assistente de agenda pessoal GPT.

Gao
Gao
Founder

GPTs são ótimos para personalizar profundamente a experiência do ChatGPT para casos de uso específicos. Ainda melhor, permite que interajas diretamente com os teus serviços usando ações.

Neste tutorial, vamos mostrar como usar OAuth para autenticar utilizadores nas ações dos teus GPTs. Vamos construir um assistente de agenda pessoal que permite aos utilizadores gerirem os seus eventos diretamente no GPT.

O GPT final ficará assim:

O lado esquerdo é a interação do utilizador com o GPT; o lado direito é a aplicação web que mostra a agenda do utilizador. Existem mais possibilidades com esta abordagem, tais como:

  • Criar um assistente pessoal que ajude os utilizadores a digerir emails e notícias.
  • Criar um GPT para navegar e reservar voos sem sair da conversa.

Os resultados e recursos deste tutorial:

Pré-requisitos

  • Até à data, os GPTs estão disponíveis apenas para utilizadores do ChatGPT Plus e superiores.
  • Um inquilino do Logto Cloud. Inscreve-te gratuitamente se ainda não tiveres um.
  • Um domínio que possas controlar. Será utilizado tanto para o GPT como para o Logto Cloud.
  • Uma aplicação web que possa expor APIs REST. Neste tutorial, usaremos a aplicação de agenda pré-construída.

Criar e configurar o GPT

Criar um GPT

  1. Abre ChatGPT, no lado esquerdo, clica no botão Explore GPTs, depois clica no botão Create no canto superior direito.
  2. Na nova página do GPT, insere um nome e descrição para o teu GPT. Por exemplo, Assistente de Agenda e Gerencia a tua agenda diretamente na conversa.
  3. Podes opcionalmente carregar um logótipo para o teu GPT ou usar o DALL-E para gerar um para ti clicando no ícone de mais.

Criar uma ação

Clica no botão Create new action na parte inferior. Na nova página, há três seções:

  • Autenticação: Esta seção permite configurar como os utilizadores se autenticam com a tua ação. Deixamos como None por agora.
  • Esquema: O esquema OpenAPI em formato YAML que define as APIs REST para a tua ação. Quanto mais detalhado for o esquema, melhor o GPT poderá entender a intenção do utilizador.
  • Política de privacidade: URL da política de privacidade para a tua ação.

Neste tutorial, temos uma aplicação de agenda pré-construída que expõe APIs REST para gerir a agenda do utilizador. Podes encontrar o esquema OpenAPI no repositório do GitHub.

Uma vez que colas o esquema, o GPT reconhecerá automaticamente os endpoints e gerará uma tabela para ti. Podes clicar no botão Test para testar os endpoints.

Adicionar ações

O GPT pedirá a tua permissão para realizar a chamada à API. Clica no botão Allow ou Always Allow para continuar.

Testar ações

Se o teu endpoint requer autenticação, verás uma mensagem de erro como a acima. Quando verificamos os logs do servidor, podemos ver que o GPT está a enviar o pedido sem qualquer informação de autenticação.

Erro nas ações de teste


Chamada de API sem autenticação

Configurar domínio personalizado no Logto Cloud

O ChatGPT requer que tanto os endpoints de ações quanto os de autenticação estejam no mesmo domínio raiz. Por exemplo, se o teu endpoint de ações for https://api.example.com/, então o endpoint de autenticação deve ser algo como https://auth.example.com/.

Para cumprir este requisito, precisamos configurar um domínio personalizado no Logto Cloud. Depois de fazer login no Logto Cloud, clica na aba Settings no lado esquerdo, depois clica na aba Domains na parte superior.

Normalmente, leva apenas alguns minutos para completar a configuração. Uma vez concluída, verás o domínio personalizado tornar-se In use.

Domínio personalizado

Criar uma aplicação no Logto Cloud

Para realizar a autenticação OAuth, precisamos criar uma aplicação no Logto Cloud. Depois de fazer login no Logto Cloud, clica na aba Applications no lado esquerdo, depois clica no botão Create application no canto superior direito.

Na nova página, clica em "Create app without framework" na parte inferior. Escolhe "Traditional web" como tipo de aplicação e insere um nome para a tua aplicação, por exemplo, Assistente de Agenda do GPT. Depois clica em "Create application" na parte inferior.

Após a aplicação ser criada, navega até ao cartão ENDPOINTS & CREDENTIALS (podes precisar de descer um pouco). Clica em Show endpoint details para expandir a informação.

Configuração da app Logto

Configurar a ação

Agora, navega de volta para a página de ações do GPT, clica na seção Authentication, depois escolhe OAuth. Os itens do formulário correspondem à informação no Logto Cloud da seguinte forma:

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

Para o campo Scope, insere openid offline_access; para o campo "Token Exchange Method", mantém o valor padrão (pedido POST).

Configuração de autenticação de ação GPT

Finalmente, clica no botão Save na parte inferior.

Atualizar configuração da app Logto

Volta para a página de configuração do GPT, agora podes ver um campo Callback URL na seção Actions.

Copia essa URL, depois volta para a página da aplicação no Logto Cloud. Cola a URL na seção Redirect URIs.

URI de redirecionamento da app Logto

Agora, desce até ao fundo, ativa Always issue Refresh Token para habilitar o suporte a tokens de atualização para GPT. Isso pode ajudar os teus utilizadores a manterem-se autenticados por mais tempo no GPT.

Depois clica no botão Save na parte inferior.

Ponto de verificação: Testar o fluxo OAuth

Agora temos tudo pronto, vamos testar o fluxo OAuth para garantir que tudo está a funcionar como esperado. Volta para a página de configuração do GPT, clica na ação que criámos, depois clica no botão Test para o endpoint listItems (o primeiro).

A seção de visualização solicitará que faças login. Clica no botão Sign in with [your action name], depois conclui o fluxo OAuth.

Prompt de teste de login

Podes personalizar a experiência de login, como a marca e os métodos de login, no Logto Cloud. Para mais informações, consulta 🎨 Customize sign-in experience.

Se tudo estiver a funcionar como esperado, o teu servidor backend deve receber um pedido com o token de acesso no cabeçalho Authorization. No nosso caso, o servidor backend é a aplicação de agenda. Ele retornará a agenda do utilizador no corpo da resposta:

Sucesso no teste de API

Incrivelmente, como o nosso esquema OpenAPI é detalhado o suficiente, o GPT pode realizar a chamada à API sem qualquer configuração adicional. Por exemplo, se clicares no botão Test para o endpoint createItems, verás o GPT a gerar o corpo do pedido para ti (ou pedir-te para fornecer a informação em falta, depende do seu estado de humor).

Criar teste de API

Validar token de acesso

Com o fluxo OAuth a funcionar, agora podemos validar o token de acesso nos serviços back-end para garantir que o pedido vem de um utilizador autenticado. Como Logto é um fornecedor OIDC, podemos usar o endpoint Userinfo para validar o token de acesso. O endpoint pode ser encontrado na página da app Logto Cloud.

Basta enviar um pedido GET para o endpoint com o token de acesso no cabeçalho Authorization. Se o token de acesso for válido, o endpoint retornará a informação do utilizador no corpo da resposta. Aqui está um exemplo usando Node.js:

Podes encontrar o código completo no repositório do GitHub.

Bónus: Sincronização em tempo real com a aplicação principal

Podes ter a tua própria aplicação de agenda e, com autenticação, podes sincronizar a agenda do utilizador em tempo real sem sair da conversa. Para ver a sincronização em tempo real em ação, podes ir até à aplicação web e fazer login com a mesma conta que usaste no GPT de demonstração.

Conclusão

As ações GPT podem ser uma ferramenta poderosa para criar uma experiência personalizada para os teus utilizadores. Se tiveres alguma dúvida ou feedback, por favor, sente-te à vontade para te juntares ao nosso servidor Discord para discussão.