ЁЯПл The SchoolтА║ЁЯза AIтА║ЁЯУЛ рдзрдбрд╛ 11 тАФ Agents рдЖрдгрд┐ tools: to-do рдпрд╛рджреА рдЖрдгрд┐ hall pass рдЕрд╕рд▓реЗрд▓рд╛ рд╡рд┐рджреНрдпрд╛рд░реНрдереА
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯУЛ рдзрдбрд╛ 11 тАФ Agents рдЖрдгрд┐ tools: to-do рдпрд╛рджреА рдЖрдгрд┐ hall pass рдЕрд╕рд▓реЗрд▓рд╛ рд╡рд┐рджреНрдпрд╛рд░реНрдереА

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 11 ┬╖ рдорд╛рдЧреЗ: lesson-10-rag ┬╖ рдкреБрдвреЗ: lesson-12-diffusion


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рдзрдбреЗ 01тАУ10, рдЖрдгрд┐ "AI agents" рдореНрд╣рдгрддрд╛рдирд╛ рд╕рдЧрд│реНрдпрд╛рдВрдирд╛ рдЕрднрд┐рдкреНрд░реЗрдд рдЕрд╕рд▓реЗрд▓рд╛ рдирдореБрдирд╛: рдЕрд╕реЗ models рдЬреЗ рдлрдХреНрдд рдЙрддреНрддрд░ рджреЗрдд рдирд╛рд╣реАрдд тАФ рддреЗ loop рдордзреНрдпреЗ, tools рд╡рд╛рдкрд░реВрди рдХреГрддреА рдХрд░рддрд╛рдд.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рдЖрддрд╛рдкрд░реНрдпрдВрдд рдЖрдкрд▓рд╛ рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдлрдХреНрдд рдмреЛрд▓рддреЛ. "847├Ч293 рдХрд┐рддреА?" рд╡рд┐рдЪрд╛рд░рд╛ рдЖрдгрд┐ рддреЛ рд╢рдХреНрдп рд╡рд╛рдЯрдгрд╛рд░реЗ рдЕрдВрдХ рдУрд│рдЦрддреЛ ЁЯШм (рдзрдбрд╛ 05 тАФ рдЦрд░реЗ рдЧрдгрд┐рдд рдирд╛рд╣реА!). рд╡рд┐рдЪрд╛рд░рд╛ "рдорд╛рдЭреНрдпрд╛ calendar рд╡рд░ рдХрд╛рдп рдЖрд╣реЗ?" рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рддреЗ рдХрд│реВ рд╢рдХрдд рдирд╛рд╣реА (desk рд╡рд░ рдХрд╛рд╣реАрдЪ рдирд╛рд╣реА, L08).

рдЖрддрд╛ рддреНрдпрд╛рд▓рд╛ рд╢рд╛рд│реЗрдЪреЗ рддреАрди рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджреНрдпрд╛:

  1. ЁЯз░ Tools: рдПрдХ calculator, рдЧреНрд░рдВрдерд╛рд▓рдпрд╛рдЪрд╛ catalog, рдПрдХ phone, forms submit рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА. рдФрдкрдЪрд╛рд░рд┐рдХрдкрдгреЗ: functions рдЪреА рд╡рд░реНрдгрдиреЗ тАФ "calculator: рдорд▓рд╛ рдПрдХ expression рджреНрдпрд╛, рдореА рддреНрдпрд╛рдЪреА рдХрд┐рдВрдордд рдкрд░рдд рджреЗрддреЛ."
  2. ЁЯУЛ рдПрдХ to-do рдпрд╛рджреА: рдкреНрд░рд╢реНрди рдирд╡реНрд╣реЗ, рдПрдХ рдзреНрдпреЗрдп тАФ "рд╡рд░реНрдЧрд╛рдЪреА рд╕рд╣рд▓ рдЖрдпреЛрдЬрд┐рдд рдХрд░рд╛."
  3. ЁЯОл рдПрдХ hall pass: рдЬрд╛рдКрди рдЧреЛрд╖реНрдЯреА рдХрд░реВрди рдкрд░рдд рдпреЗрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА.

