如果說之前的互動都只是在跟 AI「聊天」,那 Function Calling 就是賦予 AI「行動」能力的魔法。它讓我們的 AI 不再只是一個會說話的腦袋,而是真正能捲起袖子、走進廚房、拿起鍋鏟為我們解決問題的得力助手。這道菜,絕對是整場盛宴的 C 位!
當我們啟用 Function Calling 時,SK 廚房裡其實正在上演一齣分工精密的歌舞劇。整個流程就像是客人點餐,聰明的服務生(LLM)判斷菜色,再交由廚房(你的程式碼)製作,最後送上桌的完整循環。
根據官方食譜,這個神奇的流程可以拆解成以下幾個步驟 :
add_pizza_to_cart
),SK 就會精準地解析出函式名稱和需要的參數 。add_pizza_to_cart
這個函式,並把客人指定的尺寸、配料等參數傳進去 。這個
「模型思考 → SK 執行 → 回報結果 → 模型再思考」 的循環會不斷進行,直到滿足客人的所有需求,服務生 (LLM) 才會給出最終的總結性回覆 。
光說不練假把戲,我們直接來看一個經典的「訂披薩」範例,感受一下 AI 是如何自主決定呼叫哪個函式的。
假設我們有一個
OrderPizzaPlugin
,裡面有一個函式 AddPizzaToCart
。
public class OrderPizzaPlugin
{
[KernelFunction("add_pizza_to_cart")]
[Description("將指定口味與尺寸的披薩加入使用者的購物車")]
public async Task<string> AddPizzaToCartAsync(
[Description("披薩的尺寸,例如:大、中、小")] string size,
[Description("披薩的配料清單")] List<string> toppings
)
{
// 實際將披薩加入購物車的商業邏輯...
var result = $"已將一個{size}尺寸,包含 {string.Join(", ", toppings)} 配料的披薩加入購物車。";
Console.WriteLine($"[執行 add_pizza_to_cart]: {result}");
return result;
}
}
現在,讓我們來看看使用者、AI (Assistant) 和工具 (Tool/Plugin) 之間的互動:
使用者: "你好,我想訂一個披薩。"
AI (Assistant): (看了一下 add_pizza_to_cart
的菜單,發現 size
和 toppings
是必填的 ) "當然!請問您需要什麼尺寸和配料呢?"
使用者: "我要一個大的,配料有義式臘腸和蘑菇。"
AI (Assistant): (太好了,資訊都齊了!可以下單給廚房了!)
(送往 SK 的內部請求):
tool_calls: [ { "function": { "name": "OrderPizza-add_pizza_to_cart", "arguments": "{\"size\": \"大\", \"toppings\": [\"義式臘腸\", \"蘑菇\"]}" } } ]
工具 (Tool): (SK 收到請求,執行 C# 程式碼 AddPizzaToCartAsync
)
(函式回傳結果):tool_result: "已將一個大尺寸,包含 義式臘腸, 蘑菇 配料的披薩加入購物車。"
AI (Assistant): (看到廚房回報成功了,給客人一個最終回覆) "好的,您的大尺寸義式臘腸蘑菇披薩已經成功加入購物車了!還需要什麼嗎?"
看到了嗎?AI 就像一個真正聰明的店員,它會主動引導對話,收集必要的資訊,然後才去執行對應的動作。這就是 Function Calling 的魅力所在!
現代的 LLM 越來越厲害,它們甚至可以在一次思考中,決定要同時呼叫多個函式!這就像客人一次點了主餐、湯和飲料,聰明的服務生會把訂單分開,讓廚房、吧檯可以同時準備,大大提升了效率 。
例如,當使用者說:「幫我查一下臺北的天氣,並訂一張明天去高雄的高鐵票。」
AI 可能會同時發出兩個函式呼叫請求:一個給
WeatherPlugin
的 GetWeather
,另一個給 HSRPlugin
的 BookTicket
。SK 就會並行處理這兩個請求,讓整個流程更加順暢快速 。
今天我們品嚐了 Function Calling 這道令人驚豔的招牌絕活,它徹底改變了我們與 AI 的互動方式。透過這個強大的功能,我們的 AI 不再只是個聊天機器人,而是能串連起各種服務、執行複雜任務的智能代理 (Agent)。
明天,我們將繼續深入這道主菜,探討如何更精準地控制 AI 的「出菜策略」,也就是 Function Calling 的進階選項 (Behaviors)。
各位夥伴,今天的料理還滿意嗎?記得動手試試看,打造你自己的 AI 主廚!我們明天見!