GPT Function Calling

Louis
Oct 23, 2023

--

2023 年 6 月底,OpenAI 公布其 GPT API 支援 Function Calling。這個功能可以:

  1. 分析使用者的查詢是否需要呼叫傳統程式函數
  2. 如果需要,GPT 會把非結構化資料 (unstructured data) 轉換成結構化資料 (structured data)。

舉例:我已經使用傳統程式語言 (e.g Python) 寫了一些函數 (從簡單的詢問天氣到複雜的第三方餐廳訂位系統),我希望使用者在詢問問題的時候,也能夠使用我的函數。類似於達到 ChatGPT Plug-in 的效果。

也就是說,我們的後端程式 (backend)

  1. 可以把 GPT 模型當作分析使用者意圖的引擎,
  2. 並且 GPT 模型會幫我們準備好參數 (轉換非結構化資料結構化資料),方便我們直接呼叫外部函數。

完整的範例內容可以在 Open AI 的網站上看到。這裡只是簡單介紹概念。

首先,在接收使用者的查詢之前,我們需要定義 function schema ,讓 GPT 模型知道我們自訂的函數支援什麼樣的功能 (最有趣的地方:使用人類文字描述),以及函數接受的「結構性資料」(structured data) 介面。

從網頁中的範例 (下圖) 可以看出,只需要用人類語言描述這個函數的功用 (見 description 欄位),GPT 模型就可以知道什麼時候要呼叫我們的函數。

description 描述了函數支援的功能,而 parameters 則描述了該函數接受的函數。

舉例,如果使用者需要知道某地現在的天氣,GPT 模型便會告知我們需要呼叫我們定義的 get_current_weather(),並且 GPT 也會將呼叫函數所需要的參數 (location 與 unit) 也準備給我們。

下圖顯示了整個流程,值得注意的是,我們一共會呼叫 GPT 模型兩次 (至少):

  • 第一次是分析使用者的意圖。
  • 第二次是把函數回傳值轉換成人類語言。

--

--

Louis

A maker who believes that software can change the world. Love science, engineering and economics. From Taiwan. Living in Bay Area.