Wykrywacz podróbek Claude jest teraz biblioteką open source
ai-model-verifier to silnik naszego testera modeli, opublikowany w npm na licencji AGPL-3.0. Podaj mu bazowy URL, klucz i model, a powie ci, czy endpoint serwuje to, co sprzedaje, teraz z kontrolą podpisu rozumowania i rozliczania tokenów.
W kwietniu opublikowaliśmy liczby dotyczące fałszywych odsprzedawców Claude: 183 kanały u 8 dostawców, które odpowiadały jako Kiro, Codeium albo inny model z przypiętą plakietką Claude. Sondy, które je złapały, żyły w naszym potoku synchronizacji. Teraz żyją w pakiecie, który każdy może zainstalować.
ai-model-verifier jest dostępny w npm i na GitHubie na licencji AGPL-3.0. Przyjmuje bazowy URL, klucz API i nazwę modelu, a zwraca jeden z trzech werdyktów, genuine, suspicious lub unverified, razem z regułą, która zadziałała, i surowymi odpowiedziami sond.
Dlaczego biblioteka
Te same kontrole działają teraz w trzech miejscach: w twojej przeglądarce w testerze modeli, na naszych serwerach dla publicznego rankingu i w potoku synchronizacji, który decyduje, które ścieżki upstream UnoRouter w ogóle udostępnia. Trzy kopie listy wzorców rozjeżdżają się. Jeden pakiet nie.
Jest celowo izomorficzny. Tylko standardowe API webowe, żadnych importów node:, zero zależności w czasie wykonania. Wywołanie HTTP jest wstrzykiwane, więc przeglądarka może ominąć CORS, a serwer może przejść przez fetch zabezpieczony przed SSRF. Dostawcy i detektory to osobne punkty wejścia, więc sprawdzanie Anthropic nigdy nie dołącza konfiguracji Gemini.
Co nowego od kwietnia
Cztery sondy behawioralne z pierwszego wpisu nadal są rdzeniem: historia o kotku, haiku, pytanie o tożsamość i pytanie o nazwę modelu, teraz dla endpointów w formacie Anthropic, OpenAI i Gemini. Wokół nich są kontrole, które nie polegają na pytaniu modelu, kim jest.
- Podpis rozumowania. Claude dołącza do każdego bloku rozumowania podpis generowany po stronie serwera. Relay serwujący inny model nie potrafi go wytworzyć. Sondy tożsamości da się wytrenować promptem systemowym; podpisu nie.
- Rozliczanie tokenów. Relay może przekazywać prawdziwego Claude i mimo to zawyżać
input_tokensprzy każdym wywołaniu. Dwa prompty różniące się stałym fragmentem tekstu muszą różnić się liczbą rozliczonych tokenów w znanym przedziale,count_tokensmusi zgadzać się z rozliczeniem, a wyjście musi mieścić się poniżejmax_tokens. Opus 4.7 i 4.8 używają innego tokenizera, więc przedział jest zarazem kontrolą poziomu. - Niezgodność poziomu i podmiana. Rozliczany Opus, serwowany Sonnet prześlizguje się przez sondy behawioralne, bo Sonnet pisze zupełnie dobrą historię o kotku. Sonda nazwy modelu łapie odpowiedź wymieniającą tańszy poziom, a kontrola koperty łapie endpoint, który zwraca inny identyfikator modelu niż zamówiony.
- Mieszanie odpowiedzi i przecieki języka. Każdy prompt niesie nonce. Odpowiedź zwracająca cudzy nonce oznacza, że proxy miesza odpowiedzi między użytkownikami. Znaki CJK w odpowiedzi na angielski prompt wskazują na podmieniony chiński model.
- Metadane koperty. Identyfikator
chatcmpl-w odpowiedzi w formacie Anthropic albo klucze użycia OpenAI w odpowiedzi Messages oznaczają, że między tobą a modelem siedzi warstwa tłumacząca. Raportowane jako obserwacja, nie werdykt: nasza własna bramka jest dokładnie taką warstwą. - Przepustowość. Większe modele są wolniejsze na token, więc ścieżka rozliczana jako Opus, a działająca z prędkością Sonnet, zasługuje na uwagę. Próbkowana, nigdy progowana: użyteczne porównanie jest między ścieżkami serwującymi ten sam model, a złożyć je może tylko wywołujący.
Czego to nie dowodzi
Poprawny podpis dowodzi, że odpowiedziała prawdziwa ścieżka Anthropic. Nie dowodzi, który poziom: Sonnet zwraca całkowicie poprawny podpis, gdy jest sprzedawany jako Opus, więc zaliczenie tutaj nadal wymaga kontroli poziomu. Odesłanie bloku rozumowania, by Anthropic ponownie zweryfikował podpis, brzmi jak test ostateczny. Zbudowaliśmy go i nie działa przez relay. Dwa działające upstreamy zwróciły 200 dla prawdziwego bloku i dla tego samego bloku z 308 bajtami losowego base64 w miejscu podpisu. Relay wysyła turę od nowa do własnego backendu, więc nic nigdy jej nie weryfikuje. Opcja jest domyślnie wyłączona i tak udokumentowana.
Kontrole podpisu i tokenów są przeniesione z veridrop, również na AGPL, którego tolerancje skalibrowano względem oficjalnego API. Zachowaliśmy te z pozoru luźne granice, bo prawdziwe odpowiedzi Anthropic leżały blisko nich.
Jak z tego korzystać
Tester modeli uruchamia pełny zestaw w twojej przeglądarce, razem z kontrolą podpisu i tokenów, i nic nie opuszcza twojej maszyny poza wywołaniami do twojego dostawcy. Strona rankingu publikuje wyniki, którymi ludzie zdecydowali się podzielić. Dla własnego potoku:
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" ]Włączaj to, czego potrzebujesz. checkSignature i checkTokenTruth kosztują dodatkowe żądania, więc pozostają wyłączone, dopóki o nie nie poprosisz. Metadane koperty i przepustowość są odczytywane z odpowiedzi, które przebieg i tak wykonał, i nic nie kosztują.
Przetestuj dostawcę, przeczytaj kwietniowy wpis, by poznać liczby, od których wszystko się zaczęło, albo załóż zgłoszenie na GitHubie, jeśli prawdziwy endpoint dostaje błędny werdykt.
Brama LLM to jeden punkt końcowy i klucz, który kieruje zadania do wielu dostawców modeli. Oto co robi, dlaczego pomaga i kto naprawdę jej potrzebuje.
Podłączyliśmy do UnoRouter 18 darmowych dostawców: 190+ wierszy darmowych modeli, jeden endpoint OpenAI-compatible, $0 per token. Niosą one limity nadrzędne, których nie możemy podnieść, plus niewielki próg 1 na minutę, który dodajemy sami, aby wspólne pule pozostały sprawiedliwe. Oto uczciwa wersja.
UnoRouter jest wymieniony w katalogach narzędzi AI i startupów. Tutaj nas znajdziesz, zweryfikujesz wpisy i przeczytasz niezależne opinie.