智慧體課程文件
什麼是函式呼叫?
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
什麼是函式呼叫?
函式呼叫是大型語言模型(LLM)在其環境中採取行動的一種方式。它最初由GPT-4 引入,後來在其他模型中也得到了實現。
就像代理的工具一樣,函式呼叫賦予模型在其環境中採取行動的能力。然而,函式呼叫能力是由模型學習的,並且對提示的依賴程度低於其他代理技術。
在第一單元中,代理沒有學習使用工具,我們只是提供了列表,我們依賴於模型能夠概括使用這些工具來定義計劃的能力。
而在這裡,透過函式呼叫,代理被微調(訓練)以使用工具。
模型如何“學習”採取行動?
在第一單元中,我們探討了代理的一般工作流程。一旦使用者給代理提供了一些工具並用一個查詢提示它,模型將迴圈執行以下步驟:
- 思考:我需要採取什麼行動才能實現目標。
- 行動:用正確的引數格式化行動並停止生成。
- 觀察:獲取執行結果。
在透過 API 與模型的“典型”對話中,對話將在使用者和助手訊息之間交替進行,如下所示:
conversation = [
{"role": "user", "content": "I need help with my order"},
{"role": "assistant", "content": "I'd be happy to help. Could you provide your order number?"},
{"role": "user", "content": "It's ORDER-123"},
]
函式呼叫為對話帶來了新角色!
- 一個新角色用於行動
- 一個新角色用於觀察
如果我們以Mistral API為例,它看起來會是這樣:
conversation = [
{
"role": "user",
"content": "What's the status of my transaction T1001?"
},
{
"role": "assistant",
"content": "",
"function_call": {
"name": "retrieve_payment_status",
"arguments": "{\"transaction_id\": \"T1001\"}"
}
},
{
"role": "tool",
"name": "retrieve_payment_status",
"content": "{\"status\": \"Paid\"}"
},
{
"role": "assistant",
"content": "Your transaction T1001 has been successfully paid."
}
]
……但您說函式呼叫有一個新角色?
是也不是,在這種情況下和許多其他 API 中,模型將要採取的行動格式化為“助手”訊息。聊天模板將透過特殊標記來表示函式呼叫。
[AVAILABLE_TOOLS]
– 可用工具列表的開始[/AVAILABLE_TOOLS]
– 可用工具列表的結束[TOOL_CALLS]
– 呼叫工具(即,採取“行動”)[TOOL_RESULTS]
– “觀察”行動的結果[/TOOL_RESULTS]
– 觀察結束(即,模型可以再次解碼)
我們將在本課程中再次討論函式呼叫,但如果您想深入瞭解,可以檢視這個優秀的文件部分。
現在我們瞭解了什麼是函式呼叫以及它是如何工作的,讓我們透過向模型附加一些新的特殊標記來為尚未具備這些能力的模型新增一些函式呼叫能力:google/gemma-2-2b-it。
為此,我們首先需要了解微調和 LoRA。
< > 在 GitHub 上更新