Developer Documentation

Who this is for: contributors and advanced users looking for development-oriented docs.

Areas

LLM Usage Accounting

Evaluator LLM accounting is trace-driven.

Semantics:

Model Validation

Structured model-output validation is extensible at runtime.

The default exception validator improves the common JSONDecodeError: Extra data case into a clearer explanation: the model returned more than one JSON value in a single structured response, which usually means it emitted multiple decisions in one turn.

Runtime extension points:

These validators are code-level extension points, not config-driven plugins.

Programmatic Workflow Execution

The framework now supports deterministic, code-driven orchestration without entering the parent agent’s LLM decision loop.

The public surface is agent-owned:

The important design point is parity with native orchestration. Programmatic workflow steps reuse the same parent-owned subagent path as call_subagent and call_subagents, so they still produce:

The first iteration is intentionally small and extensible:

This makes AgentBehavior.before_run(...) a supported place to run deterministic controller logic while still preserving the framework’s native trace and callback semantics.

For the full developer guide, examples, and authoring guidance, see Programmatic Workflow Agents.

Evaluator Agent Model Overrides

agent_framework_evaluator now supports run-scoped model overrides for the agent under test. This is separate from DEFAULT_EVAL_MODEL, which still controls the evaluator/scoring LLM.

Two scopes are supported:

The important runtime detail is where the override is applied:

Evaluator surfaces:

Next Steps