讓模型多想一點,或把對話交給另一個模型
兩個該放在一起學的技能。有些模型會在回答前多花運算——比較慢、比較貴,有時候值得。而且你可以在對話中途換模型,一個字都不會少。這篇要講的是額外的思考什麼時候值得花這個成本、換模型到底做了什麼,以及換太頻繁時,那筆悄悄出現的帳單。
有些模型直接回答。有些會先規劃再回答。
第 5 篇你看過那個有時候會出現在答案上方、可以收合的區塊。那是模型運作方式一個真實差異,露在外面看得見的邊緣。
這就像記住一支電話號碼跟規劃一條穿越城市的路線的差別。一個你直接就講得出來。另一個你得先想過一遍——而這個想的過程,花的時間絕對比背電話號碼多。
- 一個一般型模型 會直接回答。適合簡短的查詢、簡單的改寫、一次工具呼叫。
- 一個思考型模型 會先多花運算去規劃或檢查。這對橫跨好幾個房間、裝置跟時段的自動化很有幫助。
接下來會有兩個結果。 用量: 有些供應商把思考過程算成輸出計費,有些另外分一類——記帳方式因模型跟路線而異。 延遲: 回答可能要花更久,沒有一個放諸四海皆準的延遲數字,也沒有保證。
一個最容易讓人卡住的設定
Add Model 對話框裡有個欄位叫 thinkingFormat。它告訴 Pi Agent 一條路線用什麼格式表示思考資料;它本身不會讓一個模型變得會思考。
| 值 | 什麼時候設它 |
|---|---|
zai | 相容的 GLM 直連路線,可能用 <think>…</think>、 reasoning_content 或其他文件記載的欄位。要確認端點 |
deepseek | DeepSeek 風格的思考過程,放在 message.reasoning_content,跟 message.content |
| 留空 | 直連 Anthropic,或任何不需要解析器的路線 |
native 或 none 填在這裡。直連 Anthropic 的話,選 anthropic-messages ,這個欄位留空。用 openrouter 只有在 OpenRouter 路線的文件真的這樣寫的時候才用。設錯了,就是為什麼有時候會看到一個原始的 <think> 標籤直接混在文字裡的原因。判斷哪些工作值得多花這個思考成本
一條規則涵蓋了大部分情況: 結果容易驗證、出錯代價也小的時候,用一般型模型。需要同時權衡好幾個限制條件,或出錯代價很高的時候,用思考型。
flowchart TD
A["一個任務"] --> B{"Can you check the
answer in a minute?"}
B -->|"yes"| C["一般型模型"]
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["思考型模型,
但還是要驗證"]
拿真實的任務對照:
| 任務 | 要用思考型嗎? | 為什麼 |
|---|---|---|
| 查客廳的 entity ID | 通常不用 | 這是查資料,不是動腦 |
| 把 YAML 從一種格式轉成另一種 | 通常不用 | 這是機械性的工作。用一般型模型,再驗證就好 |
| 排除一個晚上會失敗的自動化 | 通常有幫助 | 有好幾個可能的原因要互相權衡 |
| 跨房間、跨裝置、跨費率時段排程 | 有幫助 | 同時有很多限制條件,還要專業驗證 |
在模型跟路線都支援的地方,你拿到的是一個可調的旋鈕,不是一個開關。
- auto 把決定權交給路線; off 則要求完全不思考。 medium 這裡打著勾。
- high、xhigh、max 一次買到更多思考、更多等待,也更多用量。
- 這些控制項是 各模型專屬的。一條路線不一定會照做每一個等級,所以要看答案本身,不要假設轉了旋鈕就一定有效果。
真的想減少思考用量,就選一個有文件記載的非思考型模型,或用那個精確模型支援的控制項。不要自己編參數。
有些版本的工作區會把思考塊收合或藏起來。這改變的是你看到什麼,不是供應商實際做了什麼。把收據藏起來,不會讓這頓飯變免費——模型還是照樣在思考,你也還是會為此付費。
不用重來一次就能換模型
選單就在 composer——那個文字輸入框——下面的工具列上。它是一顆帶著小箭頭、顯示目前模型名稱的按鈕。它的位置會變動,因為工具列的順序是可以設定的,所以要認名字,不要認固定的位置。
滑鼠或鍵盤都能操作。上面的搜尋欄能用模型名稱的任何一部分過濾清單——打 sol 就只會留下 GPT-5.6 Sol——按 Enter 選中符合的那個。等好幾家供應商都塞進去之後,這個功能特別好用。
- 打勾的 記號 在 GPT-5.6 Sol 旁邊,標的是回答你下一則訊息的模型。
- 這裡每個名字都是 GPT 模型,從 GPT-5.3 Codex Spark 到 GPT-6 Astra 都有。完全沒出現的供應商,就是還沒存進 Models 面板。
- 打勾的 模型按鈕 在訊息框下面,重複顯示目前的名字 GPT-5.6 Sol。
有兩個細節值得先搞清楚,因為之後幾乎每個意外,都是這兩個裡的其中一個造成的。
- 馬上生效,但不會重跑任何東西。 新模型回答的是你下一則訊息。之前的訊息不會重新送出,之前的答案也不會消失,所以已經付過錢的東西不會再被收一次錢。
- 新模型會收到整場對話。 它的第一則訊息,就要把整個 Session 從頭到尾當成輸入 token 讀一遍。這就是它能接上話題的原因——也是下面會講的成本所在。
大部分人最後每天都在用的模式
這裡假設你有兩個模型可用:一個快又便宜、一個比較強。範例用的是 glm-4-flash 跟 claude-sonnet-4-5;任何這種組合的兩個模型都能套用這個做法。
-
步驟 1
開一個新 Session,選便宜的模型
點 + New session ,在左上角。打開 composer 下面的模型按鈕,找到 GLM 那一組,選
glm-4-flash。文字標籤會跟著變。 -
步驟 2
要求它出草稿
送出:「幫我寫一個 Home Assistant 自動化,晚上 11:30 把客廳所有燈都關掉。如果那個時候客廳還有人,就等 10 分鐘再關。」大約 20-40 秒會給你 YAML。
-
步驟 3
換成比較強的模型——不清空任何東西
留在同一個對話裡;不要開新的 Session。打開選單,選
claude-sonnet-4-5,在 Anthropic 底下。文字標籤會跟著變。 -
步驟 4
要求它審查畫面上已經有的東西
送出:「請幫我審查上面那個自動化。有沒有邏輯錯誤,或常見的 HA 陷阱,例如 device_id 陷阱、mode 選錯,或者沒有偵測到不存在的 entity_id?」它會讀整場對話,包括那段 YAML。
-
步驟 5
換回去,讓便宜的模型套用這些意見
回到
glm-4-flash,要求它照上面的回饋重寫 YAML。套用一份修正清單,用不著貴的模型。
貴的模型只處理三則裡的一則:需要判斷力的那一則。審查通常會抓到 device_id ,用在該用 entity_id 的地方,或是 mode 應該是 restart 而不是預設的 single,又或者是舊式單數形態寫的 trigger 跟 condition。相較於全程都用貴的模型,通常能省下 50-80%;同一份資料裡另一段寫的是 60-80%。這兩個數字都取決於提示長度跟模型選擇,當成一個大概的量級參考就好,不要當成精確報價。
每次換模型,都有人要重新讀一次逐字稿
這就是第一張帳單來的時候,會讓人嚇一跳的原因。
一位同事開會開到一半才加入,得先讀完整份會議紀錄,才能講出什麼有用的話。接著第二位同事也加入,也從頭讀一遍,包括第一位同事講過的內容。沒有人記得自己之前在場。每一次有人加入,都要為這次閱讀付出代價。
換算成數字。一場對話已經累積了 5,000 個 token,大約 15-20 輪來回,你換了四次模型:
| 動作 | 目前累積的對話 | 重讀的輸入量 | 備註 |
|---|---|---|---|
| 第 1 次切換:Flash 換 Sonnet | 5,000 | 5,000 | Sonnet 接手 |
| Sonnet 回答,換回 Flash | 5,500 | 5,500 | Flash 也是從頭讀起。它不記得自己之前講過話 |
| Flash 回答,換成 GPT-4o | 5,900 | 5,900 | 又是一整輪輸入 |
| GPT 回答,換回 Sonnet | 6,500 | 6,500 | Sonnet 之前講過話,但不會因此就記得 |
| 總計 | — | 22,900 個輸入 token | 輸出還要另外加上去 |
留在同一個模型,輸入量還是會隨每一輪增加,但不會有這種重讀的情況。這個差距,就是換模型的全部成本。而且你看得到,因為工作區在每個答案下面都印著計費表:
- 1,094 in 對上 53 out。就算是很短的對話,輸入本來就佔了比較大的那一半,而且只會越來越大。
- 換模型之後盯著這一行看。會跳升的是輸入,不是輸出。
- $0.0071 ,一次看起來不算什麼。乘上一個很長的 Session、再乘上四次切換,就不再是「不算什麼」了。
三種交接工作的方式,加一種會悄悄失效的方式
選單不是你唯一的選擇。有三種動作,各自做不同的事。假設 Flash 剛推薦你客廳裝一台一噸的冷氣:
切換模型
對話留在同一個 Session 裡,新模型會讀完全部內容。你切到 Claude,直接要求它審查那個建議。
開一個新 Session
舊的對話留在左邊清單裡;新的是空白的。三天後你想問冷氣噪音的問題——不相關,所以乾脆重新開始。
Fork 這個 Session
從目前這則訊息完整複製一份分支出去,帶著它之前的所有內容。你想同時保留兩個模型對「一噸夠不夠」這個問題的看法,兩邊都不想丟掉。
有三種情況值得為它切換模型: 先出草稿再審查、 聚焦深入 在一個難點上,再換回便宜的模型,還有 A/B 比較 ——這其實就是 fork。一次切換如果不屬於這三種,大概就是白白讓你多付了一次重讀的錢。
會悄悄失效的那種切換
Claude 是用原生的結構化區塊表示思考過程,不是純文字。相容 OpenAI 的供應商——GLM、DeepSeek、Groq、OpenRouter——不用這種結構。
有人用自己看得懂的速記法做筆記。把這份資料夾交給一個看不懂這種速記的同事,那幾頁要嘛整個掉出來,要嘛看起來像亂畫。不會撕破,也不會有任何警示音。你只有在答案跟問題對不上的時候才會發現。
所以那些區塊沒辦法以原本的形式,進到新供應商的 messages 陣列裡。依版本而定,它們可能被丟掉,也可能被壓平成純文字;兩種情況都發生過。如果你下一句話說「照你剛想的步驟繼續」,新模型手上可能根本沒有那些步驟。
我選了新模型,但還是舊的模型在回答
models.json parse error,代表設定檔壞了;從 Models 面板重新存一次。換模型之後,它用另一種語言回答
402 Payment Required,或餘額不足
anthropic: insufficient credits。去它的後台加值,或換回還有額度的那一個。你的對話還完整存在;重新送出失敗的那則訊息就好。之前的訊息不會再被收一次錢。Pi Agent 能幫我選模型嗎?
defaultModel 跟 defaultProvider ,在 ~/.pi/agent/settings.json裡,或者來自 PI_WEB_DEFAULT_MODEL;沒有「設為預設」這種按鈕,所以要改檔案,再重新整理。清單裡的模型太多了
hiddenModels 清單,或者設定 PI_WEB_HIDE_PROVIDERS 這個環境變數。把 name 欄位縮短,在 ~/.pi/agent/models.json 裡改也行——把「Claude Sonnet 4.5」改名叫「深」,選單上顯示的就會是這個名字。接下來往哪走
你現在能把對的模型放在對的訊息上了。
這樣就講完「用不只一家 AI」這個主題了。第 9 篇要轉向 Skill——教 agent 一次一套做事的程序,讓它每次都照著同樣的步驟走,而不是每次對話都得重新解釋一遍。
打開完整教學手冊《Pi Agent 入住指南》系列第 8 篇,由 WoowTech 渥屋科技 製作。
內容出自 Woow HA Pi Agent 入住指南,依 CC BY 4.0 釋出。
The Smart Space Solution · 智慧空間解決方案 · © 2026 WOOW Technology Co., Ltd.