рдЖрдгрд┐ рддреЛ agent loop рдЪрд╛рд▓рд╡рддреЛ: рд╡рд┐рдЪрд╛рд░ тЖТ рдХреГрддреА тЖТ рдирд┐рд░реАрдХреНрд╖рдг тЖТ рдкреБрдиреНрд╣рд╛ тАФ рдзреНрдпреЗрдп рдкреВрд░реНрдг рд╣реЛрдИрдкрд░реНрдпрдВрдд, рдХрд┐рдВрд╡рд╛ steps рдЪреЗ рдмрдЬреЗрдЯ, timeout рдХрд┐рдВрд╡рд╛ рд╡рд╛рд░рдВрд╡рд╛рд░ рдЕрдкрдпрд╢ рдерд╛рдВрдмрд╛рдпрд▓рд╛ рд╕рд╛рдВрдЧреЗрдкрд░реНрдпрдВрдд:

рд╡рд┐рдЪрд╛рд░: "рд╕рд╣рд▓. рдЖрдзреА: рдХрд┐рддреА рдореБрд▓реЗ? рдореА roster рддрдкрд╛рд╕рддреЛ." рдХреГрддреА: roster.count() рдмреЛрд▓рд╛рд╡рддреЛ тАФ рдЧрджреНрдп рдирд╡реНрд╣реЗ, tool-call рд▓рд┐рд╣рд┐рддреЛ. рдирд┐рд░реАрдХреНрд╖рдг: result (23) рддреНрдпрд╛рдЪреНрдпрд╛ desk рд╡рд░ рдпреЗрддреЛ. рд╡рд┐рдЪрд╛рд░: "23 рдореБрд▓реЗ, рдореНрд╣рдгрдЬреЗ 3 pizzasтАж рдкреБрдвреЗ рд╣рд╡рд╛рдорд╛рди рддрдкрд╛рд╕рддреЛ." тАж

рдкреНрд░рддреНрдпреЗрдХ рдлреЗрд░реА рдЕрдЬреВрдирд╣реА рдзрдбрд╛ 05 рдЪрд╛ next-token рдЦреЗрд│рдЪ рдЖрд╣реЗ! "tool рдмреЛрд▓рд╛рд╡рдгреЗ" = model рдиреЗ рдПрдХ рдЦрд╛рд╕ token рдирдореБрдирд╛ рд▓рд┐рд╣рд┐рдгреЗ рдЬреЛ harness рдЪрд╛рд▓рд╡рддреЛ; result desk рд╡рд░ paste рд╣реЛрддреЛ; рдЕрдВрджрд╛рдЬ рдкреБрдвреЗ рдЪрд╛рд▓реВ рд░рд╛рд╣рддреЛ. рдмреЛрд▓рдгреЗ, рдкрд░рд┐рдгрд╛рдорд╛рдВрд╕рд╣.

рджреЛрди рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдЗрд╢рд╛рд░реЗ: рдЪреБрдХрд╛ рд╡рд╛рдврдд рдЬрд╛рддрд╛рдд (рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдПрдХ рдЪреБрдХреАрдЪреЗ рд╡рд│рдг = рддреНрдпрд╛рдирдВрддрд░ рд╕рдЧрд│реАрдХрдбреЗ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рдиреЗ рдЪреВрдХ тАФ рдкрд╛рдп рдлреБрдЯрд▓реЗрд▓рд╛ рдзрдбрд╛ 09 ЁЯж┐), рдЖрдгрд┐ рд╕реНрд╡рд╛рдпрддреНрддрддреЗрд▓рд╛ guardrails рд▓рд╛рдЧрддрд╛рдд: рдореБрд│рд╛рдд read-only tools, рдЦрд░реНрдЪрд╛рдЪреНрдпрд╛ рдорд░реНрдпрд╛рджрд╛, human sign-off gates ("рд╕рд╣рд▓реАрдЪреНрдпрд╛ forms рд╡рд░ рд╢рд┐рдХреНрд╖рд┐рдХреЗрдЪреА рд╕рд╣реА рд▓рд╛рдЧрддреЗ"), рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ step рдЪреЗ logs.

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    goal["ЁЯУЛ goal: 'organize<br/>the class picnic'"]
    think["ЁЯза THINK<br/>next-token prediction<br/>planning in words"]
    act["ЁЯз░ ACT<br/>writes a tool call:<br/>roster.count()"]
    look["ЁЯСА LOOK<br/>result lands on the desk:<br/>23 kids"]
    done["тЬЕ goal met - report back"]
    guard["ЁЯЪз guardrails: read-only default ┬╖<br/>caps ┬╖ human sign-off ┬╖ logs ┬╖<br/>max steps ┬╖ timeout ┬╖ stop on repeated failure"]
    goal --> think -->|"1"| act -->|"2 harness executes"| look -->|"3 loop"| think
    think -->|"4 eventually"| done
    guard -.-> act

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

