Eerst de conclusie: als een prototype voor intelligente klantenservice zes grote modellen tegelijk wil vergelijken, kan het onderhoud van alleen al de SDK's twee weken aan werktijd opslokken als je rechtstreeks op de officiële API's aansluit. Na de overstap naar een uniforme interface duurde het van modelkeuze tot livegang slechts drie dagen. Dit artikel ontleedt het echte proces van ons evaluatieteam, inclusief reproduceerbare code en vijf valkuilen die je absoluut moet vermijden.
Projectachtergrond: één prototype voor intelligente klantenservice, zes modellen op hetzelfde podium
Vorige maand kreeg ik een interne evaluatietaak: een prototype voor intelligente klantenservice bouwen voor een team dat actief is in online onderwijs. De eis was duidelijk: dezelfde set gebruikersvragen achtereenvolgens naar GPT-4o, Claude 4 Sonnet, DeepSeek-V3, Qwen-Max, ERNIE en Doubao sturen, de antwoordkwaliteit en responstijd vergelijken, en uiteindelijk twee modellen kiezen voor dual-active.
De uniforme testset bestond uit 300 echte klantenservicegesprekken, verdeeld over drie categorieën: restitutiebeleid, cursusadvies en technische storingen. Er waren drie beoordelingsdimensies: antwoordnauwkeurigheid, latency van de eerste token en kosten per token. Ik moet hier benadrukken dat de testset vast moet liggen, anders zweven de conclusies zodra je een andere set vragen gebruikt.
Fase van modelkeuze: begin niet meteen met code schrijven, laat eerst de prijsvergelijking werken
Zes modellen betekent zes soorten facturatiemethoden; sommige rekenen invoer en uitvoer apart, andere geven korting bij cache-hits. We hebben eerst het tokenverbruik van de 300 testgevallen geteld en dat vervolgens op de prijstabellen van elke aanbieder gelegd. In deze stap kan een prijsvergelijkingshulpmiddel voor grote modellen veel tijd schelen.
Uit de praktijktest bleek dat in hetzelfde klantenservicescenario de kosten per gesprek tussen verschillende modellen meerdere malen kunnen verschillen. Qua kwaliteit presteerden Claude 4 Sonnet en Qwen-Max stabiel bij vragen zoals restitutiebeleid, waarbij regels strikt gevolgd moeten worden; bij het oplossen van technische storingen was de redeneerketen van DeepSeek-V3 completer. GPT-4o was algeheel evenwichtig, maar de stukprijs lag hoger.
De grootste les uit de fase van modelkeuze is: kijk niet alleen naar ranglijsten. De vragen op ranglijsten komen vaak niet overeen met de verdeling in jouw bedrijfsvoering; alleen als je zelf de testset doorloopt, heb je iets te zeggen.
Integratiefase: de onderhoudsnachtmerrie van zes SDK's
In het begin sloten we netjes volgens de officiële documentatie aan, met als resultaat dat er zes client-wrappers in het project lagen, elk met een andere authenticatiemethode, time-outparameters en foutcodes. Om één retry-logica te wijzigen moesten zes bestanden worden aangepast; de testers werden er gek van.
Daarna stapten we over op het TokenWorks API-aggregatieplatform voor grote modellen, en dat veranderde de situatie. Het is compatibel met de OpenAI SDK; één regel base_url aanpassen is genoeg om van model te wisselen. Dat is het meest praktische engineeringvoordeel: de bestaande code hoefde bijna niet te veranderen.
Kijk naar de code: van model wisselen is een kwestie van één parameter:
from openai import OpenAI
client = OpenAI(
api_key="jouw key",
base_url="https://api.token8341.com/v1"
)
resp = client.chat.completions.create(
model="deepseek-v3",
messages=[{"role":"user","content":"Hoe wordt het restitutiebeleid berekend?"}]
)
Vervang het model-veld door gpt-4o of qwen-max, en de rest van de code verandert niet. In ons project gebruiken we het voor uniforme toegang tot meerdere modellen; met één Key kun je GPT-4o, Claude, DeepSeek, Qwen, ERNIE, Doubao en andere mainstream modellen aanroepen, waardoor zes evaluatiescripts tot één werden teruggebracht.
Livegangfase: multi-Key-failover en kostenwaarschuwingen
Een werkend prototype betekent nog niet dat je live kunt. Online zijn er vooral twee dingen eng: dat een model plotseling wordt beperkt in snelheid, en dat de rekening stilletjes het budget overschrijdt.
Voor failover hebben we twee Keys in rotatie geconfigureerd; zodra de primaire Key een 429 triggert, schakelen we automatisch over naar de reserve. Voorbeeldconfiguratie:
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)
Kostenwaarschuwingen zijn nog eenvoudiger: tel dagelijks het tokenverbruik en push een melding naar WeCom zodra de drempel wordt overschreden. We halen de data op via de usage-interface van het TokenWorks API-aggregatieplatform voor grote modellen; betalen naar verbruik, lagere kosten, en de factuurdimensionen zijn ook helder, zodat je niet het probleem krijgt dat zes partijen apart facturen sturen en de financiële administratie niet meer klopt.
Vijf veelvoorkomende valkuilen
Valkuil één: een niet-vaste testset. Zodra je een andere set vragen gebruikt, verandert de conclusie; je moet de set testgevallen vastzetten en bij elke evaluatie dezelfde gebruiken.
Valkuil twee: latency van de eerste token negeren. In klantenservicescenario's kunnen gebruikers niet wachten; als de totale reactie snel is maar de eerste token traag, is de ervaring alsnog slecht. Meet dit apart in de praktijktest.
Valkuil drie: modelnamen hardcoderen. Als je model in de bedrijfslogica vastschrijft, moet je een release uitbrengen om van model te wisselen. Het is beter om er een configuratie-item van te maken.
Valkuil vier: geen fallback voor snelheidsbeperking. Elk model kan op enig moment een limiet raken; zonder retry- en schakellogica is dat online gewoon een incident.
Valkuil vijf: alleen naar stukprijs kijken en niet naar cache. In meerstaps klantenservicegesprekken zit veel herhaalde context; modellen die cache-hits ondersteunen hebben in de praktijk een stuk lagere kosten. Als de officiële aanbieder geen specifiek kortingspercentage bekendmaakt, geldt de werkelijke factuur als maatstaf.
Nog één opmerking: later hebben we de evaluatiescripts ook op het TokenWorks API-aggregatieplatform voor grote modellen aangesloten, zodat dezelfde set testgevallen op zes modellen kon worden uitgevoerd en er een vergelijkingstabel uitkwam; dat is veel efficiënter dan handmatig ordenen. Voor teams die AI-modelselectie moeten doen: zorg eerst dat het proces soepel loopt met een uniforme interface en praat daarna over diepgaande optimalisatie; draai de volgorde niet om.
Auteur: Sun Haoran
Publicatiedatum: 13 oktober 2026