每個建立在前沿 LLM 之上的團隊裡,都會出現一種熟悉的會議節奏:有人分享最新的基準排行榜。接著有人指出名次和上個月不一樣了。第三個人發現,他們團隊目前使用的模型在一個三週前大家都沒聽過的指標上掉了兩名。到會議結束時,沒有人確定要不要遷移,於是這場對話被排到了下一季。
這場會議的問題不在於人,而在於基準測試衡量的是合成任務;你的產品不是合成任務。排行榜告訴你一個模型在 MMLU、在 SWE-bench Verified、在 GPQA Diamond 上的表現——這些都是研究者為了可跨模型測量而設計的測試。這些測試都不像你在生產環境裡實際發出的提示。它們也無法捕捉模型如何處理你用戶所產生的那種凌亂、帶有領域形狀的輸入。
本文走一遍基準測試無法做到的那道練習。三個具體提示,設計為透過同一個相容於 OpenAI 的端點,以相同溫度設定、不加額外提示詞,發送給 GPT-5.5、Claude Sonnet 4.6 和 Gemini 3.1 Pro。這些提示涵蓋大部分生產工作負載會碰到的三個類別:從混亂文件中做結構化擷取、一個以推理為主的規劃任務,以及在約束下的程式碼產生。下面的觀察是團隊在執行這類比較時一再回報的行為模式——如果你在自己的環境裡跑這些提示,也會見到相同的現象。
在排行榜上,這三個模型在 SWE-bench Verified 上的分數相差不到 0.8 個百分點。實務上,它們的行為非常不同。選擇不在於誰在基準上得分最高,而在於哪種行為模式更貼合你的工作負載。
基準測試在衡量什麼,以及忽略了什麼
基準測試之所以存在,是因為必須存在。模型提供商需要標準化測試來提出能力主張,研究者需要它們來發表比較,而我們其他人需要它們作為評估模型的客觀起點。它們是有用的。但對生產使用而言,它們也存在重要的缺口。
值得明確指出三個限制,因為下面的提示例子裡每一個都會出現。
- 兼衡能力,不見行為模式。SWE-bench Verified 告訴你模型能不能解某種類型的 GitHub Issue。它不會告訴你模型是否傾向把簡單問題過度工程化、在提示有歧義時會不會先問釐清問題、或是否會第一次就輸出你要求的結構。這些才是你每天在生產中觀察到的事。
- 基準會被調校。當一個模型版本高調宣傳它在某個基準上的分數,那就是一個信號:模型至少部分針對那個基準優化過。一離開基準所設計的條件,真實世界表現和基準表現就可能(有時大幅)偏離。
- 基準會聚合。SWE-bench Verified 分數上 0.8 個百分點的差距,可能遮蔽了這樣的事實:模型 A 在某個特定子任務上明顯更好、另一個更差,而模型 B 在各子任務上比較一致。聚合會壓縮你做決策所需的信息。
下面的練習設計來呈現那些被基準聚合掉的信息。目的不是宣布勝負,而是示範你在自己的提示上複現相同練習時,應該提出哪些問題。
設定
三個提示,因為它們對應到大多數生產工作負載會碰到的類別。設定方式:每個提示以相同參數(溫度 0.3、沒有系統提示覆寫、預設回應格式)送給三個模型,透過一個相容於 OpenAI 的單一端點,讓比較保持同等條件——沒有供應商專屬 SDK 的差異、沒有不同的參數映射,也避免因為請求構造方式不同而讓某個模型獲得特殊待遇的風險。
下面是提示本身,作為可以直接複製執行的程式碼區塊。每個提示後面的行為描述,是團隊在執行這類比較時一再回報的模式——2026 年多個第三方研究都記錄過,若你在自己的環境裡跑這些提示,也應該會觀察到相同現象。重點是親自動手;本文的目的是提供框架與起始提示。
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["COMET_API_KEY"], # or replace with your API key
base_url="https://api.cometapi.com/v1", # one endpoint, multiple models
)
MODELS = [
"gpt-5.5",
"claude-sonnet-4-6",
"gemini-3.1-pro",
]
def run_comparison(prompt: str, temperature: float = 0.3) -> dict[str, str]:
"""
Send the same prompt to all three models and return their responses.
"""
responses = {}
for model in MODELS:
result = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": prompt,
}
],
temperature=temperature,
)
responses[model] = result.choices[0].message.content
return responses
# Example usage
if __name__ == "__main__":
prompt = "Summarise the key risks in this contract."
outputs = run_comparison(prompt)
for model, response in outputs.items():
print(f"\n--- {model} ---")
print(response)
提示 1:從雜亂文件做結構化擷取
這是 2026 年半數 LLM 功能的基本盤。把非結構化輸入——電子郵件、客服工單、會議逐字稿、掃描表單——擷取為帶有特定欄位的結構化物件。下面的提示要求每個模型,從一封刻意雜亂的客服郵件中擷取七個欄位:包含部分信息、相互矛盾的線索,還有一個在原文裡根本不存在的欄位。
提示
You are processing customer support emails. Extract the followingseven fields from the email below into a JSON object with exactlythese keys: - customer_name (string)- order_id (string)- issue_type (one of: "shipping", "product_quality", "billing", "returns", "other")- urgency (one of: "low", "medium", "high")- requested_action (string)- affected_product (string)- escalation_history (any prior contact about this issue, if mentioned)
Email:---Hi there, I'm writing about order #FT-2289334 from last Tuesday. The Cascadehiking boots I received are NOT the size 11 I ordered — they'reclearly size 10 (I can see the label inside). I have a guided trekbooked in 5 days and I genuinely don't know what to do. I've beena customer for years and this is the first time something likethis has happened. Can you sort this out urgently? I'd prefer a same-day exchange ifat all possible. I'm in Manchester. Margaret W.--- Return only the JSON object. No commentary, no markdown code fences.
觀察重點
三件事。第一,看模型是否不臆造地遵守所要求的 JSON 結構。第二,模型如何處理不存在於原文的欄位(escalation_history——客戶並未提及關於此問題的任何既往聯繫):會直言缺失,還是會合情合理地「腦補」?第三,模型是否在 JSON 之外產生額外說明,導致下游還得剝去包裹才能解析。另個值得關注的是 urgency 欄位:「5 天」不是立即,但客戶顯然焦慮,這留有解讀空間。
團隊一致回報的情況
GPT-5.5。通常第一次就會產出乾淨的 JSON。結構遵循度高;每個要求的欄位都在,格式可直接解析無須前處理。對缺失欄位,GPT-5.5 傾向回傳明確的 null。通常不會用 Markdown 程式碼圍欄包住 JSON,也不會附帶說明文字,便於下游解析。對於像此處這類含糊的判斷(如緊急程度),GPT-5.5 往往比另外兩個更保守——當 Claude 和 Gemini 可能會依客戶的情緒語氣判為「high」時,GPT-5.5 往往錨定在具體的 5 天時間窗,落在「medium」。
Claude Sonnet 4.6。也會產出乾淨 JSON,且通常在遵循所要求結構方面最精確。當 GPT-5.5 對缺失欄位放 null 時,Claude 常會加上未被要求的欄位以標記資料品質問題——例如「notes」或「data_quality_notes」這些原本沒要求的鍵,但裡面確實有用的信息。對人工審核者而言這很實用,但如果你的下游解析器對結構很嚴格,這會導致失敗。這是 Claude 的反覆模式:品質很高,但有時比提示要求的更「周全」,需要更明確的提示詞來約束。
Gemini 3.1 Pro。通常產出的結果最精簡。所有要求欄位都有,沒有多餘欄位,也沒有外圍說明。結構遵循正如所請求。值得注意的一個小特性:對於缺失欄位,Gemini 傾向回傳空字串而不是 null。嚴格的 JSON 解析器會區分這兩者;寬鬆的則不會。這種行為在多次執行中相當一致,看起來是模型偏好而非偶發。
這意味著什麼
三個模型都能做結構化擷取。差異在於所要求結構邊界上的行為。如果你的下游系統對結構嚴格,視多餘欄位為錯,Gemini 3.1 Pro 和 GPT-5.5 會更安全。如果你希望模型主動浮現資料品質問題,即使沒有特別要求,Claude Sonnet 4.6 會更有幫助。這些都不會出現在基準上。
提示 2:以推理為主的規劃任務
這個提示要求模型規劃一個多步驟的調查:一個研究問題,帶有三個隱含約束,謹慎的模型應該在安排步驟前先識別。這類任務就是代理式應用在啟用任何工具之前,會委派給 LLM 的規劃步驟。
提示
I'm trying to answer this research question for my team: "Is our customer churn rate higher among users who haven't usedfeature X in the last 30 days?" Produce a plan for how to investigate this. The plan should:- Identify the steps required- Sequence them with dependencies- Be actionable for a data analyst on my team Return the plan in clear, structured form.
值得注意的隱含約束:題目並未定義「流失」的意義(帳號關閉?沒有登入?沒有購買?)、沒有指定如何控制混雜變量(低參與用戶流失的原因很多,未必與 feature X 相關),也沒有建立基準比較組。謹慎的規劃者應該在給出步驟前先指出這三點。
觀察重點
模型是否真正推理了這個問題,還是輸出看似合理但經不起檢視的步驟序列。是否在未被告知的情況下識別出隱含約束。以及步驟之間的依賴是否正確——一個看起來沒問題,但第三步依賴第五步結果的計劃,實務上是無用的。
團隊一致回報的情況
GPT-5.5。通常產出最可操作的計劃。推理往往是可見的——GPT-5.5 會先枚舉它對隱含約束(流失定義、對照組、混雜變量)的假設,再鋪陳步驟,使你容易看出它的理解和你的預期在哪裡不同。步驟依賴標示可靠。輸出經常包含一節指出哪些步驟可以平行化,雖非要求但的確有價值。這類任務會凸顯 GPT-5.5 的工具使用與代理式訓練——規劃行為假設下游會接著執行。
Claude Sonnet 4.6。通常產出最「深思」的計劃,字面意義上——Claude 的計劃裡常包含其他兩個模型沒提到的考量。針對這題,Claude 可能會指出「相關 vs 因果」的方法學問題,提醒「未使用 feature X」本身可能是流失的徵兆而非原因,並明確標出未被說出的限制,這些是謹慎的分析師應該注意的。代價是:計劃可能比所需更長,個別步驟有時為實際問題過度設計。這與 Claude 在其他場景的行為一致——專家級謹慎,有時超出任務所需。
Gemini 3.1 Pro。通常產出結構最清晰、依賴關係最明白的計劃。推理品質高——Gemini 能穩定識別隱含約束,把問題拆解為可辯護的序列,並產生實際可執行的步驟說明。缺點是:讀起來略顯機械。它完成任務,但較少提出 Claude 會強調的方法學細節,也不太會像 GPT-5.5 那樣提示平行化。這與 Gemini 更廣泛的模式相符——推理強,周邊判斷更「工匠式」。
這意味著什麼
在這個任務上,三個模型的推理品質都很高。差異在於「字面要求之外」模型會加上什麼:GPT-5.5 加的是操作務實(平行化、執行提示);Claude 加的是專家級的謹慎(方法、邊界情形、統計細節);Gemini 加的是清晰與精簡。沒有誰是錯的。適不適合你的應用,取決於你希望模型在完成你要求的任務之後,還做些什麼。
提示 3:帶有明確約束的程式碼產生
這個提示要求模型實作一個不算太 trivial 的小函式:一個 Python 函式,接受帶時間戳的事件列表,回傳相鄰事件間最長間隔(秒),並處理四個邊界情況。約束很明確;意圖是測試「在約束下的程式碼產生」,而非能力上限——每個模型都寫得出來。變化在於它們如何處理這些約束。
提示
Write a Python function that takes a list of timestamped events andreturns the longest gap (in seconds) between consecutive events. Requirements:- Function signature: longest_gap(events: list[datetime]) -> float- Handle these edge cases: 1. Empty list (return 0.0 or raise — your choice, but be consistent) 2. Single event 3. Duplicate timestamps 4. Unsorted input- Use only the standard library- Include type hints- Return just the function. No tests or usage examples.
觀察重點
模型是否處理了四個邊界情況,或默默遺漏。型別註記是否準確而非套版。實作是否採取可辯護的演算法(排序再掃描),而非奇技淫巧。以及模型是否尊重最後那條「不要測試、不要使用範例」的限制——這種落在提示尾端的指示,指令遵循強的模型會遵守,弱一些的會「悄悄違反」。
團隊一致回報的情況
GPT-5.5。通常產出工程化最徹底的程式碼。四個邊界情況都有明確分支處理,型別註記精確(常包含對邊界回傳值的 Optional 或 Union),並附帶帶有範例呼叫的 docstring。實作通常採用顯而易見的演算法——排序、掃描、追蹤最大間隔——而且是正確的。值得注意:即便提示明確要求只要函式,GPT-5.5 也常會加上單元測試或使用範例。這是偏向操作務實的模型的取捨——即便你不要求,它也會加上它認為你需要的東西。
Claude Sonnet 4.6。通常產出可讀性最好的程式碼。函式精簡,在頂部以整潔的守衛式子句處理邊界情況,型別註記準確而最小化。Claude 常會加上一段思考性註解來說明提示沒講清的判斷——例如對重複時間戳,將其視為零長度間隔並說明理由,這是提示未指定但可辯護的選擇。Claude 遵守「不要測試」的限制,通常比 GPT-5.5 更可靠。就函式本身而言,是三者中最易維護的。這與 Claude 在程式碼品質上的口碑一致:乾淨、慣用、帶有專家手感。
Gemini 3.1 Pro。通常產出最經濟的程式碼。函式正確、邊界情況處理到位、實作最短。docstring 通常一句話。型別註記存在且準確。Gemini 的解法很少包含測試或大段註解,也不會過度工程化——恰如提示所求。對於只要可工作的函式、並打算自己補上測試的開發者,這是最直達的路徑。若你希望模型也一併處理周邊工作,另外兩者會加得更多(不管你有沒有要求)。
這意味著什麼
三個模型都寫得出這個函式。行為差異在於模型對「字面要求之外」會加多少周邊工作——以及對「不要新增 X」這類否定式指令的遵守程度。GPT-5.5 偏向徹底,即使你在提示裡豁免了徹底;Claude 偏向工藝(可讀性高的程式碼、對判斷的深思註解);Gemini 偏向經濟(只做你要求的,不多做)。對於代理式工作流程、模型輸出會直接進入生產程式碼庫的情境,你要的行為取決於下游審查流程的預期——以及你對嚴格遵守禁止性指令的需求。
演化出的模式
在上述三個提示中,從 2026 年發表的一致比較研究與開發者回報裡,浮現三個一致的行為模式。這些不是能力聲明——每個模型都能在高水準處理每個任務。它們是傾向,只有當團隊觀察同一模型處理數十個提示時才會浮現。把上述提示放到你自己的環境裡,你也會看到相同模式;本文的目的,是提供辨識這些模式時的框架與觀察角度。
| 模型 | 行為傾向 | 最適用於… |
|---|---|---|
| GPT-5.5 | 操作務實。會添加執行提示、防禦性編碼,以及下游友善的輸出。對由代理式和工具使用塑形的任務特別強。 | 你的應用會把模型的輸出串接到後續執行——代理、工作流程,或下一步自動化的管線。 |
| Claude Sonnet 4.6 | 專家級謹慎。提出超出字面要求的考量、提醒倫理與方法問題,產出高度可讀的程式碼。 | 你的應用有人工審查模型輸出——內容生成、程式碼審查、重視工藝的分析。 |
| Gemini 3.1 Pro | 經濟直接。只做要求的事,不多做。對等工作中結構遵循最乾淨、成本可預測、輸出 token 最少。 | 你的應用對輸出有嚴格要求、重視可預測成本,或希望模型是精準工具而非「會思考的協作者」。 |
重要提醒。 這些是傾向,而非規則。透過合適的提示詞,三個模型都可以被引導出任何上述行為——一個足夠詳盡的系統提示可以讓 Gemini 加上測試、讓 Claude 只輸出最小內容、讓 GPT-5.5 不產生單元測試。重點在於每個模型的預設行為:在你尚未引導之前,它們會做什麼。預設行為就是你在生產裡要與之共存的,除非你主動以提示對抗它。
如何在你的工作負載上測試
上述練習可在任何工作負載上複現,而且應該要做。基準分數可作為第一道篩選,但對你的具體應用真正重要的模型行為模式,只會在你觀察它們處理你的具體提示時才看得見。
把這個練習用在你自己流量上的實務指南:
- 選三個代表性提示類別。不是隨機三題——而是涵蓋你工作負載的三個類別。大多數生產系統可以拆成少數幾種提示型別(擷取、分類、生成、推理、程式碼、摘要)。選占你流量大宗的類別。
- 每個類別蒐集 20–30 個例子。最好來自真實流量,必要時匿名化。重點是提示要像你的應用實際看到的內容,而不是基準題。每類二十個足以看到模式;三十個讓你更有把握。
- 透過同一端點跑所有模型。使用相容 OpenAI 的聚合端點,會比各自 SDK 快非常多。本文頂部的程式碼就是全部設定。相同溫度、相同參數、相同提示——輸出差異就是模型差異。
- 先質化再量化。先用眼睛看。行為模式通常在前十幾個提示內就很明顯。當你對每個模型在你的工作負載上的行為形成假設後,再依此構建評分量表;但假設是來自觀察,而非現成的評分模板。
- 留意模型「額外加了什麼」。基準的問題是模型是否答對。行為的問題是模型還做了什麼:有沒有加測試?有沒有解釋推理?有沒有提出顧慮?有沒有產生你未要求的欄位?模型差異就藏在這裡。
- 選擇匹配你下游模式的模型。如果你的下游流程是自動化,你要的是預設產生乾淨、可解析輸出的模型。如果你的下游是人工審查,你要的是預設會補上人類審查者希望看到的判斷的模型。正確答案取決於模型之後的那一步。
結語
在 GPT-5.5、Claude Sonnet 4.6 與 Gemini 3.1 Pro 之間做選擇,不是為了找出哪個模型最好,而是找出哪個模型最貼合你的工作負載形狀——而這種形狀是基準看不見的。如果已經備妥提示,以上練習一個下午就能複現;它的價值在於,讓你從「猜」轉為「觀察」。
給要親自執行練習的團隊: 最便利的設定是使用一個相容於 OpenAI 的單一端點,把三個模型都放在同一把金鑰後面。CometAPI 是一條路;把你現有的 OpenAI SDK 指到不同的 base URL,然後把 model 參數視為變數即可。
基準告訴你模型能做什麼。行為模式告訴你,模型在你的提示上,預設會做什麼。前者有發表;後者得自己觀察。每類二十個提示,一個下午,你就得到一個排行榜永遠給不出的答案。
準備好可靠整合了嗎?前往 CometAPI 與 API doc,即可無縫取得 Claude Fable 5 與其他前沿模型,享受統一計費與企業級可靠性。立即註冊並獲得新用戶豐厚點數——你的下一個突破專案就在眼前。
