驗證 relay 回傳的是不是官方原文
把一則帶有證明的 API 回應貼到下方的驗證器:它會在你的瀏覽器裡驗證簽章,告訴你這則回應來自哪個官方上游網域,以及 relay 有沒有改動過它。資料不會離開你的電腦。
- 資料只留在瀏覽器
- 開源驗證器
- 免費,免註冊
三步驟驗證一則回應
- 1
為 API 金鑰開啟驗證
在 API 頁面為該金鑰開啟「官方驗證」。只有原樣轉發的 Claude Messages 與 GPT Responses 回應會帶有證明。
- 2
儲存完整回應
送出串流請求,用 curl -o 把回應的位元組原樣寫入檔案,結尾應該會看到 event: tee.proof。非串流請求請加上請求標頭 x-wokey-tee-proof-mode: multipart,並儲存整個 multipart 回應。在 Windows 上請使用 curl.exe -o,不要用 PowerShell 的 > 重新導向或用記事本另存,它們會改動換行字元或編碼。
- 3
貼到驗證器
把完整回應貼上或拖曳到下方的驗證器,然後開始驗證。驗證在本頁的瀏覽器中完成,不會送出任何網路請求。
curl -sN https://api.wokey.ai/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":256,"stream":true,"messages":[{"role":"user","content":"Hello"}]}' \
-o captured-response上方的驗證器直接由開源儲存庫透過 GitHub Pages 發布,不經過 Wokey 的伺服器,因此 Wokey 無法換成一個「永遠顯示通過」的驗證器。你也可以把頁面另存到本機,離線開啟。
驗證器會請你核對 PCR0,也就是 Enclave 映像的度量值。請以開源儲存庫公布、任何人都能從原始碼自行重現的值為準,不要使用回應中附帶的值。
如何解讀結果
- 全部通過
- attestation 連結到 AWS Nitro 根憑證,PCR0 等於公布值,簽章有效,回應位元組與簽章中的雜湊一致。顯示的上游網域(例如 api.anthropic.com)就是這則回應的來源,relay 沒有改動過它。
- 證明有效,但缺少回應內文
- 你只貼上了 tee.proof 事件。可以確認證明是由真正的 Enclave 簽署,但少了內文就無法重新計算雜湊,也就無法證明你看到的內容未被改動。請貼上完整回應。
- PCR0 不一致
- attestation 是真的,但 Enclave 執行的不是經過稽核的映像。請將這則回應視為未經證明。
- 簽章或雜湊驗證失敗
- 證明或回應被改動過,或是在儲存、複製時位元組被更改(例如編碼轉換)。請用 curl -o 重新儲存原始回應再試;仍然失敗就不要信任這則回應。若儲存工具把換行改成 CRLF,或把檔案存成 UTF-16,驗證器會自動轉回並提示;是否通過仍以簽章雜湊為準。
- 沒有 tee.proof
- 這則回應未經證明:可能是金鑰沒有開啟驗證、請求經過格式轉換,或當時 Enclave 無法使用。請視為未經證明。
如何檢查其他 relay:每種方法能測出什麼、測不出什麼
沒有上游簽章時,只能做間接檢查。這些檢查能找出明顯的問題,但最好的結果也只是「沒發現可疑之處」,絕不會是「確認為官方」。以下是常見方法與它們的限制。
| 方法 | 做法 | 能發現 | 測不出 |
|---|---|---|---|
| Token 計數 | 做法: 用同一段固定提示詞,分別向官方 API 和 relay 上的同一個模型送出請求,比較 usage 中的 input_tokens。 | 能發現: 換成其他廠商的模型:不同廠商的分詞器不同,數字會明顯對不上。 | 測不出: 同一家廠商的模型常共用分詞器,換成同系列更便宜的型號測不出來;你還需要一個官方參考值。 |
| 提示詞快取 | 做法: 把超過模型最小快取長度的相同前綴連送兩次,確認第二次回應是否回報 cache_read_input_tokens,並以快取讀取價計費。 | 能發現: 後端不是官方上游,或 relay 破壞了快取卻仍收取全價。 | 測不出: 快取命中只代表後端支援快取,不代表是哪個模型。 |
| 長上下文 | 做法: 送出接近標稱上下文上限的長文字,在中間藏一則關鍵資訊,最後針對它提問。 | 能發現: 用上下文較小的模型冒充,或 relay 偷偷截斷歷史訊息。 | 測不出: 答對不代表模型版本正確,而且這項檢查的 token 成本最高。 |
| 協定細節 | 做法: 將串流事件順序(message_start 到 message_stop)、訊息 id 格式、標頭與錯誤格式和官方文件比對。 | 能發現: 粗糙的套殼,例如把其他模型的輸出硬包成 Claude 格式。 | 測不出: 這些欄位都很容易偽造,用心的套殼可以做到完全一致。 |
不要依賴的方法
- 問模型「你是誰」或「你的知識截止日期是什麼時候」:官方模型自己也常答錯,relay 也能用系統提示詞讓任何模型自稱 Claude。
- 憑感覺判斷回答品質或速度:受提示詞、負載和隨機性影響太大,只能當作參考。
為什麼這裡沒有「一鍵檢測任意 relay」
- 檢測必須用你在那家 relay 的 API 金鑰送出請求。經由我們的伺服器轉發,等於把別家服務的金鑰交給我們,我們不想保管。
- 直接從瀏覽器呼叫 relay 會失敗,因為大多數 relay 不允許跨來源請求。
- 上述檢查只能給出「可疑」或「沒發現問題」。把它們包裝成分數,看起來很權威,實際上會誤導。
Relay 自我檢查清單
在選擇 relay 之前,或懷疑目前使用的 relay 有問題時,請依這個順序檢查:
- 回應是否帶有可離線驗證的上游證明?若有,簽章中的上游網域是否為官方網域,例如 Claude 是 api.anthropic.com?
- 固定提示詞的 input_tokens 是否與官方 API 一致?
- 重複送出長前綴後,回應是否回報快取讀取,並以快取價計費?
- 接近標稱上限的上下文能否正常處理而不被截斷?
- relay 是否公開說明上游來源,以及是否記錄或保存請求內容?
- 無法驗證的 relay,不要傳送金鑰、客戶資料等敏感內容。
證明能說明什麼、不能說明什麼
能說明
- 這則回應來自哪個官方上游網域。
- 回應位元組與上游回傳的完全相同,包括 model 欄位;relay 沒有改動任何內容。
- Enclave 執行的是由公開原始碼建置的映像(PCR0 可重現)。
不能說明
- 機密性:relay 轉發時仍會經手明文。
- 沒有證明的回應,例如經過格式轉換的請求和圖片生成。
- 逐位元組相同的請求之間,無法分辨舊回應被重放。
常見問題
貼上的回應會被上傳到任何地方嗎?
不會。驗證器是純前端頁面,使用瀏覽器內建的 WebCrypto 驗證簽章,不會送出網路請求。你可以在瀏覽器開發者工具的網路面板確認,也可以把驗證器另存到本機離線使用。
AI API relay 合法嗎?
取決於你和 relay 所在地區的法律,以及上游服務商的使用條款,各地區、各服務商的規定不同;本頁不構成法律意見。使用前請先閱讀上游條款與當地規定,涉及敏感或受監管的資料時尤其如此。這個工具只回答一個可以用技術驗證的問題:你收到的回應是不是官方上游的原文。
怎麼判斷 relay 提供的模型有沒有「降智」?
透過 relay 使用時覺得模型變笨,通常是以下原因之一:偷偷換成更便宜的模型、截斷對話歷史、調低輸出上限,或關閉思考。帶有證明的回應可以排除第一種:簽章涵蓋上游的原始位元組,所以 model 欄位來自官方 API。截斷與參數修改發生在請求端,回應證明不涵蓋;這部分可借助上方的長上下文與 Token 計數檢查。
Claude 鏡像站和官方網站有什麼不同?
官方產品是 claude.ai 與 Anthropic API。鏡像站是第三方架設的聊天網頁,背後可能使用官方 API、共用帳號或其他廠商的模型,功能與隱私權政策各不相同,使用者通常無從分辨。如果你是在 Claude Code、Cursor 這類工具中使用 API,關心的就是 API relay,判斷方法相同:它能不能提供你可以自行驗證的上游證明?
回應中沒有 tee.proof 怎麼辦?
請確認金鑰已開啟「官方驗證」,而且呼叫的是原樣轉發路由,即 Claude Messages 或 GPT Responses。經過格式轉換的請求(例如透過 Chat Completions 呼叫 Claude)一律不帶證明。Enclave 暫時無法使用時,請求會降級,該次回應也不會有證明。任何沒有證明的回應都請視為未經證明。
可以用這個工具驗證其他 relay 嗎?
驗證器只能檢查帶有 Proof-of-Observation 證明的回應。協定是開源的,任何 relay 都可以實作;尚未實作的 relay 只能使用上方的間接檢查,最好的結果也只是「沒發現可疑之處」。