Strona główna / Artykuły

Testowanie GLM 5.2 w Claude Code przy użyciu rzeczywistego SDK za pięć dolarów

Pięciodolarowe doświadczenie z OpenRouter: kierowanie danych z Claude Code do GLM 5.2, audyt i modyfikacja SDK React Native, koszt każdego z zadań oraz moment, w którym kończą się oszczędności.

Wydawca: REACTAPP.TOP8 min czytania1756 słów

Źródła: I ran GLM 5.2 on my React Native SDK for five dollars

Rozrastająca się cena usług Claude Code to dobry powód, by poszukać tańszego silnika. Najczęściej wymienianym kandydatem jest GLM 5.2 – model o otwartym kodzie pochodzący z chińskiego laboratorium, który jest ciągle chwalony w publikacjach porównawczych. Zamiast czytać więcej takich artykułów, jeden z programistów wydał pięć dolarów na OpenRouter i przetestował ten model na rzeczywistym kodzie, a mianowicie na generatywnym SDK interfejsu użytkownika stworzonym dla React Native, sprawdzając każdą zwróconą przez niego linię kodu. Audyt kosztował 59 centów, a proces budowy – cztery dolary. Szczegóły tego testu są wartych przeanalizowania, w tym informacja o niemal błędzie dotyczącym tego, jaki kod powinien być wysyłany do hostowanego modelu.

Dlaczego w ogóle to testować?

Dwa motywy skłoniły go do przeprowadzenia eksperymentu. Pierwszym z nich była cena – model w cenie jednej dziesiątej standardowej, który poradziłby sobie nawet z połową obciążenia, pozwoliłby zaoszczędzić prawdziwe pieniądze, szczególnie dla kogoś, kto jednocześnie uruchamia wiele agentów, czasami nawet całą ich grupę. Drugim motywem była ciekawość co do chińskich laboratoriów, które szybko wysyłają produkty i publikują imponujące wyniki testów, ale których modele nigdy nie były testowane na własnym kodzie programisty.

Zasada testu była prosta: należało użyć bazy kodu, którą programista zna najlepiej ze wszystkich, oraz sprawdzić każde twierdzenie zawarte w wynikach.

Przygotowania zajęły mniej czasu, niż się spodziewano

GLM 5.2 pochodzi od Z.ai. Został wprowadzony w połowie czerwca, ma okno kontekstowe na milion tokenów i jest powszechnie opisywany jako model do programowania na poziomie najnowocześniejszych rozwiązań za ułamek tej ceny. Oficjalne dane potwierdzają tę popularność. Design Arena firmy OpenRouter umieściła go w pierwszym procentie najlepszych modeli do generowania kodu, na podstawie 3 243 turniejów bezpośrednich. To jednak nadal benchmark kogoś innego, a benchmarki to kod stworzony przez innych.

Claude Code nie przejmuje się tym, co znajduje się za nim. Komunikuje się w formacie API Anthropic i czyta dwie zmienne środowiskowe, aby określić, dokąd trafią żądania. Jeśli skierujesz je na inny endpoint, całe narzędzie nadal będzie funkcjonować – z tym samym agentem, edycją plików i wykonywaniem testów – ale z innym „mózgiem” sterującym tym procesem.

OpenRouter pełnił rolę punktu końcowego. Jedno konto i jeden klucz API mogą być używane z dziesiątkami dostawców, w tym Z.ai, więc nie było potrzeby utrzymywania oddzielnego stosunku rozliczeniowego z zagranicznym laboratorium tylko po to, by przeprowadzić jeden eksperyment. Kilka dolarów na konto daje dostęp do dowolnego modelu za pomocą jednego klucza. Proces składa się z trzech kroków.

Stwórz klucz. Utwórz klucz API w OpenRouter i dodaj kilka dolarów na konto. GLM 5.2 nie oferuje wersji bezpłatnej, choć dostępna kwota wystarcza na długo – cały eksperyment zmieścił się w limicie pięciu dolarów, z dodatkową rezerwą. Pole limitu kredytu pełni rolę zabezpieczenia; w tym przypadku stanowił on sztywny limit pięciu dolarów. Po zakończeniu eksperymentu na panelu kontrolnym widniało 4,59 dolarów zużytego z tego limitu, co pokrywa wszystko opisane poniżej.

Skieruj na to Point Claude Code. Wystarczy kilka ustawień: podstawowa adresa URL prowadzi do API OpenRouter, token autoryzacji to klucz OpenRouter, a domyślne nazwy modeli Opus i Sonnet są obie ustawione na identyfikator GLM 5.2.

