You summarise client call transcripts by hand — read the whole thing, pull the action items, write a bullet list. How long does that take for a 60-minute call?
Twenty to thirty minutes. Sometimes I miss things if the client was jumping between topics.
That's 30 minutes unbilled every time. Call the model from Python and you get a string back in under two seconds — one you can format, store, or pass to the next step:
result = Agent(model).run_sync("Summarise this transcript in three bullet action items.")
print(result.output)Hold on — where does model come from? I didn't import anything.
The sandbox preamble injects Agent and model before your code runs — like office infrastructure that's already on when you arrive. You never configure the model yourself; you just call it. The entire function is four lines:
def run_agent(prompt: str) -> str:
result = Agent(model).run_sync(prompt)
return result.outputThat's it? Transcript in, summary out — from a live model — in four lines?
Every call is live. Two calls with the same prompt can return different phrasings because models sample, they don't look up. Test cases check that you got a non-empty string, not exact words — shape matters, wording is the model's job.
I've been spending 30 minutes per transcript when the answer was literally Agent(model).run_sync(prompt).output the whole time.
Now you have a repeatable function you can call from a script, a dashboard, or a scheduled job. That's the difference between a tool you use once and a tool you build with.
Agent(model).run_sync(prompt).output WorksThree moving parts, one line.
Agent(model) wraps your configured model in a callable object. The sandbox preamble injects both Agent and model before your code runs — no import statements needed.
.run_sync(prompt) sends the prompt to the model and blocks until the response arrives. No async/await. Returns an AgentRunResult object — not a string.
.output is the string field on that result object.
Use .output. Not .data (older API) and not .result (does not exist). Both raise AttributeError. Every lesson in this track uses .output.
The return value type is always str for basic agent calls — a plain Python string you can slice, split, search, or pass to the next step.
You summarise client call transcripts by hand — read the whole thing, pull the action items, write a bullet list. How long does that take for a 60-minute call?
Twenty to thirty minutes. Sometimes I miss things if the client was jumping between topics.
That's 30 minutes unbilled every time. Call the model from Python and you get a string back in under two seconds — one you can format, store, or pass to the next step:
result = Agent(model).run_sync("Summarise this transcript in three bullet action items.")
print(result.output)Hold on — where does model come from? I didn't import anything.
The sandbox preamble injects Agent and model before your code runs — like office infrastructure that's already on when you arrive. You never configure the model yourself; you just call it. The entire function is four lines:
def run_agent(prompt: str) -> str:
result = Agent(model).run_sync(prompt)
return result.outputThat's it? Transcript in, summary out — from a live model — in four lines?
Every call is live. Two calls with the same prompt can return different phrasings because models sample, they don't look up. Test cases check that you got a non-empty string, not exact words — shape matters, wording is the model's job.
I've been spending 30 minutes per transcript when the answer was literally Agent(model).run_sync(prompt).output the whole time.
Now you have a repeatable function you can call from a script, a dashboard, or a scheduled job. That's the difference between a tool you use once and a tool you build with.
Agent(model).run_sync(prompt).output WorksThree moving parts, one line.
Agent(model) wraps your configured model in a callable object. The sandbox preamble injects both Agent and model before your code runs — no import statements needed.
.run_sync(prompt) sends the prompt to the model and blocks until the response arrives. No async/await. Returns an AgentRunResult object — not a string.
.output is the string field on that result object.
Use .output. Not .data (older API) and not .result (does not exist). Both raise AttributeError. Every lesson in this track uses .output.
The return value type is always str for basic agent calls — a plain Python string you can slice, split, search, or pass to the next step.
Create a free account to get started. Paid plans unlock all tracks.