<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tool-Calling on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/tool-calling/</link><description>Recent content in Tool-Calling on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 08 Jun 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/tool-calling/feed.xml" rel="self" type="application/rss+xml"/><item><title>FDE 面試準備指南（十七）：RKK 實戰——MCP 伺服器、Tool-Calling 安全與 OAuth 授權</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part17-mcp-tool-oauth-zh/</link><pubDate>Thu, 04 Jun 2026 10:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part17-mcp-tool-oauth-zh/</guid><description>MCP 不只是「讓 Agent 能呼叫更多工具」。
它是一個標準化的工具暴露協定，解決的核心問題是：
怎麼讓 Agent 在有授權控制的情況下，安全地代表用戶執行企業內部操作。
面試情境 面試官： 「JD 提到了 MCP。客戶希望 Agent 透過 MCP Server 調用 Salesforce 與 ERP 系統。某些 Tool-calling 需要特定員工的 OAuth 權限。你如何在 Agent 工作流中處理這個個人身分授權？如果發生憑證過期或 Tool Injection，你如何防禦？」
一、核心問題：為什麼 Tool-Calling 的授權比想像中複雜 傳統 API 呼叫的授權模型： User → Frontend → Backend (with service account key) ↑ 一個 key，所有人共用 問題：無法追蹤是誰做了什麼操作 Agent Tool-Calling 的授權需求： User A → Agent → Salesforce API ↑ 必須用 User A 的身分操作 原因： ├── Salesforce 的記錄所有者是 User A ├── 操作日誌要顯示 User A 做了什麼 └── User A 可能沒有修改某些欄位的權限 三個具體的授權挑戰：</description></item><item><title>FDE 面試準備指南（二十二）：RKK 實戰——動態並行 Tool-Calling 與依賴解析引擎</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part22-parallel-tool-calling-zh/</link><pubDate>Thu, 04 Jun 2026 15:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part22-parallel-tool-calling-zh/</guid><description>LLM 說「我需要查 User Profile、Order History、Risk Score」。
最差的工程師說：「好，我一個一個查。」
FDE 說：「三個互相獨立——我同時查，總延遲從 T₁+T₂+T₃ 降到 max(T₁,T₂,T₃)。」
這就是這題考的核心思維。
面試情境 面試官： 「Gemini 判定需要同時呼叫三個工具：get_user_profile、get_order_history、get_risk_score。這三個工具執行時間不同。有時候工具 B 的輸入必須依賴工具 A 的輸出。你如何設計動態工具執行引擎最大化並行，並處理這種動態依賴關係？」
一、核心問題：順序執行的延遲代價 場景：LLM 決定需要呼叫三個工具 get_user_profile → 150ms get_order_history → 400ms get_risk_score → 300ms 順序執行（最差的方案）： 時間軸： 0 150 550 850ms │─────│─────│─────│ [Profile] [Orders] [Risk] Total: 150 + 400 + 300 = 850ms 並行執行（最優方案，如果互相獨立）： 時間軸： 0 400ms │─────────────────│ [Profile 150ms] [Orders 400ms ] ← 決定總延遲 [Risk 300ms ] Total: max(150, 400, 300) = 400ms（節省 53%） 在 Multi-turn Agent 中，每次推理前的 Tool 執行延遲會直接累積到 E2E 延遲：</description></item><item><title>FDE 面試指南 Part 52：百萬級 Agent Tool-Calling 的全域非同步並行優化與扇出控制</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part52-tool-fanout-optimization-zh/</link><pubDate>Mon, 08 Jun 2026 09:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part52-tool-fanout-optimization-zh/</guid><description>大多數工程師遇到「Agent 要並行呼叫 15 個 API」時，第一反應是 asyncio.gather()，然後假設「全部回來再合併」。
真正的 Staff FDE 知道：gather 是把所有雞蛋放進同一個計時炸彈。
正確答案不是「更快地等待」，而是動態熔斷、投機複製、強制截止、局部渲染——在 1.5 秒內交出 80% 的答案，比等 30 秒的「完美答案」更有價值。
系統設計的成熟度，體現在你如何優雅地處理你控制不了的那 20%。
面試情境 面試官：「你負責一個 AI 理財 Agent 的後端架構。用戶問：『幫我分析我持有的 15 檔美股今天的技術指標。』Agent 需要並行呼叫 15 次外部股票 Data API。請問：（1）如果單純用 asyncio.gather() 並行發起，你能預期哪些生產環境問題？（2）你會如何設計一個能應對 API 超時、Rate Limit、部分失敗的進階工具執行引擎？請從架構、程式碼模式、降級策略三個維度說明。」
一、核心問題：為什麼 gather() 在生產環境是炸彈 1.1 問題的表面現象 理財 Agent 接到用戶指令：「分析我持有的 AAPL、TSLA、NVDA… 等 15 檔美股的技術指標」。
Agent 的工具調用計畫很清楚：針對每一個股票代號，呼叫一次 get_stock_indicators(ticker) ——這是 15 次獨立的外部 HTTP 請求。
最直覺的實作是：
1results = await asyncio.gather( 2 *[get_stock_indicators(ticker) for ticker in tickers] 3) 順序執行的基準延遲：15 calls × 平均 2s per call = 30 秒。用戶體驗直接崩潰。</description></item></channel></rss>