跳到主要內容

【2026 最新】Haiku 5.5 成本怎麼算?100K 門檻與三組 Trace 六步教學

最後更新: ·
Haiku 5.5 成本教學:100K 門檻與逐請求收據

你只請 Agent 整理一小段資料,用量畫面卻出現十幾萬 tokens。Haiku 5.5 成本到底是被這一句話、整段歷史,還是工具清單推高?先別急著刪內容:累積用量像整天的里程表,單次請求像這一趟的行程,兩個數字回答不同問題。

這篇寫給第一次看 API 帳單、完全沒有技術背景的讀者。你會學會讀一張逐請求收據,再用「原始歷史、精簡歷史、精簡工具」三組對照找原因。前半可以用試算表完成;後半提供可複製的離線核算程式,工程同事能直接接到既有 Trace。Trace 就是記下每次呼叫輸入、設定、回應與驗收的過程紀錄。

依截至 2026 年 10 月 8 日的官方文件整理。Haiku 5.5 發布解析已介紹模型與分工,本篇專心處理逐請求成本。AlphaLab 本次未呼叫 Haiku API;下方數字是明確標示的算式例題,三組配置是供你執行的評估設計。

先說結論:Haiku 5.5 成本要看兩本帳

門檻看每次提示長度;划不划算,看完成一件工作的總成本。把提示想成交給助手的一個公文袋:新問題只占一頁,袋子裡還可能有規則、舊對話、工具說明與之前查回的資料。

第一本帳記每次呼叫的完整輸入長度與分項 token 費用;第二本帳把同一任務的所有嘗試加總,再對照是否通過驗收。看到 Session 累積 200K,還不能判定某一個請求已跨 100K;反過來,只看新的問題很短,也不能判定仍在低價級距。

10 月 7 日的使用者求助串提出短 Agent 任務用量偏高的困惑。這是一個需求線索,不是全體使用者的統計,也沒有證明新開 Session 能固定省下多少。真正能回答你的問題的是你自己的逐請求紀錄。

① 分清 Session、提示長度與輸出:不要把三個數字相加

Session 是一段工作期間,可能有多次模型呼叫;提示長度是某次送進模型的內容;輸出則是那次模型產生的 tokens。依Messages API,一般多輪對話會把先前訊息放進 messages。介面上只打一句新問題,應用仍可能送出整本筆記。

在 Claude Code,官方成本說明把 /usage 的 Session 區塊定位成累積 API 用量;美元數字是本機依費率核算的估計。Pro/Max 訂閱內含用量與 API 逐 token 帳單須分開理解。本篇公式處理原廠標準 API,不能直接把 Session 美元讀成訂閱加收。

精確操作:先為每件工作指定 task_id,每次送出指定 request_id,並保留回應的 message ID。不要拿 Session 總額當一列請求。若 Agent 連續查三次再回答,四次模型呼叫都要留下,工具服務費另列。

② Haiku 5.5 成本的 100K:快取是便宜的閱讀,不是消失的頁數

官方模型價格按提示不超過/超過 100,000 tokens 分兩級;恰好 100,000 仍屬較低級距。下圖列原廠 standard、global 路由的美元/百萬 tokens 費率。Batch、地區倍率、合約折扣及服務工具費不在這張基礎估算內。

Haiku 5.5 成本:100K 前後的標準 API 分項費率
原廠標準 API 費率,2026 年 10 月 8 日核對;prompt 長度決定本次使用哪一整組單價。

快取(cache)像助手已讀過的影本:再次讀取較便宜,但影本仍在公文袋裡。官方快取文件把總輸入拆成三項:input_tokens、cache_creation_input_tokens、cache_read_input_tokens。前一項是未讀取或寫入快取的輸入,不是整份提示。

prompt_tokens = input_tokens
              + cache_creation_input_tokens
              + cache_read_input_tokens

本文依「提示長度分級」和「總輸入三項拆分」兩份文件,將這個合計用作門檻核算。例如只有 2,000 新輸入,但另讀 99,000 快取 tokens,合計便是 101,000。快取仍有讀取優惠,卻不能因新輸入少就套低價級距;也不要只替超出的 1,000 tokens 換單價。最後把估算和 Console 使用/帳務紀錄對帳,保存差異而非強行改成一致。

