Structured tool calls on the AI Agents track. Function calling is the model returning a tool name and a JSON object, not prose that you scrape. The application validates the JSON against the schema, then runs the function. Invalid JSON is a model error, not a tool error.
This lesson assumes you already worked through ReAct: reason, then act.
The idea in practice
Reject unknown keys. Coerce numbers carefully. If validation fails, send the schema error back as the observation and allow one repair. Do not execute a half-parsed call.
A concrete check
goal = {
'track': 'AI Agents',
'lesson': 'Structured tool calls',
}
checks = [
'input available at decision time',
'score matches the real decision',
'failure case written down',
]
print(goal['lesson'])
for item in checks:
print('-', item)
Run the sketch locally if you have Python. The printout is a reminder of the checks, not a trained model. Replace the strings with the real inputs from your own example before you treat it as a design.
What usually goes wrong
Executing text like 'please refund order 12' by regex is brittle and will fire on quoted examples inside the user's message. When this happens, stop adding parameters or tools. Fix the check, the data, or the permission, then run the same example again.
What to write down
- The input you are allowed to use at decision time.
- The output and the score or pass rule.
- One failure you will test on purpose.
- What you will not claim the system can do.
Practice
Write a JSON schema for refund_order with order_id and reason. Give one valid call and one invalid call.
Self-check
- Say Structured tool calls in one sentence that mentions an input and an output.
- Name the failure mode in this lesson and the check that would catch it.
Done when: you can explain this lesson without the page open, and you have a written failure case.