ANTHROPIC_BASE_URL = https://openrouter.ai/api
ANTHROPIC_AUTH_TOKEN = your_openrouter_key
ANTHROPIC_DEFAULT_OPUS_MODEL = z-ai/glm-5.2
ANTHROPIC_DEFAULT_SONNET_MODEL = z-ai/glm-5.2
ANTHROPIC_DEFAULT_HAIKU_MODEL = z-ai/glm-4.5-air

Gdy to jest już ustawione, uruchomienie Claude Code oznacza komunikację z GLM. Aby wrócić do Claude, wystarczy usunąć te linie kodu – to cała procedura zmiany.

Ustal dostawcę. Większość ludzi pomija ten krok, a jest on istotny. W OpenRouter jeden nazwa modelu może być obsługiwana przez długą listę firm, a ceny znacznie się różnią – od poniżej dolara za milion tokenów do ponad trzech dolarów. Ta różnica nie jest przypadkowa. Niektórzy hostowie uruchamiają skwantyzowane wersje modelu, które są mniejsze, szybsze, ale znacznie mniej inteligentne; dlatego zakładka „Dostawcy” zawiera nawet filtr kwantyzacji. Jeśli zostanie wybrana automatyczna ścieżka routingu, żądanie może trafić do jednego z tych hostów, a tester będzie oceniał skompresowaną kopię, myśląc, że to oryginał.

Aby uzyskać sprawiedliwe porównanie, routowanie zostało ustawione bezpośrednio na Z.ai, czyli na serwerze producenta, przy wyłączonych opcjach awaryjnych. Każda prośba trafiała wtedy wyłącznie do prawdziwego modelu o pełnej precyzji. Jeśli celem jest sprawiedliwość, to właśnie ta opcja decyduje o wyniku.

Prawie błąd: nie cały kod może być udostępniany

SDK jest otwartym oprogramowaniem, ale w tym samym repozytorium znajdują się materiały, które nie są dostępne publicznie: dynamiczny zestaw narzędzi do integracji, system fakturowania, logika zarządzania użytkownikami oraz elementy służące do zarabiania pieniędzy. Przesyłanie całego monorepo do modelu hostowanego w innym kraju to rodzaj nieumyślnego wycieku, który zostaje zauważony dopiero później.

Zanim cokolwiek zostało uruchomione, stworzono czystą kopię. Znajdowały się w niej tylko te elementy, które miały być widoczne, mianowicie pakiet SDK oraz przykładowa aplikacja z jej backendem agenta, podczas gdy kod komercyjny pozostał na dysku samego programisty. Następnie przeprowadzono nudną, ale ważną weryfikację – w kopii szukano słów, które mogłyby zdradzić istotę gry, takich jak onboarding, billing, tenant czy stripe, a wynik przed opuszczeniem maszyny choćby jednego tokena wyniósł zero.

To nawykanie jest prawdziwą lekcją. Tani model nie zmienia zasad. Kod publiczny może trafić do hostowanej API, natomiast kod prywatny pozostaje lokalny albo w ogóle nie jest używany. Ten sam rozsądek skłonił kiedyś programistę do wyboru droższego, ale bezpiecznego dla UE modelu dla backendu klienta, i nadal ma takie samo zastosowanie, gdy eksperyment służy jedynie rozrywce.

Zadanie pierwsze: przeczytaj SDK i określ, gdzie zawodzi

Pierwsze zadanie polegało wyłącznie na testowaniu umiejętności czytania. Od GLM wymagano przeprowadzenia audytu architektury, jakby miała zostać na niej zbudowana nowa generacja narzędzi: należało znaleźć kluczowe elementy nośne, nazwać pliki oraz określić, które elementy ulegną najpierw uszkodzeniu. Najważniejszą zasadą było to, że każde stwierdzenie musiało odnosić się do konkretnego pliku i wiersza, a niepewności należało przyznać, zamiast je ukrywać za wymysłami.

