Skip to main content
Multiple reference models consult first — their perspectives fold into context — then a single aggregator model acts with full tool access and produces the final answer.
The user asks a tough question; reference models consult first, then the aggregator answers with tools.

Quick Start

1

Inline descriptor

Pass a dict with provider: "panel" to Agent(llm=...):
2

Named preset

Register once, reuse by name anywhere:

How It Works


Selecting a Model


Configuration Options

Extra options inside the dict descriptor (base_url, api_key, temperature, api_version, auth) survive both the inline and named-preset paths and reach the aggregator. Explicit Agent(base_url=..., api_key=...) arguments take precedence.

Common Patterns

High-accuracy Q&A

Creative writing with multiple voices

Local + cloud hybrid

Disable panel temporarily


Best Practices

Reference models run tool-free by design. Only the aggregator has tool access. This is intentional: references provide perspective, not actions. Don’t expect tool results from reference calls.
The default reference_temperature=0.0 gives you stable, deterministic advisory perspectives. Raise it only when you want diverse creative suggestions from references.
References and the aggregator cannot themselves be panel descriptors — the SDK raises ValueError on detection. This prevents infinite recursion and makes the call graph explicit.
Reference guidance is injected at the tail of the latest user turn, never in the system prompt. This keeps the stable cached prefix intact so Anthropic prompt caching stays effective.
If a reference model call fails, the SDK logs a warning and replaces the result with "(unavailable: reference call failed)". The aggregator still runs with the available perspectives.

LLM Configuration

Configure LLM providers and endpoints

Failover

Automatic fallback when a model fails

Model Router

Route requests to different models by criteria

Tools

Give agents executable capabilities