Skip to Content

Let a model think harder, or hand the conversation to a different one

Two skills that belong together. Some models spend extra computation before answering — slower, dearer, sometimes worth it. And you can swap the model mid-conversation without losing a word of it. This article covers whe
September 12, 2026 by
Let a model think harder, or hand the conversation to a different one
OdooBot
think first, then hand over
Pi Agent Guide · Part 8

Let a model think harder, or hand the conversation to a different one

Two skills that belong together. Some models spend extra computation before answering — slower, dearer, sometimes worth it. And you can swap the model mid-conversation without losing a word of it. This article covers when the extra thinking earns its cost, what a switch really does, and the bill that arrives quietly if you switch too often.

3 patterns
Cover almost every switch worth making
22,900 tokens
What four switches cost in rereading alone
50-80%
Observed saving from draft-then-review. A range, not a promise
Answering vs thinking

Some models answer. Some plan before they answer.

In Part 5 you saw the collapsible block that sometimes appears above an answer. It is the visible edge of a real difference in how a model works.

In plain terms

It is the difference between remembering a phone number and planning a route across town. One you say straight out. The other you work through first — and the working takes time you would never spend on the phone number.

  • A general model answers directly. Good for a short lookup, a simple rewrite, one tool call.
  • A reasoning model spends extra computation planning or checking first. That can help with an automation spanning several rooms, devices and time periods.

Two consequences follow. Usage: some providers bill reasoning as output, others as a separate category — accounting depends on model and route. Latency: it may take longer to answer, with no universal delay and no guarantee.

Read the block carefully. It may be provider-exposed reasoning, a summary, or usage information — not necessarily a private chain of thought, and a longer trace does not prove a better answer. And telling a general model to “think step by step” does not make it a provider-defined reasoning model.

The one setting that trips people up

The Add Model dialog has a field called thinkingFormat. It tells Pi Agent how a route represents reasoning data; it does not make a model reason.

ValueSet it when
zaiA compatible GLM direct route, which may use <think>…</think>, reasoning_content or another documented field. Verify the endpoint
deepseekDeepSeek-style reasoning, which arrives in message.reasoning_content, separate from message.content
BlankAnthropic direct, or any route with no parser requirement
“native” is a description, not a value. It names Anthropic's Messages API blocks; the Pi AI type contract does not accept native or none here. For Anthropic direct, choose anthropic-messages and leave the field blank. Use openrouter only when an OpenRouter route documents it. A mismatch is why a raw <think> tag sometimes appears inline.
When it earns its cost

Deciding which jobs deserve the extra thinking

One rule covers most cases: use a general model when the result is easy to verify and the downside small. Use reasoning when several constraints must be balanced, or an error would be expensive.

