← Lesson
Your First Tiny Agent
Joeven
Run
Reset
Python loads on first run
from typing import Callable JOBS = { 17: {"status": "failed", "error": "timeout talking to vendor"}, 42: {"status": "ok", "error": None}, } def tool_get_job(job_id): if job_id not in JOBS: return {"error": "not found"} return JOBS[job_id] def tool_finish(answer): return {"final": answer} TOOLS: dict[str, Callable] = { "get_job": lambda **kw: tool_get_job(int(kw["job_id"])), "finish": lambda **kw: tool_finish(str(kw["answer"])), } def fake_model(transcript): # Pretend the LLM read the user goal and tool docs. if not any(t.get("role") == "tool" for t in transcript): return {"tool": "get_job", "args": {"job_id": 17}} job = transcript[-1]["content"] status = str(job.get("status", job.get("error", "unknown"))) err = job.get("error") if err is None: err_text = "none" else: err_text = str(err) answer = "Job 17 is " + status + ": " + err_text return {"tool": "finish", "args": {"answer": answer}} def run_agent(goal, max_steps=4): transcript = [{"role": "user", "content": goal}] for step in range(1, max_steps + 1): decision = fake_model(transcript) name = decision["tool"] args = decision["args"] result = TOOLS[name](**args) print( "step " + str(step) + ": " + name + "(" + str(args) + ") -> " + str(result) ) if name == "finish": return result["final"] transcript.append({"role": "tool", "name": name, "content": result}) return "budget exceeded" print("ANSWER:", run_agent("What is the status of job 17?")) print("unknown job probe:", tool_get_job(99))
Run to execute this in your browser. Nothing is sent to a server.