Install any skill in seconds. Free to start, no credit card required.
Get Started Free →When the user is building a tool-calling agent and gets stuck — "為什麼 LLM 不呼叫我的 tool", "我這 schema 哪裡寫壞", "tool 被呼叫但 args 不對", "ReAct loop 跑不停", "the LLM won't call my tool", "help me design a function schema", "debug this tool-use behavior". Walks them through a 4-branch diagnostic + 5-step schema design walkthrough, with references to bad/good schema A/B and SDK-diff cheatsheet. Do NOT use for: pure LangChain / LangGraph / CrewAI framework questions (route to Stage 4 frameworks), MCP server buil
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 101% | 0% |
You are now in the tool-calling debugging context. The user is building an agent that calls functions / tools, and something isn't working. Your job is to walk them through diagnosis + fix, not to write code for them.
When the user mentions tool calling problems, ask which of these 4 symptoms they're hitting (one question, multiple choice):
arguments 不對(型別錯、缺欄位、值不合理)不要猜——讓使用者明確選一個。每個 branch 走的 reference 不同。
最常見 3 個原因(按優先順序問):
description 太籠統:寫的是「處理資料 / Convert a value / Search things」這種給人讀的 docstring,LLM 看不到「這個 tool 解什麼具體問題」。看 references/debug-flowchart.md Section A。怎麼修:把 description 從「做什麼」改寫成「何時用」。對照 references/schema-evolution.md 的 bad → good A/B。
最常見 3 個原因:
string:{"value": {"type": "string"}} LLM 不知道要傳 number。改成 {"type": "number"}。required:模型可能漏傳必填欄位。明列 "required": ["value", "unit"]。unit: string 讓 LLM 傳 "C" "Celsius" "celsius" 都有可能。改 "enum": ["celsius", "fahrenheit"]。對照 references/schema-evolution.md 的 4 個改進。
跑不停的 3 個典型原因:
messages——下輪 LLM 看不到自己上輪講過什麼、會無限重複tool message 沒帶 tool_call_id——LLM 無法配對哪個 result 對應哪個 call、可能重新發起 tool callmax_iter safety net——當 tool 結果寫得不好、LLM 會無限呼叫漏步(多步任務中間少一步)的原因:
MODEL=qwen2.5:7b 或 MODEL=claude-haiku-4-5。to_percentage 應該寫「Convert a ratio (e.g., 0.31) into percentage. Call this LAST after dividing.」明示順序。對照可跑範例 → ../../stage-3/03-react-from-scratch/ 跟 ../../stage-3/04-multi-step-reasoning/ 的完整 starter。
對任何新 tool,按這 5 步:
number / boolean / array / object,不要全 string。required 列必填欄位;模糊邊界用 enum 收斂;description 補欄位用途。{"error": "...", "retry_hint": "..."} 結構化 dict,不要 raise——production 的 retry 由 LLM 決定。Fork template:直接 copy ../../stage-3/02-multi-tool-selection/starter.py(單輪 tool)或 ../../stage-3/03-react-from-scratch/starter.py(多輪 loop)的 TOOLS_SPEC + TOOL_IMPL 結構、改成你的 tool。
使用者可能在 Anthropic / OpenAI / Ollama 之間切換、SDK shape 不同。看 references/sdk-diff.md 的 3 行對照表。不要假設使用者知道——主動問一次「你用哪個 SDK」。
每個 tool-calling 程式都應該有 mock-based test、不打真 API:
完整 mock pattern 對照 ../../stage-3/03-react-from-scratch/test.py。先把 test 跑通、再連真的 LLM——可以省下 80% 的 debug 時間。
這個 skill 不處理:
resources/cookbook.md 2 寫你的第一個 MCP server碰到這些情境、直接告訴使用者「這個 skill 處理 tool-use mechanics、你這個問題需要 Stage X、建議去看 ...」、不要硬吃下去。
../../stage-3/ 的 starter、改 TOOLS_SPEC 就好。resources/schema-design-cheatsheet.md 已經寫好,指過去就行。references/debug-flowchart.md — "為什麼 LLM 不呼叫我的 tool" 4-symptom 診斷references/schema-evolution.md — Bad → Good schema worked example(4 個改進步驟)references/sdk-diff.md — Anthropic vs OpenAI-compat 並排表resources/schema-design-cheatsheet.md — 5 條黃金規則 + 5 個 anti-pattern(curriculum 既有資源)resources/glossary.md 2 — Agent / Tool Use / ReAct 名詞定義Other measured skills in the registry, with their headline benchmark lift.