[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-tool-calling-as-code-bfcl-v4-zh":3,"article-related-tool-calling-as-code-bfcl-v4-zh":30,"series-research-79a1e441-287d-4bbf-9ec1-5620c8be72a8":76},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":23,"views":27,"created_at":28,"published_at":29,"topic_cluster_id":11},"79a1e441-287d-4bbf-9ec1-5620c8be72a8","tool-calling-as-code-bfcl-v4-zh","工具呼叫用程式碼可能更好","\u003Cp data-speakable=\"summary\">BFCL v4 顯示，把工具呼叫改成程式碼介面，常比 JSON 呼叫更穩、更適合並行任務。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>研究機構\u003C\u002Fstrong>：arXiv 摘要未明確標註\u003C\u002Fli>\u003Cli>\u003Cstrong>核心數據\u003C\u002Fstrong>：相較 JSON 基線提升 10.6%\u003C\u002Fli>\u003Cli>\u003Cstrong>突破點\u003C\u002Fstrong>：以型別化 Python stub 呼叫工具\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2608.06370\">The Bitter Lesson of Tool Calling\u003C\u002Fa> 這篇論文在問一個很實際的問題：當模型要用工具時，真的一定要走 JSON 嗎？作者的答案是，對會寫程式的模型來說，把工具當成程式碼來呼叫，可能更符合它的工作方式，也更適合真實 \u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> 流程。\u003C\u002Fp>\u003Cp>這不是單純的介面偏好。工具呼叫是很多 agent 的核心動作。介面一旦卡手，模型即使本身夠強，也可能在執行層面翻車。這篇摘要的重點，就是把焦點從「模型能不能做」拉回「介面是不是用對了」。\u003C\u002Fp>\u003Ch2>這篇在解什麼痛點\u003C\u002Fh2>\u003Cp>現在很多產品級工具呼叫，還是靠結構化 JSON。這種方式好處很明顯：好驗證、好接系統、也容易做 router。但問題也很直接。當任務需要連續呼叫多個工具、分支處理，或把工作\u003Ca href=\"\u002Fnews\u002Fcuda-binaries-turn-ptx-into-elf-you-can-inspect-zh\">拆成\u003C\u002Fa>多段並行執行時，JSON 介面常常顯得很僵硬。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786084374600-zgew.png\" alt=\"工具呼叫用程式碼可能更好\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>作者把這件事描述\u003Ca href=\"\u002Fnews\u002Fcuda-warps-memory-divergence-explained-zh\">成一\u003C\u002Fa>個落差：模型會寫程式，不代表工具介面也讓它像寫程式一樣做事。於是他們改測另一條路，直接把工具暴露成型別化的 Python stub，讓模型用程式方式去呼叫。\u003C\u002Fp>\u003Cp>摘要裡也明講，過去沒有一個系統性評估，能把 tools-as-code 和原生 JSON tool calling 放在一起，比較現代與前幾代模型在真實任務條件下的表現。這篇就是要補這個洞，而且先從 BFCL v4 下手。\u003C\u002Fp>\u003Ch2>方法怎麼運作\u003C\u002Fh2>\u003Cp>程式化工具呼叫的概念很直白。模型不再吐出一個 JSON blob，交給外部工具路由器去解讀。它看到的是一組型別化的 Python stub，然後直接用程式語法去呼叫。\u003C\u002Fp>\u003Cp>這種做法把互動形狀整個改掉了。模型可以在同一個 agent turn 裡串接多個工具，也可以更自然地做 parallel fan-out。換句話說，控制流程更像一般程式，而不是一筆一筆固定格式的表單提交。\u003C\u002Fp>\u003Cp>作者沒有宣稱這種方法對所有情境都一定比較好。他們的\u003Ca href=\"\u002Fnews\u002Fcuda-moat-tested-by-ai-coding-agents-zh\">測試\u003C\u002Fa>重點是：當介面改成程式碼後，在 BFCL v4 上，模型表現會不會更接近它本來就擅長的推理與控制流程。\u003C\u002Fp>\u003Cp>對開發者來說，這個觀點很實用。很多時候問題不在 prompt，而在執行模型。模型會不會思考是一回事，它能不能順著介面把動作做完，又是另一回事。\u003C\u002Fp>\u003Ch2>這篇實際證明了什麼\u003C\u002Fh2>\u003Cp>摘要中最清楚的比較，是拿 programmatic tool calling，也就是 PTC，去對上 native JSON tool calling。測試範圍是 BFCL v4，涵蓋 14 個語言模型。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786084371768-rvqj.png\" alt=\"工具呼叫用程式碼可能更好\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>結果是，PTC 在 14 個模型裡，有 11 個模型的表現持平或優於 JSON 呼叫。這代表程式化介面不是只在少數模型上碰巧有效，而是跨模型有一定一致性。\u003C\u002Fp>\u003Cp>摘要裡最明確的單一數字，是 GPT-5.6 family 相較 JSON tool-calling baseline 提升 10.6%。不過摘要沒有公開完整的 per-model \u003Ca href=\"\u002Ftag\u002Fbenchmark\">benchmark\u003C\u002Fa> 表格，所以這個數字應該視為最關鍵的代表值，而不是完整全貌。\u003C\u002Fp>\u003Cp>在 parallel fan-out 的設定下，PTC 也很有看頭。摘要說它在 14 個模型裡，有 13 個模型持平或優於基線。這對需要拆工、分流、同時查多個工具的 agent 特別重要，因為這類任務本來就很吃控制流程。\u003C\u002Fp>\u003Cp>另一個結果是 context rot 條件。摘要指出，基線平均退化 2.3%，而 PTC 則維持穩定。摘要沒有進一步交代 context rot 的完整設定，所以比較安全的解讀是：在作者測到的條件裡，程式化工具呼叫對這類失效模式比較不敏感。\u003C\u002Fp>\u003Cul>\u003Cli>PTC 在 BFCL v4 上，14 個模型中有 11 個持平或優於 JSON。\u003C\u002Fli>\u003Cli>GPT-5.6 family 相較 JSON 基線提升 10.6%。\u003C\u002Fli>\u003Cli>平行 fan-out 情境下，PTC 在 14 個模型中有 13 個持平或優於基線。\u003C\u002Fli>\u003Cli>context rot 下，JSON 基線平均退化 2.3%。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>對開發者有什麼影響\u003C\u002Fh2>\u003Cp>如果你在做 agent，這篇論文等於在提醒你：工具介面不是小事。對會寫程式的模型來說，讓它直接呼叫型別化 Python stub，可能比硬塞進 JSON 格式更自然。\u003C\u002Fp>\u003Cp>這會影響實作方式。很多 agent 任務不是單次查詢，而是有分支、迴圈、並行、階段式執行。程式化工具呼叫更像是把這些流程直接寫進可執行的控制邏輯裡，而不是靠外部協調器一層層轉譯。\u003C\u002Fp>\u003Cp>它也可能減少一種常見落差：模型內部已經在「像程式一樣思考」，外部卻要求它輸出一個固定格式的 JSON。當內外介面一致一點，執行失誤的機會可能就少一點。\u003C\u002Fp>\u003Cp>但這篇摘要也沒有把話說滿。它只報 BFCL v4 的結果，沒有談 latency、成本、錯誤輸入下的穩定性，也沒有討論整合時的額外負擔。所以它更像是一個值得實驗的新方向，而不是可以直接宣布 JSON 退場的結論。\u003C\u002Fp>\u003Ch2>還有哪些限制\u003C\u002Fh2>\u003Cp>這篇摘要最明顯的限制，是公開資訊還不夠完整。它沒有附上完整 benchmark 表格，也沒有把每個模型的數字一一列出。你可以知道方向，但還不能從摘要直接判定所有模型的細節差異。\u003C\u002Fp>\u003Cp>另外，摘要也沒有交代 BFCL v4 之外的表現。這代表它目前比較像是「在這個基準上，PTC 很有競爭力」，而不是「在所有 agent 場景都勝出」。對實務導入來說，這個界線很重要。\u003C\u002Fp>\u003Cp>還有一點值得注意。摘要提到 PTC 追蹤模型在不同發行世代的能力變化，這暗示它的優勢可能和模型本身的 coding 能力有關，不一定是每個模型、每個工作都能直接複製。\u003C\u002Fp>\u003Cp>所以比較務實的結論不是「JSON 死了」，而是「如果你的模型本來就能寫程式，而且任務又常常要串工具、分流、並行，那把工具當程式碼來呼叫，值得先做實測」。\u003C\u002Fp>\u003Cp>對\u003Ca href=\"\u002Ftag\u002F台灣開發者\">台灣開發者\u003C\u002Fa>來說，這篇最有價值的地方，不只是它提出一個新介面，而是它把 agent 設計的重點拉回執行層。模型能力很重要，但介面設計，可能同樣決定 agent 能不能真的跑起來。\u003C\u002Fp>","BFCL v4 顯示，對 14 個模型來說，把工具呼叫改成程式碼介面，常比 JSON 呼叫更穩、更適合並行任務。","arxiv.org","https:\u002F\u002Farxiv.org\u002Fabs\u002F2608.06370",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786084374600-zgew.png","research","zh","4082af89-fbca-47cf-885c-52f6a90e6bfd",[17,18,19,20,21,22],"tool calling","JSON","programmatic tool calling","BFCL v4","agents","Python stub",[24,25,26],"PTC 在 BFCL v4 上，對 14 個模型有 11 個持平或優於 JSON。","GPT-5.6 family 相較 JSON 基線提升 10.6%。","摘要沒有公開完整 benchmark 細節，適合當作方向性證據，不宜過度外推。",1,"2026-08-07T06:32:25.624019+00:00","2026-08-07T06:32:25.613+00:00",{"tags":31,"relatedLang":35,"relatedPosts":39},[32,33],{"name":21,"slug":21},{"name":17,"slug":34},"tool-calling",{"id":15,"slug":36,"title":37,"language":38},"tool-calling-as-code-bfcl-v4-en","Why tool calling may work better as code","en",[40,46,52,58,64,70],{"id":41,"slug":42,"title":43,"cover_image":44,"image_url":44,"created_at":45,"category":13},"04a3925a-33c0-4954-89b7-41e51365cc40","astra-turns-long-math-tasks-into-multi-agent-work-zh","Astra 把長任務拆成多代理工作","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786088000695-2qtf.png","2026-08-07T07:32:51.483837+00:00",{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":13},"01da4d83-b580-43fe-a4aa-0e4285e056c0","evidence-linked-feature-engineering-heart-failure-zh","心衰 EHR 特徵工程可追證據","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786086179831-hiwd.png","2026-08-07T07:02:30.845188+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":13},"66a9a233-e2fe-4726-a3e7-f01a6b47d100","teaching-llms-when-to-trust-context-zh","教 LLM 何時信上下文","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786082585395-85yg.png","2026-08-07T06:02:32.567402+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":13},"15c28503-3a01-434b-9e62-9038676f5dff","cuda-binaries-turn-ptx-into-elf-you-can-inspect-zh","CUDA 二進位拆成可檢查 ELF","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786068196777-denz.png","2026-08-07T02:02:53.326675+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":13},"a2ae5975-7c35-4094-9d13-922f15cb1034","octolong-cross-repository-code-contexts-zh","OctoLong 用跨倉庫程式脈絡訓練長上下文模型","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785999778532-gdas.png","2026-08-06T07:02:26.875328+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":13},"9ffcddf6-f52b-4ca8-99f5-a927ec5261b4","argus-self-evolving-runtime-long-tasks-zh","Argus：會自我演化的長任務 runtime","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785997980205-qk1s.png","2026-08-06T06:32:34.986144+00:00",[77,82,87,92,97,102,107,112,117,122],{"id":78,"slug":79,"title":80,"created_at":81},"f18dbadb-8c59-4723-84a4-6ad22746c77a","deepmind-bets-on-continuous-learning-ai-2026-zh","DeepMind 押注 2026 連續學習 AI","2026-03-26T08:16:02.367355+00:00",{"id":83,"slug":84,"title":85,"created_at":86},"f4a106cb-02a6-4508-8f39-9720a0a93cee","ml-papers-of-the-week-github-research-desk-zh","每週 ML 論文清單，為何紅到 GitHub","2026-03-27T01:11:39.284175+00:00",{"id":88,"slug":89,"title":90,"created_at":91},"c4f807ca-4e5f-47f1-a48c-961cf3fc44dc","ai-ml-conferences-to-watch-in-2026-zh","2026 AI 研討會投稿時程整理","2026-03-27T01:51:53.874432+00:00",{"id":93,"slug":94,"title":95,"created_at":96},"cf046742-efb2-4753-aef9-caed5da5e32e","adaptive-block-scaled-data-types-zh","IF4：神經網路量化的聰明選擇","2026-03-31T06:00:36.990273+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"53a0dc54-0371-4e40-8d5e-74e94a73840c","geometry-aware-similarity-metrics-for-neural-representations-zh","超越距離測量：用微分幾何重新理解神經網路","2026-03-31T06:01:01.241968+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"fee7d472-a775-4b1d-bbc2-1e8bca1bbf8b","on-the-fly-repulsion-in-the-contextual-space-for-rich-divers-zh","讓AI繪圖更有創意：用排斥力提升生成多樣性","2026-03-31T06:01:25.439673+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"a9901203-d69b-447b-8854-15d14eab32b4","vision-aided-beam-prediction-cnn-eca-zh","影像輔助波束預測升級 CNN","2026-04-01T10:00:25.8073+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"b55e7dd4-0a24-4b3d-804d-b0309a03f498","triple-band-fss-mimo-antenna-sub-6-ghz-zh","三頻 FSS MIMO 天線瞄準 sub-6 GHz","2026-04-01T13:18:36.857305+00:00",{"id":118,"slug":119,"title":120,"created_at":121},"f68290bd-e7f3-4b30-ba22-dcd4e0130a66","openclaw-1299-repos-eight-weeks-analysis-zh","OpenClaw 1299 個 Repo 的資料解讀","2026-04-02T05:03:45.208411+00:00",{"id":123,"slug":124,"title":125,"created_at":126},"ed9f80eb-eb02-4d35-8ad4-0ddf428751dd","beam-coherence-aware-combining-mmwave-mimo-zh","毫米波 MIMO 的雙階合併法","2026-04-02T05:27:26.897188+00:00"]