戰(zhàn)指南)
最近我在搭一套智能文檔分析流程時(shí)做了一組對比測試同一個(gè)問題分別發(fā)給普通模式的模型和開啟了Extended Thinking的模型。結(jié)果有點(diǎn)出乎意料——普通模式不僅解題過程簡略還在中間一步漏掉了關(guān)鍵條件開了Extended Thinking后模型先復(fù)述了一遍問題約束寫下兩種可能的解法把其中一條明顯錯(cuò)誤的方向排除掉才給出最終答案。這就是Extended Thinking最直觀的價(jià)值讓Claude在輸出最終回答之前先進(jìn)行一次可控長度、可觀測的深度思考。它把過去只能靠提示詞暗示的思維鏈變成了API里一個(gè)顯式的配置項(xiàng)開發(fā)者可以給思考過程分配專門的token預(yù)算模型會(huì)在預(yù)算內(nèi)展開草稿、做自我檢查、嘗試備選路徑然后再生成精煉的正式回答。對做AI應(yīng)用開發(fā)、Prompt工程、復(fù)雜任務(wù)自動(dòng)化的朋友來說這個(gè)功能幾乎屬于必裝項(xiàng)值得花點(diǎn)時(shí)間搞明白。1. Extended Thinking到底解決了什么問題1.1 一句話理解這個(gè)功能把模型的最終回答想象成一份答卷。普通模式是拿到題提筆就寫寫到一半發(fā)現(xiàn)思路不對只能硬著頭皮改Extended Thinking則要求模型先打草稿——在草稿紙上列條件、做演算、試錯(cuò)、檢查確認(rèn)邏輯閉環(huán)了再工整地把答案謄到答題區(qū)。草稿不會(huì)被直接展示給用戶但它消耗紙張和時(shí)間對應(yīng)到API里就是token預(yù)算和響應(yīng)延遲。這正是Extended Thinking的核心設(shè)計(jì)把推理過程和最終輸出徹底拆開讓推理成為獨(dú)立的、有預(yù)算約束的、可以被程序讀取的中間產(chǎn)物。1.2 普通思維鏈提示的問題在哪很多人之前會(huì)在系統(tǒng)提示里寫Lets think step by step試圖讓模型逐步推理。這個(gè)土辦法確實(shí)有效但它有幾個(gè)繞不過去的短板第一推理和最終回答混在同一段文本里。模型一邊推理一邊組織語言它的注意力要在想和寫之間來回切換一旦最終答案需要非常精煉推理過程很容易被壓縮成幾句口號式的分析。第二思考長度完全不可控。你沒法告訴模型這道題最多想2000個(gè)token想完就停。結(jié)果就是簡單的題目它也可能長篇大論復(fù)雜的題它可能兩三句就跳到結(jié)論。第三也是最隱蔽的問題模型可能在輸出時(shí)才臨時(shí)編造一套推理來合理化答案它并不真的在回答前進(jìn)行推理。這種先有結(jié)論再補(bǔ)解釋的現(xiàn)象會(huì)讓用戶誤以為結(jié)論已經(jīng)經(jīng)過了邏輯驗(yàn)證實(shí)際上沒有。Extended Thinking用工程手段解決這三個(gè)問題推理有獨(dú)立的位置承載有明確的token預(yù)算并且在響應(yīng)結(jié)構(gòu)上保證它先于最終答案產(chǎn)生。它至少讓思考過程這件事變得可以觀測、可以控制、可以審查。2. Extended Thinking的核心機(jī)制推理Token、預(yù)算與簽名2.1 從邊寫邊想到先想后寫開啟Extended Thinking后請求會(huì)多一組配置。模型先生成一段內(nèi)部推理內(nèi)容這段內(nèi)容對應(yīng)API響應(yīng)里的推理塊然后基于這段推理再生成最終文本。你拿到響應(yīng)時(shí)能同時(shí)看到草稿和正式答案兩部分。從工程角度看這相當(dāng)于把原來一次性的自回歸解碼拆成了兩個(gè)階段推理階段和答案階段。推理階段的token全部計(jì)入輸出token也按輸出價(jià)格計(jì)費(fèi)。這就是為什么開啟這個(gè)功能后賬單會(huì)明顯變貴——它不是免費(fèi)的魔法而是模型真的多寫了一段內(nèi)容。響應(yīng)的大致結(jié)構(gòu)長這樣不同版本字段名會(huì)有差異請以官方最新文檔為準(zhǔn){ content: [ { type: thinking, thinking: 復(fù)述問題條件……先假設(shè)……這里有個(gè)陷阱……改用貝葉斯公式……, signature: 一段用于續(xù)接的簽名 }, { type: text, text: 根據(jù)計(jì)算最終答案是…… } ] }額外補(bǔ)充一點(diǎn)如果推理內(nèi)容觸發(fā)了隱私保護(hù)規(guī)則API可能會(huì)返回一個(gè)占位塊而不是完整草稿。這屬于合規(guī)設(shè)計(jì)不是Bug不能當(dāng)作模型出故障。2.2 budget_tokens模型能想多久budget_tokens大概是Extended Thinking里最需要理解透的參數(shù)。它決定了模型可以生成多少推理token類似草稿紙的張數(shù)。預(yù)算太小時(shí)模型還沒把問題想透就得強(qiáng)行收尾效果與普通模式差距不大預(yù)算太大模型確實(shí)會(huì)繞更多的路、做更多的自我檢查但代價(jià)是響應(yīng)變慢、成本上升。我的習(xí)慣是先給一個(gè)保守值跑通再逐步往上加觀察答案質(zhì)量的變化曲線。當(dāng)預(yù)算增加到一定程度后答案質(zhì)量往往不再提升甚至因?yàn)橄氲锰喽霈F(xiàn)過度修正——那個(gè)拐點(diǎn)就是性價(jià)比最高的配置。下面是我常用的預(yù)算參考檔位任務(wù)類型建議預(yù)算說明簡單問答、分類、提取不使用殺雞不用牛刀中等數(shù)學(xué)題、常規(guī)代碼調(diào)試2048-4096足夠走完假設(shè)-驗(yàn)證-修正復(fù)雜代碼重構(gòu)、多步驟推理8192左右需要試錯(cuò)空間長文檔綜合分析接近上限模型需要先摘錄再組織2.3 簽名機(jī)制與多輪續(xù)接一個(gè)容易被忽略的細(xì)節(jié)推理內(nèi)容不是普通的文本它帶有一個(gè)簽名。簽名存在的意義是保證推理鏈的完整性和連續(xù)性類似給一份草稿加了個(gè)防偽標(biāo)記。當(dāng)你做多輪對話時(shí)如果上一輪產(chǎn)生了推理內(nèi)容下一輪請求必須把上一輪的簽名回傳否則API會(huì)拒絕續(xù)接或報(bào)簽名無效。這其實(shí)是一種安全設(shè)計(jì)——防止有人篡改中間的推理環(huán)節(jié)來操縱最終輸出。實(shí)操中常見的報(bào)錯(cuò)signature invalid八成就是你在續(xù)接時(shí)沒有正確傳遞簽名。3. 實(shí)操在API中開啟Extended Thinking的完整步驟3.1 請求配置與最小示例下面是一個(gè)最小化的Python示例使用官方SDK開啟Extended Thinking字段名以你實(shí)際使用的API版本為準(zhǔn)import anthropic client anthropic.Anthropic() response client.messages.create( modelclaude-sonnet-4-20250514, max_tokens8192, temperature1.0, thinking{ type: enabled, budget_tokens: 4096 }, messages[ {role: user, content: 你的問題放在這里} ] )注意兩個(gè)細(xì)節(jié)第一開啟thinking后官方建議把temperature設(shè)為1。這個(gè)模式下的推理本身已經(jīng)帶有探索性過低的溫度會(huì)讓思考路徑變窄過高的溫度又容易跑偏。第二max_tokens要同時(shí)覆蓋推理token和最終答案token。如果你把總輸出限制設(shè)得太小模型可能推理到一半就被截?cái)嘧罱K回答都沒生成出來。我見過太多人只把max_tokens設(shè)成幾百然后來問為什么開了思考模式反而沒輸出——就是這個(gè)原因。3.2 從響應(yīng)中讀取推理內(nèi)容拿到響應(yīng)的方式很簡單signature None for block in response.content: if block.type thinking: signature block.signature print(推理草稿:, block.thinking) elif block.type text: print(最終回答:, block.text)如果你想拿推理內(nèi)容做二次分析比如提取關(guān)鍵步驟、做后續(xù)任務(wù)輸入直接存這個(gè)塊就行。如果遇到的是隱私遮蔽類型的推理塊API會(huì)在響應(yīng)中保留占位但你拿不到原始文本這也是為什么產(chǎn)品設(shè)計(jì)時(shí)不要把推理內(nèi)容當(dāng)成可依賴的公開數(shù)據(jù)。3.3 多輪對話時(shí)的簽名回傳續(xù)接對話時(shí)把上一輪拿到的signature傳給下一次請求client.messages.create( modelclaude-sonnet-4-20250514, max_tokens8192, temperature1.0, thinking{ type: enabled, budget_tokens: 4096 }, thinking_signaturesignature, messages[ {role: user, content: 第一輪問題}, {role: assistant, content: 第一輪回答摘要}, {role: user, content: 順著剛才的思路繼續(xù)追問} ] )不同版本的SDK對簽名參數(shù)的位置叫法不一樣有的放在thinking配置里有的是頂級參數(shù)但邏輯是一致的推理產(chǎn)生了簽名就必須跟著走。我不建議你在續(xù)接時(shí)丟棄上一輪推理內(nèi)容只在messages里塞一個(gè)assistant文本那樣會(huì)切斷推理鏈模型等于重新開始想。3.4 預(yù)算怎么定才合適我推薦一個(gè)三分法來定預(yù)算先做端到端實(shí)測。從一個(gè)較低的預(yù)算開始跑比如2048。如果答案質(zhì)量不達(dá)標(biāo)翻倍到4096再跑一次。如果翻倍之后質(zhì)量提升明顯繼續(xù)加如果提升微弱就停在上一個(gè)檔位。這種方法比一上來就給大預(yù)算更省成本也能幫你找到夠用的最小值。另外對延遲敏感的應(yīng)用預(yù)算要往下壓。推理token是一步步生成的預(yù)算越大首個(gè)響應(yīng)token出現(xiàn)的時(shí)間越晚。用戶體驗(yàn)要求首字快出的場景該妥協(xié)就妥協(xié)不要為了追求完美答案犧牲交互等待。4. 實(shí)戰(zhàn)效果我實(shí)測過的三類任務(wù)4.1 數(shù)學(xué)推理一道貝葉斯概率題我用一道經(jīng)典的貝葉斯題做對比測試有兩個(gè)盒子A盒中有3枚金幣和1枚銀幣B盒中有1枚金幣和3枚銀幣。隨機(jī)選一個(gè)盒子再從其中隨機(jī)摸出一枚硬幣發(fā)現(xiàn)是金幣問這枚硬幣來自A盒的概率是多少。普通模式下模型直接寫出了貝葉斯公式但中間漏掉了先驗(yàn)概率P(A)1/2的顯式計(jì)算最終給了一個(gè)含混的結(jié)論。開了Extended Thinking后模型的推理流程明顯不同。它先在草稿里復(fù)述了問題條件寫下了P(A)1/2、P(G|A)3/4、P(G|B)1/4然后分別計(jì)算兩條路徑的聯(lián)合概率P(A且G) 1/2 × 3/4 3/8 P(B且G) 1/2 × 1/4 1/8歸一化之后得到P(A|G) (3/8) / (3/8 1/8) 3/4。關(guān)鍵在于推理塊里能看到模型自己寫了一句等一下這里需要把兩個(gè)分支的貢獻(xiàn)做歸一化不能只看其中一條路徑。這種自我糾錯(cuò)的痕跡在普通模式里幾乎見不到因?yàn)樗緵]有空間做這一步。這題比較基礎(chǔ)但道理是通用的需要精確公式、多步驟推導(dǎo)、邊界條件判斷的任務(wù)Extended Thinking的收益最明顯。4.2 代碼排查偶發(fā)超時(shí)問題的定位我讓某開發(fā)者用這個(gè)功能排查一個(gè)偶發(fā)的接口超時(shí)問題那次的對比讓我印象很深。普通模式下模型給出的建議是增加客戶端超時(shí)時(shí)間并加入重試機(jī)制。這個(gè)建議不算錯(cuò)但完全沒有觸及問題的核心。開啟思考模式后模型的診斷邏輯完全不同。它先列出了一張候選清單網(wǎng)絡(luò)抖動(dòng)、客戶端重試邏輯缺陷、服務(wù)端線程池耗盡、數(shù)據(jù)庫慢查詢、網(wǎng)關(guān)限流。然后根據(jù)給出的日志特征逐項(xiàng)排除——日志里沒有數(shù)據(jù)庫慢查詢的跡象所以數(shù)據(jù)庫這條先劃掉超時(shí)發(fā)生在固定時(shí)間窗口不是隨機(jī)網(wǎng)絡(luò)抖動(dòng)最終鎖定了客戶端在短窗口內(nèi)的重復(fù)請求觸發(fā)了服務(wù)端限流。這個(gè)案例給我的啟發(fā)是思考模式在診斷類任務(wù)里的價(jià)值不只在于給出結(jié)論更在于輸出一條可驗(yàn)證的排除路徑。哪怕它最后鎖定的原因不夠準(zhǔn)確這種結(jié)構(gòu)化的推理過程本身對工程師做二次判斷也是極有幫助的。4.3 長文檔分析收益最大但別指望它消滅幻覺我在多文檔綜合分析任務(wù)上也做了測試。普通模式會(huì)快速給出一個(gè)概括性的回答但經(jīng)常把不同文檔里的數(shù)據(jù)混在一起開啟Extended Thinking后模型會(huì)在推理階段先摘錄各文檔的關(guān)鍵信息再判斷哪些信息互相矛盾最后才組織答案。整體上看引用準(zhǔn)確性和信息歸因都上了一個(gè)臺階。但有一件事必須潑冷水思考模式不能解決幻覺問題。它能讓模型多想一會(huì)兒但不能讓它想到的全是真的。如果模型本身沒有見過相關(guān)事實(shí)或者文檔里根本沒有對應(yīng)信息它照樣會(huì)在推理里編造一個(gè)合理的解釋。因此涉及事實(shí)性、時(shí)效性的場景還是得靠外部檢索和驗(yàn)證兜底思考模式只是讓錯(cuò)誤出現(xiàn)得更少、也更容易被追蹤。5. 常見問題與排查技巧實(shí)錄癥狀可能原因解決方向推理很長但答案依然是錯(cuò)的推理方向從一開始就跑偏了在系統(tǒng)提示里要求先列出問題約束再做假設(shè)最后驗(yàn)證響應(yīng)延遲明顯上升預(yù)算過大推理token量太大降低預(yù)算或者把任務(wù)拆成多個(gè)小步驟分別思考響應(yīng)里根本沒有thinking字段版本不支持、參數(shù)未生效、字段名有變化確認(rèn)模型版本檢查請求參數(shù)查看官方文檔的響應(yīng)格式推理塊被截?cái)鄾]有最終答案max_tokens不夠推理吃光了全部預(yù)算調(diào)大max_tokens或調(diào)小budget_tokens多輪對話時(shí)報(bào)告簽名無效沒有回傳上一輪的signature或簽名被改動(dòng)正確傳遞簽名不要修改推理塊內(nèi)容賬單明顯變貴推理token也按輸出token計(jì)費(fèi)簡單任務(wù)不開啟用路由把復(fù)雜任務(wù)分配進(jìn)來這里單獨(dú)講一個(gè)被問得最多的坑模型推理方向跑偏。當(dāng)你發(fā)現(xiàn)它想了一大堆卻給出錯(cuò)誤答案時(shí)不要盲目加大預(yù)算那只會(huì)讓它在錯(cuò)誤方向上走得更遠(yuǎn)。正確做法是在系統(tǒng)提示里加入結(jié)構(gòu)約束例如要求模型推理過程中必須依次完成1. 列出所有已知條件和未知量2. 寫出可能的解法并標(biāo)記最可疑的一個(gè)3. 對最終結(jié)論做一次反向驗(yàn)證4. 如果發(fā)現(xiàn)矛盾回到第2步修正。這種約束能把思考過程擰到正確的軌道上而且它提取出來的結(jié)果也更規(guī)整方便程序做后續(xù)處理。6. 幾點(diǎn)實(shí)測經(jīng)驗(yàn)與避坑總結(jié)最后分享幾個(gè)我在實(shí)際項(xiàng)目中積累的操作經(jīng)驗(yàn)。第一個(gè)經(jīng)驗(yàn)是把Extended Thinking當(dāng)作先遣分析器來用而不是單純的答題開關(guān)。我會(huì)先讓模型開啟思考模式產(chǎn)出一份結(jié)構(gòu)化推理報(bào)告把這個(gè)報(bào)告存下來之后再做總結(jié)、問答、生成文檔時(shí)普通模式直接引用這份報(bào)告就夠了。這樣既拿到了深度的中間產(chǎn)物又不用每次都付出思考模式的成本。第二個(gè)經(jīng)驗(yàn)是關(guān)于隱私設(shè)計(jì)的。推理內(nèi)容可能包含用戶原始輸入、模型自身的推測、甚至一些不該展示的中間結(jié)論。如果做面向終端用戶的產(chǎn)品千萬不能把完整推理草稿直接放在界面上。官方API用占位塊做隱私遮蔽這個(gè)設(shè)計(jì)本身就是給開發(fā)者提個(gè)醒思考過程是內(nèi)部數(shù)據(jù)不是展示素材。第三個(gè)經(jīng)驗(yàn)是控制預(yù)期。Extended Thinking是個(gè)好東西但它本質(zhì)上只改變思考過程的結(jié)構(gòu)不改變模型知識的邊界。它不會(huì)讓模型突然變聰明只是讓它更充分地調(diào)用已有的能力。你該做檢索還是做檢索該搭知識庫還是搭知識庫別指望一個(gè)參數(shù)解決所有問題。我個(gè)人的習(xí)慣是在做任何涉及復(fù)雜推理的任務(wù)時(shí)先以普通模式跑一遍拿基線答案再開啟Extended Thinking對比一次。如果兩次結(jié)論一致說明任務(wù)足夠簡單后續(xù)就不開思考模式如果兩次結(jié)論不一致我會(huì)重點(diǎn)檢查模型的推理鏈條判斷哪一次更靠譜。這個(gè)流程雖然多花一次請求但對判斷你的任務(wù)到底適不適合開思考模式非常有效長期用下來反而省了不少錢。