寫入快取要再分五分鐘與一小時。若已有 cache_creation 的 TTL 分項,兩項合計應等於總寫入量;算費用時分項乘各自單價,不要再把總寫入量重算一次。缺少分項就先補收據,不能猜全部是五分鐘。

③ 找出袋子裡的頁數:歷史與工具分開盤點

痛點是「我不知道哪些內容被送出」。解法是保留真正的 payload:payload 就是應用交給 API 的完整請求資料。至少保存模型、system、messages、tools、effort、thinking、最大輸出與快取設定;檔案在本機受控位置保留,API key 和授權 header 不進紀錄。先用你有權使用的假資料或測試資料做練習。

工具計費說明列出工具名稱、描述、schema、呼叫及結果都可能帶來 tokens。Schema 是工具的欄位說明書;即使沒有按下那顆工具按鈕,送出去的說明書仍可能占輸入。先刪不需要的定義,再查實際送出的結果,才知道改動在哪裡。

操作方式:從同一份請求複製兩個版本,一版只縮歷史,一版只刪閒置工具。不要同時改提示寫法、模型和 effort。工具定義的差額只能表示輸入配置變化;要知道任務是否仍做得對,還得跑相同驗收。

依Token Counting 文件,可把 system、messages 與支援的 client tools 交給計數端點。回傳是估計,生成時可能略有差異;部分 server tools、MCP connector、URL/file 來源不在這個端點支援範圍。遇到那些配置,改用實際 Messages 回應的 usage,別把計數錯誤當作零 tokens。

有既有 API 帳號與已安裝官方 Python SDK 時,先用以下方法計數;它不產生答案。這只示範文字與 client tools,對更複雜配置請對照上面的端點限制。保留 SDK 版本與完整 body,並依遷移文件用 claude-haiku-5-5 重新計數,不沿用舊 Haiku 的數字。

import anthropic, json
client = anthropic.Anthropic()  # 讀取既有 ANTHROPIC_API_KEY
body = json.load(open("request.json", encoding="utf-8"))
args = {k: body[k] for k in ("system", "messages", "tools", "thinking", "output_config", "tool_choice") if k in body}
print(client.messages.count_tokens(model="claude-haiku-5-5", **args).model_dump_json())

④ 三組 Trace 配對:新 Session 是重建上下文,不是免費重來

先選一個有標準答案的小任務:從假訂單擷取訂單號、金額與幣別。驗收固定為三欄完全正確、沒有多加訂單,並留下來源位置。本篇三組從相同原始文字素材建立獨立請求,歷史範本只含文字,不搬入帶 thinking 簽章或待完成工具呼叫的續跑回合。任務指令與必要規則一致;否則新 Session 拿不到原本資料,就不是公平比較。

Haiku 5.5 三組 Trace:只更改歷史或工具配置
三組是實驗設計,不是 AlphaLab 的模型測試成績;各組獨立從同一份必要素材開始。

A 原始組:保留原始長歷史與工具。它提供文字歷史與工具開銷的基準,每輪開始都從同一份固定文字歷史快照複製,不把前一輪結果繼續累積進去。

B 歷史組:在新的請求歷史中只放必要規則、原始素材及任務,工具與 A 相同。若需交接摘要,記下摘要內容,產生摘要的費用也算入 B 的工作成本。這組量的是整份歷史重建方案,不單是按「新 Session」按鈕的效果。

C 工具組:歷史與 A 相同,僅移除確定不會用到的工具;必要工具的描述與權限保持一致。C 不建立在 B 上,這樣才看得出工具修改的獨立影響。兩種改動各自通過後,才另外測 B+C 組合。

已在 Haiku 5.5 的工具回合裡?先不要修改前綴後重播舊 thinking。官方遷移文件說明:在前綴檢查啟用的帳號,修改工具、system 或較早訊息後重播原 thinking 區塊會回 400;2026 年 8 月 31 日起建立的帳號預設啟用。要保持原工具續跑,就維持原前綴;要測不同工具配置,另建上面的純文字起始範本,而不是搬用簽章。

每題各跑三次作探索起點,輪換 A/B/C 的先後。記錄冷/暖快取與 TTL,別讓 A 全是冷寫入、B 全是暖讀取。若要比較暖快取,三組都先建立自己的前綴,預熱費用另列;若比較真實上線成本,則把預熱及失效後的重建也算回去。三次不足以宣稱普遍勝負,但能找出值得擴大測的變更。