flowchart TD
  A["A task"] --> B{"Can you check the
answer in a minute?"} B -->|"yes"| C["General model"] B -->|"no"| D{"Would being wrong
cost money or comfort?"} D -->|"no"| C D -->|"yes"| E{"Several constraints
at once?"} E -->|"no"| C E -->|"yes"| F["Reasoning model,
then verify anyway"]
The choice, as a questionThree of the four paths end at the cheaper model. That is the usual answer.

Against real tasks:

TaskReasoning?Why
Look up a living-room entity IDUsually noRetrieval, not thought
Convert YAML from one format to anotherUsually noMechanical. A general model, then validate
Debug an automation that fails at nightOften usefulSeveral possible causes to weigh against each other
Plan schedules across rooms, devices and tariff periodsUsefulMany constraints at once, plus professional verification

Where model and route support it, you get a dial rather than an on/off switch.

A dropdown of reasoning levels in the Pi Agent composer, listing auto, off, low (minimal), low, medium, high, xhigh and max, with medium currently selected.
Reasoning levelHow much thinking to allow before the answer. Medium is selected here.
  • auto hands the decision to the route; off asks for none at all. medium carries the tick here.
  • high, xhigh, max buy more thinking, more waiting and more usage in one move.
  • These controls are model-specific. A route may not honor every level, so check the answer rather than assume the dial did something.

To genuinely cut reasoning usage, choose a documented non-reasoning model, or use a supported control for that exact model. Do not invent parameters.

In plain terms

Some versions of the workspace collapse or hide the reasoning block. That changes what you see, not what the provider did. Hiding the receipt does not make the meal free — the model still reasons, and you can still be billed for it.

What a switch does

Changing model without starting over

The selector sits in the toolbar below the composer — the text box. It is a button with a small arrow showing the current model name. Its position moves around, because the toolbar order is configurable, so look for the name, not a fixed spot.

It works by mouse or keyboard. The search field at the top filters the list by any part of a model name — typing sol leaves GPT-5.6 Sol — and Enter selects the match. Handy once several providers fill it up.

The model dropdown open above the Pi Agent message box, listing several model names with a tick beside the one this conversation is currently using.
The selectorEvery model under every provider you added.
  • The tick beside GPT-5.6 Sol marks the model that answers your next message.
  • Every name here is a GPT model, GPT-5.3 Codex Spark down to GPT-6 Astra. A provider missing entirely was never saved in the Models panel.
  • The model button under the message box repeats the current name, GPT-5.6 Sol.

Two details are worth getting straight, because almost every later surprise comes from one.

  • It takes effect immediately, but nothing is rerun. The new model answers your next message. Earlier messages are not resubmitted and earlier answers do not disappear, so nothing already paid for is charged again.
  • The new model receives the whole conversation. On its first message it reads the entire Session, first line to last, as input tokens. That is how it follows the topic — and it is the cost below.
Choosing and sending are separate actions. Nothing happens the moment you pick a new model. That is normal, not a stall. To confirm the switch landed, check that the model button's text changed.
Draft, review, rewrite

The pattern most people end up using every day

This assumes two models are available: one fast and cheap, one stronger. The example uses glm-4-flash and claude-sonnet-4-5; any pair of that shape works.

  1. Step 1

    Start a new Session and pick the cheap model

    Select + New session at the top left. Open the model button below the composer, find the GLM group and choose glm-4-flash. The label changes.

  2. Step 2

    Ask for the draft

    Send: “Write a Home Assistant automation that turns off every light in the living room at 11:30 p.m. If someone is still in the living room at that time, wait 10 minutes before turning them off.” Expect YAML in roughly 20-40 seconds.

  3. Step 3

    Switch to the stronger model — without clearing anything

    Stay in the same conversation; do not start a new Session. Open the selector and choose claude-sonnet-4-5 under Anthropic. The label changes.

  4. Step 4

    Ask it to review what is already on screen

    Send: “Please review the automation above. Does it have any logic errors or common HA pitfalls, such as the device_id trap, the wrong mode, or failure to detect a nonexistent entity_id?” It reads the whole conversation, YAML included.

  5. Step 5

    Switch back and let the cheap model apply the notes

    Return to glm-4-flash and ask it to rewrite the YAML using the feedback above. Applying a list of corrections does not need the expensive model.

The expensive model handles one message in three: the one where judgment is the product. A review typically turns up device_id where entity_id belongs, a mode that should be restart not the default single, or triggers and conditions in the older singular form. The saving over using the strong model throughout is commonly observed at 50-80%; an earlier passage in the same source says 60-80%. Both depend on prompt length and model choice, so treat either as a rough shape rather than a quote.

The label in the Session list can mislead. The model shown beside a conversation on the left may just be the last one used. Pi Agent records the model for each message separately.
The bill you do not see

Every switch makes someone read the transcript again

This is what surprises people when the first invoice arrives.

In plain terms

A colleague joins a meeting halfway through and reads the whole set of minutes before saying anything useful. Then a second joins and reads them too, from the top, including the first colleague's contribution. Nobody remembers being there earlier. Every arrival pays for the reading.

As numbers. A conversation has built up 5,000 tokens, roughly 15-20 exchanges, and you switch four times:

ActionConversation so farInput rereadNote
Switch 1: Flash to Sonnet5,0005,000Sonnet takes over
Sonnet answers, switch back to Flash5,5005,500Flash reads from the top too. It does not remember speaking earlier
Flash answers, switch to GPT-4o5,9005,900Another full round of input
GPT answers, switch back to Sonnet6,5006,500Sonnet spoke earlier, but is not made to remember it
Total22,900 input tokensOutput is on top of this

Stay on one model and input still grows with each turn, but none of this rereading happens. That gap is the whole cost of switching. And you can watch it, because the workspace prints the meter under every answer:

A Pi Agent conversation showing one question, the model's reply, and a usage line beneath it reading 1,094 in, 53 out, $0.0071.
Where the reread shows upA one-sentence question, and 1,094 tokens of input. That is the figure a switch resets.Live workspace
  • 1,094 in against 53 out. Input is already the large half on a short exchange, and only grows.
  • Watch this line after a switch. Input is the number that jumps, not output.
  • $0.0071 is nothing once. Multiplied by a long Session and four switches, it stops being nothing.
A long Session plus frequent switching is the easy way to lose track of spending. Two defenses: switch only when you can name the reason; and when a conversation grows unwieldy, ask for a summary in five points, start a new Session and paste it in.
Switch, new, or fork

Three ways to hand work over, and one that fails quietly

The selector is not your only option. Three actions exist and they do different jobs. Say Flash has just recommended a 1 ton air conditioner for your living room:

Switch models

The conversation stays in one Session and the new model reads all of it. You switch to Claude and ask it to review that recommendation right there.

Start a new Session

The old conversation stays in the list on the left; the new one is blank. Three days later you want to ask about air-conditioner noise — unrelated, so start clean.

Fork the Session

A complete copy branches from the current message, carrying everything before it. You want both models' view on the 1 ton question without losing either.

Three patterns are worth switching for: draft-then-review, zooming in on one hard point before returning to the cheap model, and A/B comparison — which is really a fork. A switch fitting none of them is probably costing you a reread for nothing.

The switch that fails silently

Claude represents reasoning as native structured blocks, not plain text. OpenAI-compatible providers — GLM, DeepSeek, Groq, OpenRouter — do not use that structure.

In plain terms

Someone takes notes in a private shorthand. Hand the folder to a colleague who cannot read it and those pages either fall out or read as scribble. Nothing tears, nothing beeps. You notice only when the answer does not match the question.

So those blocks cannot enter the new provider's messages array in their original form. Depending on the version they are discarded or flattened into plain text; both have happened. If your next message says “continue with the steps you just considered,” the new model may not have them.

What to do instead. If the conversation leans on that reasoning, fork rather than switch in place, or ask Claude to state its reasoning in the main answer first. Claude to another Claude preserves the blocks. Reasoning model to non-reasoning model is fine: the text stays, the new model just does not reason again.
I picked a new model and the old one still answered
Check three things. The selector label — if it did not change, the click landed outside the list. The message you sent — its upper-right corner normally names the model that handled it. And the browser console (F12) for a red models.json parse error, meaning the config file is invalid; save it again from the Models panel.
After switching, it replied in a different language
Some models prefer another default language whatever you asked in. Add “Please respond in English” to your first message after the switch — cheaper than switching back on language grounds alone.
402 Payment Required, or insufficient balance
That provider is out of credit — the error names it, for example anthropic: insufficient credits. Add credit in its dashboard, or switch back to one that still has some. Your conversation is intact; resend the message that failed. Earlier messages are not charged again.
Can Pi Agent pick the model for me?
No, and deliberately so — which service you pay for is your call, not the tool's. Set a fast, low-cost default and switch by hand when you need more. The default comes from defaultModel and defaultProvider in ~/.pi/agent/settings.json, or from PI_WEB_DEFAULT_MODEL; there is no “Set as default” button, so edit the file, then refresh.
The list has too many models in it
After five or six providers, 30-50 entries is normal. Hide a provider or deselect models in the Models panel, which updates the hiddenModels list, or set PI_WEB_HIDE_PROVIDERS in the environment. Shortening the name field in ~/.pi/agent/models.json also works — rename “Claude Sonnet 4.5” to “deep” and that is what the selector shows.
Next

Where to go from here

keep going

You can now put the right model on the right message.

That finishes the section on using several AIs. Part 9 moves to Skills — teaching the agent a procedure once so it follows the same steps every time, instead of explaining them again in every conversation.

Open the full guide

Part 8 of the Pi Agent Onboarding Guide series, published by WoowTech.

Based on the Woow HA Pi Agent Onboarding Guide, produced by WoowTech and released under CC BY 4.0.

The Smart Space Solution · 智慧空間解決方案 · © 2026 WOOW Technology Co., Ltd.

Share this post