Tool Calling Tutor logo

Tool Calling Tutor

CommunityPopular
WenyuChiou
tool-calling-tutor

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.

Overview

PublisherWenyuChiou
Repositoryawesome-agentic-ai-zh
Skill nametool-calling-tutor
Stars
7.1K
Forks
956
Bundled files
15
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 15 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by WenyuChiou on GitHub. Read the source before you install it.

Installation

Install the Tool Calling Tutor AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/WenyuChiou/awesome-agentic-ai-zh.git /tmp/awesome-agentic-ai-zh
mkdir -p .claude/skills
cp -r /tmp/awesome-agentic-ai-zh/examples/stage-5/tool-calling-tutor .claude/skills/tool-calling-tutor
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Tool Calling Tutor in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Tool Calling Tutor on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Tool Calling Tutor is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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.」明示順序。

對照可跑範例ReAct startermulti-step starter

(d) 從零設計 schema → 走 5 步法

對任何新 tool,按這 5 步:

  1. Define:一句話講這個 tool 做什麼(不超過 15 字)。寫不出來 = tool scope 太大、要拆。
  2. Describe(LLM 視角):把 description 寫成「Use this when the user asks to / mentions / wants ...」格式,不是「This function ...」。
  3. Type:每個 param 用正確 type — number / boolean / array / object,不要全 string
  4. Constrainrequired 列必填欄位;模糊邊界用 enum 收斂;description 補欄位用途。
  5. Error pattern:執行前驗證 tool 名稱與 args。可預期的 tool 錯誤回傳連結 call ID 的 {"error": "...", "retry_hint": "..."};非預期例外必須可見並寫入 log。重試由應用程式的有界 policy(次數與規則)決定,不由 LLM 決定。

Fork template:直接 copy single-turn starter.pymulti-turn starter.pyTOOLS_SPEC + TOOL_IMPL 結構、改成你的 tool。

Step 3 — SDK 差異提醒

使用者可能在 Anthropic / OpenAI / Ollama 之間切換、SDK shape 不同。看 sdk-diff.md 的 3 行對照表。若 SDK 或 model 沒說明,問一次;接著以固定 fixture 確認目前 tool-calling 支援並作同條件比較。

Step 4 — Mock test first(強烈建議)

每個 tool-calling 程式都應該有 mock-based test、不打真 API:

  • 依目前 SDK mock 對應 response shape
  • 對同一 fixture 保持 model 與設定一致

完整 mock pattern 對照 test.py。先把 test 跑通、再連真的 LLM。

Step 5 — When to escalate / route away

這個 skill 處理:

  • LangChain / LangGraph / CrewAI / Pydantic AI 等 framework 問題 → 路 Stage 4
  • MCP server / client 設計 → 路 cookbook 2:寫你的第一個 MCP server
  • Production 監控 / observability / cost tracking → 路 Stage 7
  • Prompt engineering 一般技巧 → 路 Stage 2

碰到這些情境、直接告訴使用者「這個 skill 處理 tool-use mechanics、你這個問題需要 Stage X、建議去看 ...」、不要硬吃下去。

Don't

  • 不要直接幫使用者寫一整份 starter.py——他們需要練 mental model、不是拿到答案 copy-paste。指他們 fork Stage 3 starters 後改 TOOLS_SPEC
  • 不要在症狀已明確時重問 Step 1——確認 route 後繼續;不明確才提問。
  • 不要假設 user 用哪個 SDK 或 model——先確認目前 tool-calling 支援。
  • 不要把 schema-design 規則背一遍——schema cheatsheet 已經寫好,指過去就行。

References

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Tool Calling Tutor AI skill do?

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.

Why use Tool Calling Tutor on TypingMind?

Because you install it once and use it with any model. Tool Calling Tutor is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Tool Calling Tutor in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/WenyuChiou/awesome-agentic-ai-zh/tree/main/examples/stage-5/tool-calling-tutor. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Tool Calling Tutor?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Tool Calling Tutor?

As many as you like. As long as a model supports skills, you can use Tool Calling Tutor with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Tool Calling Tutor AI skill free?

Yes. It is published on GitHub by WenyuChiou under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