⑤ 做一張可複製的逐請求成本表

開試算表,貼上下列 CSV 欄位;一列是一個完整模型呼叫。passed 在整件任務驗收後才填,不是收到 HTTP 200 就通過。重試沿用 task ID,換 request ID;無法取回 usage 的失敗列留空並標記待對帳,不填零。

task_id,variant,run,request_id,model,route,payload_file,response_file,input_tokens,cache_read_input_tokens,cache_write_5m,cache_write_1h,output_tokens,prompt_tokens,tier,estimated_token_usd,tool_usd,latency_ms,task_passed,error

輸入與回應檔讓你能追查「當時究竟送了什麼」。串流請求要等到官方 SDK 的完整最終 Message 再取 usage,不能把每個累積事件相加。本文的離線程式只處理 standard、global、一般 client-tool 呼叫;若回應帶有多個推論 iteration,先按每次推論拆收據,不能把頂層總量當一份提示來分級。

把以下存成 audit_cost.py。它只讀本機 JSONL(一行一份 JSON),不會呼叫模型或寫入雲端。先將每份原始回應的 usage 放進該行,並補上 task、variant、request ID、model 與 scope;缺 token 或寫入 TTL 分項就停止,要求你補資料。

"""Offline estimate for standard/global Claude Haiku 5.5 client-tool requests.
Prices checked 2026-10-08. Synthetic fixtures are not API observations.
"""
import json
import sys
from decimal import Decimal as D

def estimate(u):
    def token(name, obj=u):
        value = obj.get(name)
        if type(value) is not int or value < 0:
            raise ValueError('missing/invalid token field: ' + name)
        return value
    i = token('input_tokens')
    r = token('cache_read_input_tokens')
    w = token('cache_creation_input_tokens')
    o = token('output_tokens')
    split = u.get('cache_creation')
    if w and not isinstance(split, dict):
        raise ValueError('cache TTL breakdown required')
    a = token('ephemeral_5m_input_tokens', split) if w else 0
    b = token('ephemeral_1h_input_tokens', split) if w else 0
    if a + b != w:
        raise ValueError('cache TTL totals mismatch')
    n = i + r + w
    multiplier = D(5) if n > 100000 else D(1)
    cost = multiplier * (D(i)*D('.10') + D(r)*D('.01')
        + D(a)*D('.125') + D(b)*D('.20') + D(o)*D('.50')) / D(1000000)
    return {'prompt_tokens': n, 'tier': 'over100k' if n > 100000 else 'up_to100k',
            'estimated_token_usd': str(cost)}

if __name__ == '__main__':
    for line in open(sys.argv[1], encoding='utf-8'):
        row = json.loads(line)
        if row.get('model') != 'claude-haiku-5-5' or row.get('scope') != 'standard-global-client-tools':
            raise ValueError('unsupported model or billing scope')
        if len(row['usage'].get('iterations') or []) > 1:
            raise ValueError('multi-iteration response requires per-iteration accounting')
        print(json.dumps({'task_id': row['task_id'], 'variant': row['variant'],
            'request_id': row['request_id'], **estimate(row['usage'])}, ensure_ascii=False))

執行 python3 audit_cost.py traces.jsonl,再把估算結果併回同一列。這個縮小版沒有處理地區倍率、Batch、合約折扣、伺服器工具、多推論 iteration 與帳務延遲;那些情境需在自己的計費器逐項加入,並保留 Console 對帳欄。原始資料不要為了湊出預期省錢數字而重寫。

還沒有真實收據時,先把下列合成例題存成 traces.jsonl。它只示範檔案格式,request ID 明確標示不是 API 回傳;之後用真實完整回應替換 usage,scope 只在確認路由與模式符合時填入。

{"task_id":"synthetic-example","variant":"example","request_id":"EXAMPLE-NOT-API","model":"claude-haiku-5-5","scope":"standard-global-client-tools","usage":{"input_tokens":2000,"cache_read_input_tokens":99000,"cache_creation_input_tokens":0,"output_tokens":1000}}

⑥ 門檻附近怎麼驗?先驗算式,再驗模型成果

