SiCore TokenWorks
LLM APIAPI Gateway

Praktyczny test platformy agregującej API modeli SiliconFlow: prototyp inteligentnej obsługi klienta podłączony do sześciu modeli — wszystkie pułapki, w które wpadłem

TokenWorks Team·2026-10-12

Najpierw wnioski: jeśli prototyp inteligentnej obsługi klienta ma jednocześnie porównywać sześć dużych modeli, to przy bezpośrednim połączeniu z oficjalnymi API samo utrzymanie SDK zje dwa tygodnie harmonogramu. Po przejściu na jednolite API od wyboru modeli do wdrożenia zajęło to tylko trzy dni. W tym artykule rozkładamy na części rzeczywisty proces naszego zespołu testowego, w tym kod do replikacji i pięć pułapek, których trzeba koniecznie uniknąć.

Tło projektu: jeden prototyp inteligentnej obsługi klienta, sześć modeli na jednej scenie

W zeszłym miesiącu dostaliśmy wewnętrzne zadanie testowe: zbudować prototyp inteligentnej obsługi klienta dla zespołu zajmującego się edukacją online. Wymagania były jasne: te same pytania użytkowników podawać kolejno GPT-4o, Claude 4 Sonnet, DeepSeek-V3, Qwen-Max, ERNIE i Doubao, porównać jakość odpowiedzi i opóźnienie, a na końcu wybrać dwa modele do trybu aktywnego dwukrotnego.

Ujednolicony zestaw przypadków testowych to 300 prawdziwych rozmów obsługi klienta, obejmujących trzy kategorie: polityka zwrotów, konsultacje dotyczące kursów i awarie techniczne. Trzy wymiary oceny: dokładność odpowiedzi, opóźnienie pierwszego tokena i koszt jednostkowy tokena. Trzeba tu podkreślić, że zbiór testowy musi być stały, inaczej po zmianie zestawu pytań wnioski zaczną się rozjeżdżać.

Etap wyboru: nie spiesz się z pisaniem kodu, najpierw porównaj ceny

Sześć modeli, sześć zestawów zasad rozliczeń: niektóre liczą osobno wejście i wyjście, inne dają zniżkę za trafienie w cache. Najpierw policzyliśmy liczbę tokenów dla 300 przypadków, a potem porównaliśmy z cennikami poszczególnych dostawców. Na tym etapie narzędzie do porównywania cen dużych modeli pozwala zaoszczędzić sporo czasu.

W testach wyszło, że w tym samym scenariuszu obsługi klienta koszt pojedynczej rozmowy może się różnić między modelami nawet kilkukrotnie. Pod względem jakości przy pytaniach wymagających ścisłego trzymania się reguł, jak polityka zwrotów, Claude 4 Sonnet i Qwen-Max wypadły stabilnie; przy diagnozowaniu awarii technicznych łańcuch rozumowania DeepSeek-V3 był pełniejszy. GPT-4o był ogólnie zrównoważony, ale cena jednostkowa była wyższa.

Największa lekcja z etapu wyboru: nie patrz tylko na rankingi. Zadania w rankingach często nie pokrywają się z rozkładem twojego biznesu — dopiero własne przejście przez zbiór testowy daje prawo do opinii.

Etap integracji: koszmar utrzymania sześciu zestawów SDK

Na początku uczciwie podłączyliśmy się zgodnie z oficjalną dokumentacją. W projekcie leżało sześć opakowań klienta, każde z innym sposobem uwierzytelniania, parametrami timeoutu i kodami błędów. Zmiana jednej logiki ponawiania wymagała edycji sześciu plików — testerzy dosłownie pękali.

Później przeszliśmy na platformę agregującą API modeli SiliconFlow i sytuacja się zmieniła. Jest zgodna z SDK OpenAI — wystarczy zmienić jedną linię base_url, aby przełączyć model. To najpraktyczniejsza wygoda inżynieryjna; oryginalny kod prawie nie wymaga zmian.

