/improve-agent generates probes from an agent’s instructions to find new weaknesses. Evals preserve known behavior as repeatable cases.
Cases
Cases live inevals/cases.py. Each case sends one input to an agent (agent=) and optionally checks two things:
- judge:
AgentAsJudgeEvalscores the response againstcriteria(binary pass/fail) using an LLM. - reliability:
ReliabilityEvalchecks which tools fired againstexpected_tool_calls.
evals/cases.py
smoke, release, and live. This case uses the live tag because its answer depends on the open web.
Run the suite
The suite runs on the host, calls the model, and logs results to your local Postgres througheval_db. Start the platform first (docker compose up -d) and make sure .env has your OPENAI_API_KEY.
1
Create a virtual environment
The eval suite runs on the host and needs a local virtual environment:Activate it:
2
Run the eval suite
Eval Summary table.
Results write to Postgres via eval_db. The eval history shows up on os.agno.com alongside your sessions and traces, so you can see when a case started failing and what changed.
Diagnose failures with your coding agent
Run/create-evals to add coverage for an agent. The skill maps the agent’s behavior, proposes cases, writes them to evals/cases.py, and verifies the new cases.
Open your coding agent and run:
When to run evals
The template registers a daily
run-evals schedule in the disabled state because it uses model calls. Enable it from the AgentOS UI when you want the smoke-tagged cases to run daily. See Scheduler for the cron API.
What good cases look like
- Specific. “Returns a JSON object with
tickerandprice” beats “Returns the right answer”. - Stable. Avoid prompts whose correct answer changes daily. Use phrasing like “describes a real, recent…” instead of locking in a specific result.
- Scoped to one behavior. One case per behavior makes failures easy to read.
- Anchored to tools.
expected_tool_callscatches the failure mode where the agent confidently makes things up instead of calling a tool.