Agents рдордзреНрдпреЗ AI рд╕рд▓реНрд▓реНрдпрд╛ рдХрдбреВрди рдкрд░рд┐рдгрд╛рдорд╛рдВ рдХрдбреЗ рд╡рд│рддреЛ тАФ booking, рджреБрд░реБрд╕реНрддреА, filing, рд╕рдВрд╢реЛрдзрди. рдкреНрд░рддреНрдпреЗрдХ framework рдЪреА рдореЛрдареА рдмрд╛рддрдореА ("autonomous agents! computer use!") рдореНрд╣рдгрдЬреЗ рд╣рд╛рдЪ рдПрдХ loop, рдЪрд╛рдВрдЧрд▓реНрдпрд╛ tools рдЖрдгрд┐ рд▓рд╛рдВрдм рджреЛрд░реАрд╕рд╣. рд╣рд╛ loop тАФ рдЖрдгрд┐ рддреЛ рдЕрдЬреВрдирд╣реА рдкрд╛рд╡рддреНрдпрд╛рдВрд╕рд╣ next-token prediction рдЪ рдЖрд╣реЗ рд╣реЗ тАФ рдЬрд╛рдгрд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣реА рдЬрд╛рджреВ рдЖрдгрд┐ рдзреЛрдХрд╛ рджреЛрдиреНрд╣реА рд╢рд╛рдВрддрдкрдгреЗ рддреЛрд▓реВ рд╢рдХрддрд╛.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (harness рддреБрдореНрд╣реА рд╡реНрд╣рд╛ тАФ 10 рдорд┐рдирд┐рдЯреЗ)

рдХреЛрдгрддреНрдпрд╛рд╣реА chatbot рдордзреНрдпреЗ рд╣реЗ paste рдХрд░рд╛:

You have one tool: calc(expression) тЖТ number. To use it, reply with
ONLY: CALL calc("..."). I'll reply with the result. Then continue.
Task: what's 847├Ч293, minus 12% of it, split across 23 kids?

рддреНрдпрд╛рдЪреЗ calls рддреБрдореНрд╣реА рд╕реНрд╡рддрдГ рдЪрд╛рд▓рд╡рд╛ (рдХреЛрдгрддрд╛рд╣реА calculator), results рдкрд░рдд paste рдХрд░рд╛, рдЖрдгрд┐ рддреЛ loop рдХрд░рдд рдЙрддреНрддрд░рд╛рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрддрд╛рдирд╛ рдкрд╛рд╣рд╛. рдХрд╛рдорд╛рдЪреА рд╡рд╛рдЯрдгреА рдХрд╢реА рдЪрд╛рд▓рддреЗ рддреЗ рдЕрдиреБрднрд╡рд╛ тАФ model рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЛ, tools рдЧрдгрдирд╛ рдХрд░рддрд╛рдд, desk рд╕реНрдерд┐рддреА рд╡рд╛рд╣реВрди рдиреЗрддреЗ. guardrail рддреБрдореНрд╣реА рдЖрд╣рд╛рдд. ЁЯЪз

тПня╕П рдкреБрдвреЗ

рд╢реЗрд╡рдЯрдЪрд╛ рдзрдбрд╛: рдЪрд┐рддреНрд░ рдХрд╛рдврдгрд╛рд░реЗ models ЁЯОи тАФ "TV static тЖТ рдЪрд┐рддреНрд░" рдХрд╕реЗ рдЪрд╛рд▓рддреЗ (diffusion), рдЖрдгрд┐ рдПрдХрд╛ model рд▓рд╛ рдкрд╛рд╣рддрд╛ рдЖрдгрд┐ рдРрдХрддрд╛рд╣реА рдХрд╕реЗ рдЖрд▓реЗ.