Spójrzmy na kod — przełączenie modelu to kwestia jednego parametru:

from openai import OpenAI

client = OpenAI(

api_key="twój key",

base_url="https://api.token8341.com/v1"

)

resp = client.chat.completions.create(

model="deepseek-v3",

messages=[{"role":"user","content":"Jak naliczana jest polityka zwrotów?"}]

)

Zmień pole model na gpt-4o lub qwen-max, reszta kodu bez zmian. W naszym projekcie używamy tego do jednolitego dostępu do wielu modeli — jednym Key można wywołać GPT-4o, Claude, DeepSeek, Qwen, ERNIE, Doubao i inne główne modele, a skrypt testowy skrócił się z sześciu do jednego.

Etap wdrożenia: odporność na awarie wielu Key i alerty kosztowe

Prototyp działający lokalnie to jeszcze nie gotowość do wdrożenia. Na produkcji najbardziej boimy się dwóch rzeczy: nagłego ograniczenia limitów po stronie jakiegoś modelu oraz cichego przekroczenia budżetu na rachunku.

Dla odporności na awarie skonfigurowaliśmy rotację dwóch Key: gdy główny Key dostanie 429, automatycznie przełączamy na zapasowy. Przykład konfiguracji:

keys = ["key_a", "key_b"]

current = 0

def call(prompt):

global current

try:

return request(keys[current], prompt)

except RateLimitError:

current = (current + 1) % len(keys)

return request(keys[current], prompt)

Alerty kosztowe są jeszcze prostsze: codzienne zliczanie zużycia tokenów i wysłanie powiadomienia do WeCom po przekroczeniu progu. Dane pobieramy przez interfejs użycia platformy agregującej API modeli SiliconFlow; rozliczenie jest za rzeczywiste zużycie, koszt korzystniejszy, a wymiar rachunku przejrzysty — nie ma sytuacji, w której sześciu dostawców wystawia osobne faktury i finanse nie mogą ich uzgodnić.

Pięć typowych pułapek

Pułapka pierwsza: niestały zbiór testowy. Po zmianie zestawu pytań wnioski się zmieniają — trzeba zamrozić zestaw przypadków i używać tego samego przy każdym teście.

Pułapka druga: pomijanie opóźnienia pierwszego tokena. W scenariuszu obsługi klienta użytkownik nie może czekać; jeśli całkowity czas odpowiedzi jest szybki, ale pierwszy token wolny, doświadczenie jest równie złe. W testach trzeba to liczyć osobno.

Pułapka trzecia: zaszycie nazwy modelu na sztywno. Wpisanie model na stałe w kodzie biznesowym oznacza, że zmiana modelu wymaga wydania nowej wersji. Lepiej wyodrębnić to do konfiguracji.

Pułapka czwarta: brak zabezpieczenia przed limitami. Każdy model kiedyś trafi na ograniczenie — bez logiki ponawiania i przełączania to na produkcji gotowy incydent.

Pułapka piąta: patrzenie tylko na cenę jednostkową, a nie na cache. W wieloturowych rozmowach obsługi klienta jest dużo powtarzającego się kontekstu; modele obsługujące trafienia w cache mają realnie niższy koszt. Jeśli dostawca nie ujawnia konkretnego współczynnika zniżki, trzeba się oprzeć na rzeczywistym rachunku.

Dodam jeszcze, że później podłączyliśmy skrypt testowy również do platformy agregującej API modeli SiliconFlow: ten sam zestaw przypadków uruchamiany na sześciu modelach i tabela porównawcza na wyjściu — wydajność znacznie wyższa niż ręczne zestawianie. Dla zespołów, które muszą wybierać modele AI, najpierw warto uruchomić cały proces na jednolitym API, a dopiero potem mówić o głębokiej optymalizacji — kolejności nie należy odwracać.

Autor: Sun Haoran

Data publikacji: 13 października 2026