Skip to main content
One agent, many models — override the LLM for a single call with config=, or permanently swap it with switch_model(), all while keeping your conversation history intact.
The user keeps one agent; per-call config= or switch_model() changes the LLM without losing history.

Override vs Switch

Quick Start

1

Override model for a single call

The agent uses gpt-4o-mini by default. Passing config={"model": "gpt-4o"} upgrades just that one call. The next call reverts to gpt-4o-mini.
2

Permanently switch the agent's model

switch_model() updates the agent in place. All future calls use the new model, and the conversation history is fully preserved.

How It Works

Per-call config overrides are isolated to that single invocation and never mutate the agent’s defaults. This makes them safe for concurrent use — multiple threads can call the same agent with different models simultaneously. switch_model() updates agent.llm and recreates the internal LLM instance. Conversation history stored in agent._chat_history is untouched.

Configuration Options

chat() config keys:
switch_model() signature:
Accepts any model string supported by LiteLLM (same format as the llm= constructor argument).

Agent Config TypeScript Reference

TypeScript agent configuration

Agent Rust Reference

Rust agent configuration

Common Patterns

Route by task complexity:
Override temperature for creative tasks:
Escalate on failure:

Best Practices

Default to a fast, cheap model and escalate to a powerful model only for complex requests. This gives you the best cost-to-quality ratio without managing multiple agents.
When a user explicitly asks to use a different model, call switch_model() so all subsequent turns in that session use the new model automatically. Per-call config is better for one-off overrides.
Config overrides are applied within the scope of a single chat() call and never persist to agent state. Multiple concurrent callers can override different models on the same agent instance safely.
switch_model() only changes the model — it does not clear agent._chat_history. The new model receives the full conversation context from previous turns.

Model Failover

Automatic fallback when a model call fails

Model Router

Dynamic model selection based on task type