Đã đăng
Kỹ thuật

Bộ phát hiện Claude giả giờ đã là một thư viện mã nguồn mở

ai-model-verifier là động cơ đứng sau trình kiểm tra mô hình của chúng tôi, được phát hành trên npm theo giấy phép AGPL-3.0. Đưa cho nó một URL gốc, một khóa và một mô hình, nó sẽ cho bạn biết endpoint có phục vụ đúng thứ nó bán hay không, nay kèm kiểm tra chữ ký suy luận và cách tính token.

·4 phút đọc·Bởi Đội ngũ UnoRouter
kỹ thuậtthông báo

Hồi tháng Tư chúng tôi đã công bố các con số về những bên bán lại Claude giả: 183 kênh trên 8 nhà cung cấp trả lời như Kiro, Codeium hoặc một mô hình khác đeo bảng tên Claude. Các phép dò bắt được chúng khi đó nằm trong pipeline đồng bộ của chúng tôi. Giờ chúng nằm trong một gói mà ai cũng có thể cài.

ai-model-verifier có trên npmGitHub theo giấy phép AGPL-3.0. Nó nhận một URL gốc, một khóa API và tên mô hình, rồi trả về một trong ba kết luận, genuine, suspicious hoặc unverified, cùng với quy tắc đã kích hoạt và phản hồi thô của các phép dò kèm theo.

Vì sao là một thư viện

Cùng một bộ kiểm tra giờ chạy ở ba nơi: trong trình duyệt của bạn tại trình kiểm tra mô hình, trên máy chủ của chúng tôi cho bảng xếp hạng công khai, và bên trong pipeline đồng bộ quyết định UnoRouter sẽ mở những tuyến upstream nào. Ba bản sao của một danh sách mẫu sẽ dần lệch nhau. Một gói thì không.

Nó được cố ý thiết kế đẳng hình. Chỉ dùng API chuẩn web, không import node:, không phụ thuộc lúc chạy. Lời gọi HTTP được tiêm từ ngoài, nên trình duyệt có thể đi vòng qua CORS còn máy chủ có thể đi qua một fetch an toàn trước SSRF. Nhà cung cấp và bộ phát hiện là các điểm vào riêng biệt, nên kiểm tra Anthropic không bao giờ đóng gói kèm cấu hình Gemini.

Có gì mới kể từ tháng Tư

Bốn phép dò hành vi từ bài đầu tiên vẫn là cốt lõi: câu chuyện mèo con, bài haiku, câu hỏi danh tính và câu hỏi tên mô hình, nay áp dụng cho các endpoint theo định dạng Anthropic, OpenAI và Gemini. Xung quanh chúng là các kiểm tra không phụ thuộc vào việc hỏi mô hình xem nó là ai.

  • Chữ ký suy luận. Claude gắn một chữ ký do máy chủ tạo vào mọi khối suy luận. Một relay phục vụ mô hình khác không thể tạo ra nó. Phép dò danh tính có thể bị huấn luyện bằng system prompt; chữ ký thì không.
  • Kế toán token. Một relay có thể chuyển tiếp Claude thật mà vẫn thổi phồng input_tokens ở mọi lời gọi. Hai prompt chỉ khác nhau một đoạn văn bản cố định phải chênh nhau về số token bị tính trong một dải đã biết, count_tokens phải khớp với số đã tính, và đầu ra phải nằm dưới max_tokens. Opus 4.7 và 4.8 dùng tokenizer khác, nên dải này đồng thời là một phép kiểm tra bậc mô hình.
  • Sai bậc và đánh tráo. Tính tiền Opus nhưng phục vụ Sonnet lọt qua các phép dò hành vi, vì Sonnet viết chuyện mèo con hoàn toàn ổn. Phép dò tên mô hình bắt được câu trả lời nêu tên bậc rẻ hơn, còn kiểm tra phong bì bắt được endpoint trả về id mô hình khác với id được yêu cầu.
  • Trộn phản hồi và rò rỉ ngôn ngữ. Mỗi prompt mang một nonce. Câu trả lời lặp lại nonce của người khác nghĩa là proxy đang trộn phản hồi giữa các người dùng. Ký tự CJK trong câu trả lời cho một prompt tiếng Anh chỉ ra một mô hình Trung Quốc bị đánh tráo.
  • Siêu dữ liệu phong bì. Một id chatcmpl- bên trong phản hồi định dạng Anthropic, hay các khóa usage của OpenAI trong phản hồi Messages, nghĩa là có một lớp dịch nằm giữa bạn và mô hình. Được báo cáo như quan sát, không phải kết luận: chính gateway của chúng tôi cũng là một lớp như vậy.
  • Thông lượng. Mô hình lớn hơn thì chậm hơn trên mỗi token, nên một tuyến tính tiền như Opus mà chạy với tốc độ của Sonnet là đáng xem lại. Chỉ lấy mẫu, không bao giờ đặt ngưỡng: phép so sánh hữu ích là giữa các tuyến phục vụ cùng một mô hình, và chỉ bên gọi mới ghép được điều đó.

Những gì nó không chứng minh

Một chữ ký hợp lệ chứng minh rằng một đường Anthropic thật đã trả lời. Nó không chứng minh bậc nào: Sonnet trả về một chữ ký hoàn toàn hợp lệ khi bị bán dưới tên Opus, nên vượt qua ở đây vẫn cần các kiểm tra bậc. Phát lại khối suy luận để Anthropic xác thực lại chữ ký nghe như bài kiểm tra quyết định. Chúng tôi đã xây nó, và nó không hoạt động qua relay. Hai upstream đang chạy thật đều trả về 200 cho một khối thật lẫn cho chính khối đó với 308 byte base64 ngẫu nhiên thay cho chữ ký. Relay gửi lại lượt đó tới backend của chính nó, nên không có gì được xác thực cả. Tùy chọn này tắt mặc định và được ghi rõ như vậy.

Các kiểm tra chữ ký và token được chuyển từ veridrop, cũng theo AGPL, với dung sai đã được hiệu chỉnh theo API chính thức. Chúng tôi giữ nguyên các giới hạn trông có vẻ lỏng vì phản hồi thật của Anthropic nằm sát chúng.

Cách dùng

Trình kiểm tra mô hình chạy trọn bộ ngay trong trình duyệt của bạn, gồm cả kiểm tra chữ ký và token, và không gì rời khỏi máy bạn ngoài các lời gọi tới nhà cung cấp của bạn. Trang xếp hạng công bố các kết quả mà mọi người chọn chia sẻ. Cho pipeline của riêng bạn:

typescript
import { runVerification } from "ai-model-verifier";

const result = await runVerification({
  provider: "anthropic",
  baseUrl: "https://YOUR-PROVIDER",
  apiKey: process.env.YOUR_KEY,
  model: "claude-opus-4-8",
  mode: "server",
  checkSignature: true,
  checkTokenTruth: true,
});

console.log(result.verdict, result.reasons);
// "suspicious" [ "tier-mismatch: requested claude-opus-4-8, served sonnet" ]

Chỉ bật những gì bạn cần. checkSignaturecheckTokenTruth đều tốn thêm yêu cầu, nên mặc định tắt trừ khi được yêu cầu. Siêu dữ liệu phong bì và thông lượng được đọc từ các phản hồi mà lần chạy đã có sẵn và không tốn gì.

Kiểm tra một nhà cung cấp, đọc bài viết tháng Tư để xem các con số khởi đầu tất cả, hoặc mở issue trên GitHub nếu một endpoint thật nhận kết luận sai.

Bài viết liên quan