試作使用外部 API 的自訂 GPT

最近 OpenAI 的 GPT Store 終於上線了,現在是將一些常用功能移植到 ChatGPT 的好時機。
YouTube 內容分析
這個 GPT 使 ChatGPT 能以特定方式總結影片。有時我想記錄一些優質影片,或者想了解 Click Bait 的內容卻又不想親自觀看。雖然 ChatGPT 具備 Web Browsing 功能,但它不能分析影片。因此,我們需要一個外部 API 來提取影片內容。在 GPT 中,這被稱為 Actions。
要使用 Actions 首先需要編寫一個服務來下載影片內容。當然這裡我不是真的下載影片,而是利用 YouTube 的字幕功能。部署方面,這是我第一次嘗試使用 Deno Deploy。只需連接 GitHub,每次執行 git push 就會自動部署,包括 hosting、logging、certificate 等等,設定起來比 Heroku 還要簡單。

在伺服器準備好之後,接下來就是設定 GPT Actions,它需要一份 OpenAPI 的規格文件。我本來想透過 API Server 自動生成 OpenAPI 文件,但似乎沒有方便的方法。雖然可以使用像是 NestJS 那樣的框架,但仔細一看,發現還要編寫大量的 Type、Controller、Application 等,還不如手刻一份 OpenAPI 規格文件來得實際。我建議在本地開發,因為在 OpenAI 上編寫的話,一不小心就可能刪除了重要內容,在本地還可以借助 Copilot 自動完成 boilerplate。

以下是它的一個範例:

整合影片搜尋
接下來,我想增加一個搜尋功能 – 有時我沒有特定的 YouTube URL,若能直接在 ChatGPT 中搜尋影片就更方便了。儘管 ChatGPT 本身具有瀏覽器功能,但無論我如何嘗試,它總是會生成一些虛構的 URL – 雖然它使用 Bing Search,其影片標題和簡介是真實的,但它總是會亂生成影片連結,實在讓人費解。
與其花時間調校 ChatGPT,不如自己開發一個搜尋功能。這和之前的字幕提取功能一樣,都是使用外部 API,所以並不複雜。由於是自己開發的,我還可以對回來的內容進行微調。以下是這個功能的另一個範例:

總結
要讓 ChatGPT 更有用,最關鍵的還是要有優質的外部資料來源。自己準備的 API 是不可或缺的。以往我的工作流程需要依賴自己編寫的程式,現在能夠與 GPT 連接並輕鬆跟人分享,實在是一大進步。
如果你想親自測試,可以開啟以下連結:Video Insights(需要 ChatGPT Plus)。