先用合成收據測核算器,而不是付費塞滿長文件。固定輸出 1,000、沒有快取,未快取輸入分別設為 99,999、100,000、100,001。按本篇公式,三筆估算依序是 0.0104999、0.0105、0.0525005 美元;本次離線算式檢查通過。這證明程式按指定價目分級,沒有證明 API 在這三個長度的實際回傳或帳單。

再測快取混合例:2,000 一般輸入+99,000 快取讀取+1,000 輸出,總提示 101,000;估算 token 費用為 0.00845 美元。它比前面的全新輸入例便宜,是因為讀取單價低;不能從總費用較低反推它一定沒跨門檻。

真正測模型時,使用計數端點挑選門檻附近的必要資料,不為湊數插入無關文字。保留預估與實際 usage 的差距;若需要事前上限,可自訂低於 100K 的預警線,例如 95K。這個 5K 是你的操作緩衝,不是官方保證。若預警仍被跨過,先分析附件、工具結果與後續回合新增了什麼。

決策:選省 token,還是選更可靠的完成方式?

每件合格成果成本=該組全部任務費用 ÷ 通過驗收的任務數。分子包含失敗、重試、預熱與必要摘要;分母一件任務只算一次。若沒有合格成果,記為「無可計算的合格成本」,不要除以零,也不要只挑成功的那幾列算。人工收尾時間另外記錄,避免把不同成本單位混進美元。

B 成本下降且驗收維持,才保留精簡歷史;C 輸入縮短但工具選錯或漏答,就回查刪掉的定義。若問題需要整體脈絡,接受長提示也可能比反覆補資料划算;若窄任務反覆失敗,可另做較大模型的同題比較,把價目與驗收一同換成那個模型的契約。

想改善執行層,可接著看最小 Harness 實作如何安排停止與重試;需要縮上下文時,壓縮後重新取資料的成本能提醒你把後續回查算回來。只有 tokens 下降,還不是整件工作比較便宜的證據。

FAQ:Haiku 5.5 成本的八個直接答案

Session 顯示 200K,就一定進高價級距嗎?

不一定。它可能累積多次較短請求;查每次提示長度再分級。

100,000 正好算哪一邊?

較低級距。官方以「不超過/超過」100,000 區分,離線核算用嚴格大於。

快取讀取可以從提示長度扣掉嗎?

本篇總輸入核算會把它加回。快取改變分項單價,不把已讀內容變成不存在。

只把 max_tokens 改小,就能守住輸入門檻嗎?

要分開控制。它限制生成輸出,提示長度仍要看送入的完整資料。

新 Session 一定更省嗎?

不一定。必要資料要重建,快取可能變成寫入,摘要與再查資料也有成本。

沒呼叫的工具就完全不用算嗎?

看實際 payload。工具定義若有送出,仍是模型輸入的一部分。

上面的數字是 AlphaLab 的 Haiku 實測嗎?

不是。它是合成收據的離線算式檢查;A/B/C 沒有在本次跑出模型成績。

完全不寫程式,今天可以做什麼?

請工程同事匯出同一件工作的逐請求 usage,先填一列三項輸入,再圈出超過 100K 的列。

給新手的三個重點

第一,先辨認這個數字屬於一個請求,還是一整段工作。第二,歷史與工具分開改,才知道哪個變更帶來差異。第三,用同一把驗收尺比較每件合格成果的總成本,保留失敗與重試收據。

接著閱讀

左右滑動查看更多推薦

下一步:先交出第一張能對帳的收據

今天先挑一個有標準答案的小任務,留下第一份 payload 和 usage,填出三項輸入合計,再安排 A/B/C 對照。門檻看每次公文袋有多厚,價值看助手最後交出什麼。想把這套方法接成完整系統,可以從AI 教學總覽繼續閱讀,或到AlphaLab 課程練習工作流設計。

ALPHALAB 社群

有問題?來 Telegram 聊

和 Terry、編輯、其他網友一起討論這篇文章。提問、分享觀點,回覆更即時。

加入 Telegram 討論

📩 訂閱 AlphaLab 電子報

每週最多三封:一封 Weekly 週報與最多兩封關鍵 Alpha Signal。

我們不會 spam,隨時可退訂。已訂閱?管理主題偏好(會寄登入連結到你的信箱)