繁體中文(香港)
  • gpt
  • oauth
  • openai

在 GPT 裡驗證用戶操作:打造個人行程助手

在你的 GPT 中為用戶創建個性化體驗。本教程將向你展示如何使用 OAuth 來創建個人行程助手 GPT。

Gao
Gao
Founder

GPTs 非常適合深度自定義 ChatGPT 體驗以滿足特定用例。更好的是,它允許你直接使用 actions 與你的服務進行交互。

在本教程中,我們將向你展示如何使用 OAuth 在你的 GPTs 操作中驗證用戶。我們將構建一個個人行程助手,允許用戶直接在 GPT 中管理他們的事件。

最終的 GPT 會像這樣:

左邊是用戶與 GPT 的互動;右邊是展示用戶行程的網頁應用。這種方法還有更多可能性,例如:

  • 創建一個幫助用戶消化電子郵件和新聞的個人助手。
  • 創建一個 GPT 來瀏覽和預訂航班而不離開對話。

本教程的結果和資源:

先決條件

  • 截至撰寫本文時,GPTs 僅對 ChatGPT Plus 及以上用戶開放。
  • 一個 Logto Cloud 租戶。如果你還沒有,可以免費註冊
  • 一個你可以控制的域名。它將用於 GPT 和 Logto Cloud。
  • 一個可以暴露 REST API 的網頁應用。在本教程中,我們將使用預建的行程應用。

創建和配置 GPT

創建 GPT

  1. 打開 ChatGPT,在左側,點擊 探索 GPTs 按鈕,然後點擊右上角的 創建 按鈕。
  2. 在新的 GPT 頁面上,輸入你的 GPT 的名稱和描述。例如,行程助手在對話中直接管理你的行程
  3. 你可以選擇上傳你的 GPT 的標誌,或者通過點擊加號圖標使用 DALL-E 為你生成一個。

創建一個行動

在底部點擊 創建新行動 按鈕。在新頁面中,有三個部分:

  • 驗證:此部分允許你配置用戶如何對你的行動進行驗證。我們暫時保留為
  • 架構:OpenAPI 架構格式定義了你的行動的 REST API。架構越詳細,GPT 就越能更好地理解用戶的意圖。
  • 隱私政策:你的行動的隱私政策 URL。

在本教程中,我們有一個預建的行程應用,其暴露了用於管理用戶行程的 REST API。你可以在 GitHub repo 中找到 OpenAPI 架構。

一旦你粘貼了架構,GPT 會自動識別端點並為你生成一個表格。你可以點擊 測試 按鈕來測試端點。

添加行動

GPT 會要求你授權來執行 API 呼叫。點擊 允許始終允許 按鈕以繼續。

測試行動

如果你的端點需要驗證,你會看到如上的錯誤消息。當我們查看服務器日誌時,我們可以看到 GPT 發送了沒有任何驗證信息的請求。

測試行動錯誤


API 呼叫沒有驗證

在 Logto Cloud 中配置自定義域名

ChatGPT 要求操作和驗證端點都在同一根域中。例如,如果你的操作端點是 https://api.example.com/,則驗證端點必須是類似 https://auth.example.com/ 的形式。

為了滿足這一要求,我們需要在 Logto Cloud 中配置自定義域名。登錄到 Logto Cloud 後,點擊左側的 設置 標籤,然後點擊頂部的 域名 標籤。

通常只需幾分鐘即可完成配置。完成後,你會看到自定義域名變為 使用中

自定義域名

在 Logto Cloud 中創建應用

為了執行 OAuth 驗證,我們需要在 Logto Cloud 中創建一個應用。登入 Logto Cloud 後,點擊左側的 應用程序 標籤,然後點擊右上角的 創建應用程序 按鈕。

在新頁面中,點擊底部的 "不使用框架創建應用"。選擇 "傳統網絡" 作為應用程序類型,並為你的應用輸入名稱,例如 GPT 行程助手。然後點擊底部的 "創建應用程序"。

應用創建完成後,導航到 ENDPOINTS & CREDENTIALS 卡片(你可能需要稍微向下滾動)。點擊 顯示端點詳情 以展開信息。

Logto 應用配置

配置行動

現在,返回 GPT 行動頁面,點擊 驗證 部分,然後選擇 OAuth。表單欄目與 Logto Cloud 中的信息對應如下:

  • 客戶端 ID:Logto Cloud 中的 應用 ID
  • 客戶端密鑰:Logto Cloud 中的 應用密鑰
  • 授權 URL:Logto Cloud 中的 授權端點
  • 令牌 URL:Logto Cloud 中的 令牌端點

對於 作用域 欄目,輸入 openid offline_access; 對於 "令牌交換方法" 欄目,保持為默認值(POST 請求)。

GPT 行動驗證配置

最後,點擊底部的 保存 按鈕。

更新 Logto 應用配置

返回 GPT 配置頁面,現在你可以在 行動 部分下看到一個 回調 URL 欄目。

複製該 URL,然後返回到 Logto Cloud 應用頁面。將該 URL 粘貼到 重定向 URI 欄目。

Logto 應用重定向 URI

現在,向下滾動到頁面的底部,切換打開 始終發行刷新令牌,以啟用 GPT 的刷新令牌支持。這可以幫助你的用戶在 GPT 中保持較長時間的登入狀態。

然後點擊底部的 保存 按鈕。

檢查點:測試 OAuth 流程

現在一切準備就緒,我們來測試 OAuth 流程,確保一切按照預期運行。返回 GPT 配置頁面,點擊我們創建的行動,然後點擊 listItems 端點(第一個)的 測試 按鈕。

預覽部分將提示你登入。點擊 用 [你的操作名稱] 登入 按鈕,然後完成 OAuth 流程。

測試登入提示

你可以在 Logto Cloud 中自定義登入體驗,比如品牌化和登入方法。更多信息,請參閱 🎨 自定義登入體驗

如果一切正常運行,你的後端服務器應該會在 Authorization 標頭中收到帶有訪問令牌的請求。在我們的例子中,後端服務器是行程應用。它將在響應體中返回用戶的行程:

測試 API 成功

令人驚訝的是,由於我們的 OpenAPI 架構足夠詳細,GPT 可以在沒有任何額外配置的情況下執行 API 呼叫。例如,如果你點擊 createItems 端點的 測試 按鈕,你會看到 GPT 為你生成請求正文(或根據其心情要求你提供缺少的信息)。

測試 API 創建

驗證訪問令牌

隨著 OAuth 流程的運行,我們現在可以在後端服務中驗證訪問令牌,以確保請求來自經過身份驗證的用戶。由於 Logto 是 OIDC 提供者,我們可以使用 Userinfo 端點 來驗證訪問令牌。該端點可以在 Logto Cloud 應用頁面中找到。

只需在 Authorization 標頭中帶有訪問令牌發送一個 GET 請求到該端點。如果訪問令牌有效,端點會在響應體中返回用戶的信息。以下是使用 Node.js 的示例:

你可以在 GitHub repo 中找到完整代碼。

額外獎勵:與主應用實時同步

你可能有自己行程應用,通過認證,你可以在不離開對話的情況下實時同步用戶的行程。要查看實時同步,你可以前往 網頁應用 並使用你在 演示 GPT 中使用的相同帳戶登入。

結論

GPT 行動可以成為為你的用戶構建個性化體驗的強大工具。如果你有任何問題或反饋,請隨時加入我們的 Discord 服務器 進行討論。