2023 年 6 月底,OpenAI 公布其 GPT API 支援 Function Calling。這個功能可以:
- 分析使用者的查詢是否需要呼叫傳統程式函數。
- 如果需要,GPT 會把非結構化資料 (unstructured data) 轉換成結構化資料 (structured data)。
舉例:我已經使用傳統程式語言 (e.g Python) 寫了一些函數 (從簡單的詢問天氣到複雜的第三方餐廳訂位系統),我希望使用者在詢問問題的時候,也能夠使用我的函數。類似於達到 ChatGPT Plug-in 的效果。
也就是說,我們的後端程式 (backend)
- 可以把 GPT 模型當作分析使用者意圖的引擎,
- 並且 GPT 模型會幫我們準備好參數 (轉換非結構化資料到結構化資料),方便我們直接呼叫外部函數。
完整的範例內容可以在 Open AI 的網站上看到。這裡只是簡單介紹概念。
首先,在接收使用者的查詢之前,我們需要定義 function schema ,讓 GPT 模型知道我們自訂的函數支援什麼樣的功能 (最有趣的地方:使用人類文字描述),以及函數接受的「結構性資料」(structured data) 介面。
從網頁中的範例 (下圖) 可以看出,只需要用人類語言描述這個函數的功用 (見 description 欄位),GPT 模型就可以知道什麼時候要呼叫我們的函數。
舉例,如果使用者需要知道某地現在的天氣,GPT 模型便會告知我們需要呼叫我們定義的 get_current_weather(),並且 GPT 也會將呼叫函數所需要的參數 (location 與 unit) 也準備給我們。
下圖顯示了整個流程,值得注意的是,我們一共會呼叫 GPT 模型兩次 (至少):
- 第一次是分析使用者的意圖。
- 第二次是把函數回傳值轉換成人類語言。