git checkout lesson-12-diffusion

ЁЯУЛ Lesson 11 тАФ Agents & tools: a student with a to-do list and a hall pass

ЁЯУН You are here: Lesson 11 of 12 ┬╖ Previous: lesson-10-rag ┬╖ Next: lesson-12-diffusion


ЁЯУж What's in this branch

Lessons 01тАУ10, plus the pattern everyone means by "AI agents": models that don't just answer тАФ they act, in a loop, with tools.

ЁЯзТ Explain like I'm 5

So far our student only talks. Ask "what's 847├Ч293?" and he predicts likely digits ЁЯШм (lesson 05 тАФ not actual math!). Ask "what's on my calendar?" and he can't know (nothing on the desk, L08).

Now give him three school privileges:

  1. ЁЯз░ Tools: a calculator, the library catalog, a phone, permission to submit forms. Formally: function descriptions тАФ "calculator: give me an expression, I return the value."
  2. ЁЯУЛ A to-do list: a GOAL, not a question тАФ "organize the class picnic."
  3. ЁЯОл A hall pass: permission to go do things and come back.

And he works the agent loop: think тЖТ act тЖТ look тЖТ repeat тАФ until the goal is met, or a step budget, timeout or repeated failure says stop:

Think: "Picnic. First: how many kids? I'll check the roster." Act: calls roster.count() тАФ writes a tool-call, not prose. Look: the result (23) lands on his desk. Think: "23 kids, so 3 pizzasтАж check the weather next." тАж

Each round is still lesson 05's next-token game! "Calling a tool" = the model writing a special token pattern the harness executes; the result is pasted onto the desk; prediction continues. Talking, with consequences.

The two honest warnings: errors compound (one wrong turn early = confidently wrong everywhere after тАФ lesson 09 with legs ЁЯж┐), and autonomy needs guardrails: read-only tools by default, spending caps, human sign-off gates ("field-trip forms need the teacher's signature"), and logs of every step.

ЁЯЧ║я╕П Diagram

flowchart LR
    goal["ЁЯУЛ goal: 'organize<br/>the class picnic'"]
    think["ЁЯза THINK<br/>next-token prediction<br/>planning in words"]
    act["ЁЯз░ ACT<br/>writes a tool call:<br/>roster.count()"]
    look["ЁЯСА LOOK<br/>result lands on the desk:<br/>23 kids"]
    done["тЬЕ goal met - report back"]
    guard["ЁЯЪз guardrails: read-only default ┬╖<br/>caps ┬╖ human sign-off ┬╖ logs ┬╖<br/>max steps ┬╖ timeout ┬╖ stop on repeated failure"]
    goal --> think -->|"1"| act -->|"2 harness executes"| look -->|"3 loop"| think
    think -->|"4 eventually"| done
    guard -.-> act

тЭУ What

ЁЯдФ Why

Agents are where AI shifts from advice to outcomes тАФ booking, fixing, filing, researching. Every framework headline ("autonomous agents! computer use!") is this one loop with better tools and longer leashes. Knowing the loop тАФ and that it's still next-token prediction with receipts тАФ lets you judge both the magic and the risk soberly.

ЁЯзк Try it (be the harness тАФ 10 minutes)

In any chatbot, paste:

You have one tool: calc(expression) тЖТ number. To use it, reply with
ONLY: CALL calc("..."). I'll reply with the result. Then continue.
Task: what's 847├Ч293, minus 12% of it, split across 23 kids?

Execute its calls yourself (any calculator), paste results back, watch it loop to the answer. Feel how the division of labor works тАФ model thinks, tools compute, desk carries state. You are the guardrail. ЁЯЪз

тПня╕П Next

The finale: models that paint ЁЯОи тАФ how "TV static тЖТ picture" works (diffusion), and how one model learned to see and hear too.

git checkout lesson-12-diffusion
тЖР PreviousragNext тЖТdiffusion

This page is the lesson's README from the lesson-11-agents branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.