Model przeczytał czterdzieści jeden plików i przygotował raport audytu, w którym wskazano trzy rzeczywiste problemy, o których deweloper już wiedział:

  • Typy komponentów są zamknięte w paczce przy uruchamianiu aplikacji, więc agent nie może zdefiniować nowego komponentu w czasie wykonywania, a dokładnie tego wymaga kolejna funkcjonalność.
  • Przepływ danych w tle nie ma żadnego wpływu na główną ścieżkę agenta, ponieważ odpowiedni adapter nigdy nie otrzymał implementacji metody obsługującej przepływ danych.
  • Zignorowano błąd związany z driftem: SDK potrafi renderować trzynaście komponentów, ale serwer dopuszcza tylko jedenaście i informuje model o zaledwie siedmiu, przez co dwa w pełni sprawne komponenty pozostają niedostępne dla agenta.
  • Nic z tego nie zostało przyjęte bez weryfikacji. Każde odniesienie zostało sprawdzone za pomocą grep wobec kodu i okazało się poprawne. Ścieżki plików i numery wierszy były prawidłowe, a model nie wymyślił ani jednej funkcji. Zauważył nawet coś, czego nikt wcześniej nie zauważył: komentarz w backendzie z dumą stwierdzający, że używa najnowszych modeli Claude, umieszczony tuż nad kodem, który faktycznie wykorzystuje tańszy model OpenAI. Stary komentarz przekształcił się w małe kłamstwo. To była doskonała detekcja ze strony modelu, który deweloper był gotów odrzucić.

    Audyt kosztował 59 centów i trwał sześć minut.

    Zadanie drugie: zmiana kodu

    Czytanie sprawia, że każdy model wydaje się inteligentny, więc następnym krokiem było umożliwienie mu kontaktu z kodem. Podczas własnej audytoryzacji otrzymał najtrudniejszą korektę: ostateczne zakończenie dewiacji komponentów. SDK miało stać się jedynym źródłem prawdy, miało być na jego podstawie generowane manifest, a serwer miał czytać to manifest zamiast ręcznie wpisywanej listy, dzięki czemu oba elementy nigdy więcej nie mogłyby się różnić. W takim przypadku test musiałby zawiązać się niepowodzeniem.

    Model ukończył każdą część. Z SDK wygenerowano manifest, serwer został przekierowany, aby go używać, dwa komponenty, które wcześniej były problematyczne, stały się prawidłowymi elementami wbudowanymi i w końcu stały się dostępne, a dodano również test zabezpieczający przed odchyleniami. Własne testy przeprowadzone przez programistę pokazały dziewięćdziesiąt dwa przechodzące testy – oryginalne osiemdziesiąt siedem bez zmian plus pięć nowych. Następnie podjęto celowe próby jego zniszczenia: ręczne usunięcie komponentu z manifestu i ponowne uruchomienie testu zabezpieczającego. Próba ta zawiodła głośno, dokładnie w odpowiednim miejscu. Sieć bezpieczeństwa miała swoje zabezpieczenia.

    W trakcie pracy model napotkał również irytującą pułapkę w środowisku programistycznym – problem z składnią React Native, który uniemożliwiał uruchomicielowi testów ładowanie określonych plików. Nie ukrył tego problemu ani się nie poddał. Stworzył małe rozwiązanie tymczasowe i odnotował ten problem jako uwagę w swoim raporcie – uczciwość ta jest cenniejsza niż schludny wynik.

    Pułapka

    Konstrukcja kosztowała cztery dolary w porównaniu z 59 centami przy odczytywaniu, a właśnie tę różnicę pomijają filmy promocyjne. Pod względem odczytu GLM okazał się wyraźnym zwycięzcą: był około dziesięć razy tańszy od standardowego rozwiązania i trzy razy szybszy. Podczas budowy również odniósł sukces, ale większość tych czterech dolarów poszła na przeprowadzanie testów – pętli składającej się z uruchomienia, odczytania błędu, edycji i ponownego uruchomienia, powtarzanej około trzysta razy. Tylko około trzydzieści z tych kroków stanowiło rzeczywiste zmiany w kodzie. Reszta to wymagała wytrzymałości.

    Zatem wniosek jest węższy niż „GLM zastępuje istniejące rozwiązanie”. Do czytania, przeglądania, audytowania i wyjaśniania bazy kodu, w pracach, gdzie model raz dokonuje skomplikowanych obliczeń i zwraca odpowiedź, GLM 5.2 to prawdziwa okazja i warto go celowo wybrać. W przypadku długotrwałego budowania bez nadzoru, gdy koszty rosną w wyniku pętli debugowania, on nadal sprawdza się, choć oszczędności maleją, a argumenty za użyciem nowoczesnego modelu powracają.

    Pewnego popołudnia pięć dolarów oraz znajomy kod dały jednoznaczną odpowiedź, czego nigdy nie zrobiłby strumień spontanicznych opinii, co uczyniło to najtańszym badaniem miesiąca.

    Wykorzystanie w codziennej praktyce

    W zależności od kodu istnieją dwa podejścia.

    Dla treści publicznych konfiguracja OpenRouter znajduje się w zablokowanym komentarzem w ustawieniach Claude Code. Aby uzyskać taną drugą opinię na temat repozytorium otwartego oprogramowania, analizy architektury lub pytania typu „co jest nie tak?”, usuń znaki komentarza, ustaw dostawcę na Z.ai i pozwól GLM przeprowadzić skomplikowaną analizę za niewielką opłatę. Claude pozostaje domyślnym wyborem podczas tworzenia.

    Dla treści prywatnych model trafia do kodu, a nie na odwrót. Oznacza to albo lokalne wagi, albo nic.