Към всички skills

tool-calling-tutor

WenyuChiou · Данни и AI

Use when a tool-calling agent does not call a tool, sends wrong arguments, loops without stopping, or needs a function schema. Guides a four-branch diagnosis and five-step schema repair. Do not use for framework-specific, MCP-server, or production-observability questions.

Оригинален текст · няма потвърден превод на български

Теми: agentic-ai · agentic-workflows · ai-agent · ai-agents · awesome-list · chinese-llm · claude-code · claude-skills · cli · learning-roadmap · llm · llm-agents · mcp · model-context-protocol · multi-agent-systems

Първо прочетете инструкцията.

Файлът се зарежда от посочения източник само по ваше действие. Можете да го прочетете тук, да го копирате или да го запазите като .md.

Оригинален SKILL.md
GitHub хранилище
Звезди на репото
7155
Лиценз
MIT
Последна проверка на записа
21.09.2026 г.

Добавете в своя инструмент.

Командата отваря избора на skills от репозитория. Прочетете файла и условията на автора преди изпълнение.

npx skills add WenyuChiou/awesome-agentic-ai-zh

Страницата копира текст. Не инсталира и не изпълнява нищо на устройството ви.

Откъс от SKILL.md

Началото на файла на автора, без превод.

Tool Calling Tutor

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.

Step 1 — Triage(first thing you do)

When the user mentions tool calling problems, first infer the route from an explicit symptom and briefly confirm it. Ask one multiple-choice question only when the symptom is not explicit:

  1. (a) LLM 不呼叫我的 tool — 模型直接用自然語言回答、完全沒觸發 tool_calls
  2. (b) Tool 被呼叫、但參數錯 — 呼叫對 tool,但 arguments 不對(型別錯、缺欄位、值不合理)
  3. (c) ReAct loop 跑不停 / 漏步 — 多步 loop 無限循環,或者中間漏一個 tool 沒呼叫
  4. (d) 我從零開始、還沒寫 schema — 用戶要新做一個 tool、想知道 schema 怎麼設計

明確的症狀不用重問;確認你推定的 route 後直接繼續。每個 branch 走的 reference 不同。

Step 2 — Branch by symptom

(a) LLM 不呼叫 tool → 看 description 與工具邊界

先檢查這 3 項:

  1. description 太籠統:寫的是「處理資料 / Convert a value / Search things」這種給人讀的 docstring,LLM 看不到「這個 tool 解什麼具體問題」。看 debug-flowchart.md Section A。
  2. 多 tool 邊界互相重疊:兩個 tool 的 description 都能套到 user query、LLM 選不出來、乾脆都不選。
  3. 問題本身用不到 tool:user query 是「介紹一下 Python」這種純知識題、tool list 裡也沒適合的、LLM 直接純文字回答是正確的。

怎麼修:把 description 從「做什麼」改寫成「何時用」。對照 schema-evolution.md 的 bad → good A/B。

(b) Tool 被呼叫、但參數錯 → 看 parameters schema

先檢查這 3 項:

  1. 參數型別全用 string:{"value": {"type": "string"}} LLM 不知道要傳 number。改成 {"type": "number"}。
  2. 沒有 required:模型可能漏傳必填欄位。明列 "required": ["value", "unit"]。
  3. enum 該用沒用:unit: string 讓 LLM 傳 "C" "Celsius" "celsius" 都有可能。改 "enum": ["celsius", "fahrenheit"]。

對照 schema-evolution.md 的 4 個改進。

(c) ReAct loop 跑不停 / 漏步 → 看 control flow

跑不停的 3 個典型原因:

  1. 忘記把 assistant response 加回 messages——下輪 LLM 看不到自己上輪講過什麼、會無限重複
  2. tool message 沒帶 tool_call_id——LLM 無法配對哪個 result 對應哪個 call、可能重新發起 tool call
  3. 沒設 max_iter safety net——當 tool 結果寫得不好、LLM 會無限呼叫

漏步(多步任務中間少一步)的原因:

  1. 先確認目前支援:用固定的簡單 fixture 確認目前 SDK/client 與 model 支援 tool calling;再以相同 fixture、相同設定比較每次結果。不要從 model 名稱或大小推論能力。
  2. Tool description 沒講「必要前置」:譬如 to_percentage 應該寫「Convert a ratio (e.g., 0.31) into percentage. Call this LAST after dividing.」明示順序。

Целият SKILL.md в GitHub