AFS
Meta 在 4 月 19 日推出新一代大語言模型 Llama 3,有 80 億和 700 億參數兩種版本,在經過 ASUS AI 核心團隊調整過後,可以與函式一起使用,由大語言模型判斷是否呼叫函式。如果請求中包含一個或多個函式,則模型會根據提示的上下文決定是否需要呼叫函式。當模型確定應該使用某個函式時,會以該函式參數的格式化資料(JSON)來進行輸出。
模型是基於所提供的函式,再解析意圖後,輸出對應的 API 與結構化資料。特別注意的是,模型只挑選出適用的函式,但並不會進行函式的操作,函式呼叫是由「應用端」所實作的業務邏輯來控制。
函式的使用可以分為三個步驟:
隨著 Llama3-FFM 模型的發布,FFM Conversation API 會提供更完整的格式來完善 Function Calling 功能。舊格式 Request body 中的 functions 欄位,以及 Response 中的 function_call 欄位,未來將被棄用,後面的章節會描述新格式的使用方式。
Request body by calling the model with tools
透過大語言模型來選擇適當的函式並解析對應的參數。
參數 tools
為 array 格式,內容主要為函式所對應的 JSON Schema 描述,其中包含兩個必要參數。
Field | Type | Required | Description |
---|---|---|---|
tools | array | Optional | JSON 格式的函式列表 |
type string Required
tool 類型,目前僅支援 |
|||
function object Required
|
參數 tool_choice
為 string 或 object 格式,非必要參數,此功能只支援 Llama3-FFM 版本,主要用來指定函式呼叫的情境。當有提供函式時,此欄位預設為 "auto"
,無函式時,預設值為 "none"
。
"none"
:不執行函式呼叫的功能,而是文字生成。"auto"
:由模型自行決定輸出為函式呼叫或是文字生成。
finish_reason
來判別模型的輸出,若是 "finish_reason": "tool_calls"
則為函式呼叫,非 "tool_calls"
則是文字生成。{"type": "function", "function": {"name": "my_function"}}
指定某 function 的函式呼叫。
finish_reason
是一般像 eos_token 等提示,並 不會 是 "tool_calls"
,這部分由應用端自行解析內容來判別。Field | Type | Required | Description |
---|---|---|---|
tool_choice | string or object | Optional | 指定函式呼叫的情境 |
string
- |
|||
object
-
|
Response by calling the model with functions
大語言模型回傳函式呼叫的結果
Field | Type |
---|---|
tool_calls | array |
id string
函式呼叫識別碼 |
type string
tool 類型。目前僅支援 |
function object
為包含函式名稱、參數值的函式呼叫內容。 |
Request body by sending the response back to the model to summarize
大語言模型將函式執行後的結果,以容易理解的方式來輸出。這個步驟屬於多輪對話的情境,除了要提供之前的歷史對話紀錄,還需要將執行函式的結果,放在 role 為 tool
的 content 欄位中。
Field | value |
---|---|
role | tool |
tool_call_id | 引用 tool_calls 中的函式呼叫識別碼 |
content | 函式呼叫的執行結果 |