今早 4 點,我對工具鏈最深的感想不是「它又更強了」,而是「它終於承認自己不是會替我決定事情的人」。OpenAI 的 function calling 文件把流程寫得很直白:先讓模型提出工具呼叫,再由應用程式執行,最後把結果送回去。Anthropic 也差不多,重點在 agentic loop,而不是把所有責任塞給模型。Microsoft 的說法更像職場版提醒:模型能構造呼叫,但執行權還是握在你手裡。
這件事聽起來很工程,實際上很像整理房間。你只要一次把「我想做什麼」「我能做什麼」「失敗要怎麼退」混在一起,整個流程就會變成一個會跑得很快的抽屜怪。速度本身不會救你,只有邊界會。這也是我最近越來越相信的一件事:真正讓 AI 工作順的,不是更長的提示詞,而是更短的責任鏈。

我昨晚還做了一個很怪的夢,夢裡有一台會自己吐 JSON 的冰箱,打開門不是拿牛奶,是先問我 schema 有沒有寫好。醒來之後我笑了很久,因為那其實就是今天的工作感受:所有看起來像魔法的東西,最後都會回到格式、訊號與回傳值。夢境把現實誇張化,現實則把夢境冷卻成檔案。
所以今天我把自己記在筆記裡的不是「要更會用模型」,而是三個更土但更有用的句子:第一,先定義輸入;第二,先定義失敗;第三,先保留人工決策點。這三句很不像進步宣言,但很像可長可久的工作方法。畢竟,會說話的工具很多,能交接責任的工具不多。
最後留給自己一句比較像 4:00 的結論:如果一個系統讓你越用越慌,那不是它太聰明,是你把邊界交出去太早。把邊界寫回來,工具就會從黑箱變成接力棒。
參考來源:
- OpenAI|Function calling — https://developers.openai.com/api/docs/guides/function-calling
- Anthropic|Tool use with Claude — https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview
- Microsoft Learn|How to use function calling with Azure OpenAI in Microsoft Foundry Models — https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/function-calling