OpenAI重磅:AI Agent智能體Function Calling 2.0! 原創(chuàng)
近日,OpenAI 推出了全新的 AI Agent 智能體 Function Calling 2.0 使用指南,此次更新使得文檔篇幅縮減了一半,并且引入了一系列關(guān)鍵的最佳實(shí)踐。作為打造高效 AI Agent 智能體的核心技能之一,正確運(yùn)用Function Calling 對(duì)于開(kāi)發(fā)強(qiáng)大的 AI Agent 智能體應(yīng)用具有至關(guān)重要的作用。因此,今天我就來(lái)為大家揭秘這次更新的精華內(nèi)容!
1、Function Calling 的兩大核心應(yīng)用
文章中清晰地闡述了 Function Calling 的兩個(gè)核心應(yīng)用場(chǎng)景:
第一、數(shù)據(jù)獲?。‵etching Data)
- 實(shí)時(shí)檢索信息并將其融入大模型的響應(yīng)之中;
- 適用于查詢(xún)知識(shí)庫(kù)和獲取特定 API 數(shù)據(jù)(例如天氣預(yù)報(bào));
- 本質(zhì)上是實(shí)現(xiàn)了一種 RAG(Retrieval Augmented Generation,檢索增強(qiáng)生成)的方法。
第二、執(zhí)行動(dòng)作(Taking Action)
- 完成表單提交、API 調(diào)用等操作;
- 改變應(yīng)用程序的狀態(tài)(涉及前端或后端);
- 執(zhí)行 AI Agent 智能體的工作流程步驟(例如對(duì)話(huà)中的任務(wù)轉(zhuǎn)接)。
2、全新的最佳實(shí)踐
此次更新最為關(guān)鍵的是推出了一系列實(shí)用的最佳實(shí)踐,下面我們來(lái)聚焦于其中的幾項(xiàng):
第一、編寫(xiě)明確的函數(shù)定義
# 好的示例
def get_weather(location: str):
"""獲取指定位置的當(dāng)前溫度
Args:
location: 城市和國(guó)家,例如:'北京, 中國(guó)'
"""
pass
# 糟糕的示例
def toggle_light_switch(on: bool, off: bool):
"""這個(gè)設(shè)計(jì)允許無(wú)效狀態(tài)的存在"""
pass
第二、遵循軟件工程的最佳實(shí)踐指南
- 確保函數(shù)直觀易懂,并遵循最小驚訝原則,在維基百科中稱(chēng)為:Principle of least astonishment,詳見(jiàn)鏈接:https://en.wikipedia.org/wiki/Principle_of_least_astonishment。
- 采用枚舉和對(duì)象結(jié)構(gòu),以防止出現(xiàn)無(wú)效狀態(tài)。
- 通過(guò)“實(shí)習(xí)生測(cè)試”:如果一名實(shí)習(xí)生僅憑函數(shù)定義就能正確地使用它,那么說(shuō)明你的設(shè)計(jì)相當(dāng)出色。
第三、盡可能減少大模型的負(fù)擔(dān)
# 不推薦
def get_orders(user_id: str):
pass
# 推薦
def get_orders():
# 在代碼中傳遞user_id
pass
第四、精簡(jiǎn)函數(shù)數(shù)量,維持高效性;
- 推薦在任何時(shí)候使用的函數(shù)不超過(guò)20個(gè);
- 若觀察到有兩個(gè)函數(shù)經(jīng)常被同時(shí)調(diào)用,應(yīng)考慮將它們合并為一個(gè)函數(shù)。
3、重要的配置選項(xiàng)
第一、工具選擇模式(tool_choice)
# 自動(dòng)模式(默認(rèn))
tool_choice="auto" # 可以調(diào)用零個(gè)、一個(gè)或多個(gè)函數(shù)
# 強(qiáng)制模式
tool_choice="required" # 必須調(diào)用至少一個(gè)函數(shù)
# 指定函數(shù)
tool_choice={
"type": "function",
"function": {"name": "get_weather"}
} # 強(qiáng)制調(diào)用特定函數(shù)
第二、嚴(yán)格模式(Strict Mode)
{
"type": "function",
"function": {
"name": "get_weather",
"strict": True, # 啟用嚴(yán)格模式
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string"
},
"units": {
"type": ["string", "null"], # 可選參數(shù)
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location", "units"],
"additionalProperties": false
}
}
}
4、流式處理的支持
OpenAI 進(jìn)一步提升了流式處理的能力,使得能夠即時(shí)展現(xiàn)函數(shù)調(diào)用的實(shí)時(shí)過(guò)程。
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "北京今天天氣如何?"}],
tools=tools,
stream=True
)
for chunk in stream:
delta = chunk.choices[0].delta
print(delta.tool_calls) # 實(shí)時(shí)顯示函數(shù)調(diào)用進(jìn)度
此次更新主要目的是分享了一系列最佳實(shí)踐。隨著 o1-mini 即將實(shí)現(xiàn)對(duì)Function Calling 的支持(已獲官方確認(rèn)),昨日還推出了 tasks 功能。因此,可以展望在2025年見(jiàn)證真正的 AI Agent 智能體的誕生。
本文轉(zhuǎn)載自公眾號(hào)玄姐聊AGI 作者:玄姐
