將生產環境 AI Agent 遷移至 GPT-5.6 Sol
將生產環境 AI Agent 遷移至 GPT-5.6 Sol
Ploy 已將其負責規劃、構建與編輯行銷網站的生產環境 AI agent 從 Claude Opus 4.8 遷移至 GPT-5.6 Sol。此次遷移使構建的實際耗時(wall-clock time)減少了 2.2 倍,營運成本降低了 27%,同時維持或提升了視覺品質評分。
為模型一致性優化評估框架(Evaluation Harness)
評估框架通常會針對現有的模型進行隱性調整,導致在測試挑戰者模型時出現不準確的性能數據。Ploy 發現,GPT-5.6 最初約有三分之一的失敗案例是由於框架的假設而非模型本身的缺陷所致。
關鍵框架失敗原因
- 工具調用預算(Tool-Call Budgets): 現有的框架是針對 Claude Opus 的序列化工具調用風格而設計的。GPT-5.6 使用並行工具調用,這會耗盡這些預算,即使模型正確解決了案例。
- 執行器支援(Executor Support): 評估執行器不支援批次檔案讀取,而這是 GPT-5.6 頻繁使用但 Opus 很少使用的功能。
- 隱性閾值(Implicit Thresholds): 部分數據集缺乏明確的
minScore閾值,預設為 1.0。這導致 GPT-5.6 的高品質輸出(例如評分為 0.98)被判定為「失敗」,而若使用更靈活的閾值,這些輸出本可以通過。
性能比較:Claude Opus 4.8 vs. GPT-5.6
| 每完成一次構建的平均值 | Claude Opus 4.8 (n=11) | GPT-5.6 (n=10) |
|---|---|---|
| 成本 | $3.06 | $2.22 |
| 實際耗時 | 8m 00s | 3m 42s |
| 輸入 Token | 2.60M | 1.70M |
| 輸出 Token | 33.0K | 17.1K |
| 視覺評分 | 0.936 | 0.970 |
透過架構轉換解決工具調用損壞問題
GPT-5.6 有一種特定的行為,即它會在工具調用中用虛構的值(例如 offset: 0)填充所有選填參數,而不是省略它們。這使得虛構的值與預期的參數無法區分,導致工具執行時出現重大失敗。
「虛構值」問題
在 Ploy 的 code 工具中(該工具擁有 25 個參數),GPT-5.6 在 100% 的調用中都發送了所有 25 個鍵值,而 Claude Opus 4.8 在 99.9% 的情況下都會省略未使用的參數。這導致 52% 至 64% 的 檔案讀取返回空值,因為模型不小心將 offset: 0 作為真實參數發送了。
解決方案:必填但可為 Null 的架構
提示詞(Prompting)和 OpenAI 的 strict 模式都無法解決此行為。Ploy 在供應商邊界實施了架構轉換:
- 將選填項改寫為可為 Null: 每個選填屬性都被改寫為必填但可為 null 的形式,使用
anyOf: [T, null]。這會強制模型在不使用參數時明確地聲明null。 - 剝離 Null 值: 在工具調用銜接處,null 值會在驗證之前被剝離,以確保工具實作的接收到與以往相同的輸入。
此變更將空檔案讀取降低至 0%,並使每個任務所需的工具調用總數減少了約 30%。
為 GPT-5.6 重新配置 Prompt Caching
GPT-5.6 的 Prompt caching 與 Anthropic 的組織範圍緩存(organization-scoped caching)有本質上的不同。若未能正確配置 prompt_cache_key,可能會導致緩存命中率為 0% 並顯著增加成本。
架構差異
- Anthropic (Claude): 緩存是組織範圍的。一個靜態前綴(例如 29K tokens 的工具架構)會被緩存一次並在所有對話和工作區中共享。
- OpenAI (GPT-5.6): 緩存需要明確的
prompt_cache_breakpoint標記和一個prompt_cache_key。每個鍵值對應到一個緩存節點,該節點每分鐘支援約 15 次請求(RPM)。如果流量超過此限制,請求會溢流到冷節點,導致緩存未命中。
實施策略:工作區範圍的鍵值
為了平衡命中率與吞吐量,Ploy 實施了工作區範圍的鍵值 (ws:{workspaceId}):
- 條目 A (靜態前綴): 在工作區內的所有會話中共享,使新會話的首次調用成本降低。
- 條目 B (工作區上下文): 在所有同一個工作區的對話中共享;當工作區記憶改變時會更新。
- 條目 C (Session Chain): 對於僅追加式的對話輪次,使用隱式的全提示詞鏈。
經過此重新配置後,首次調用緩存命中率從 0% 增加到 83.7%,且未緩存的輸入 Token 總數下降了 28%。
解決推理回放失敗問題
GPT-5.6 的 Responses API 預設會將前一輪的推理過程作為伺服器端項目引用。這導致在對話中途出現間歇性的 Item 'rs_...' not found 錯誤。Ploy 透過設定 store: false 來解決此問題,這會強制 SDK 請求加密的推理內容,並將其作為自包含的數據塊(blobs)回放,而非指向伺服器狀態的指標。
社群洞察與反對意見
業界從業者已注意到,在生產環境中,模型通常很難互換。一位開發者指出:
將整個評估框架、提示詞與模型視為一個整體系統,而非真正具有可拆卸模組化組件的系統,如果你在意乎於追求極致性能。
其他批評則集中在 GPT-5.6 的設計品質,部分用戶偏好 Claude Opus 的品牌一致性,而其他人則認為 GPT-5.6 本質上是先前模型的重新包裝,相對於 Opus 4.6 等舊版本,品質提升微乎其微。