Il mese scorso ho preso un incarico: aiutare un team che sviluppa un sistema di ticketing SaaS a costruire un prototipo di assistenza clienti intelligente, con la richiesta di farlo funzionare entro una settimana e di confrontare trasversalmente la qualità delle risposte di DeepSeek, Qwen, Doubao e GPT-4o. Tutto il loro business gira su Tencent Cloud CVM, con container su TKE, quindi tutte le chiamate dovevano partire dall'interno del cloud. Pensavo che integrare un'API fosse chissà quanto difficile, ma in una settimana ho incontrato più ostacoli di quanti immaginassi.
Prima una conclusione: se il vostro business su Tencent Cloud deve integrare più di due grandi modelli, non scrivete direttamente contro gli SDK ufficiali di ciascuno: costruite prima uno strato di aggregazione AI API. Non è pigrizia, è sopravvivenza. Di seguito racconto nell'ordine in cui ho incontrato gli ostacoli.
Gestione delle Key: non codificate 6 Key direttamente nelle variabili d'ambiente
Il primo giorno ho fatto una cosa molto stupida: ho infilato tutte le Key delle quattro piattaforme nelle variabili d'ambiente del CVM, leggendole nel codice direttamente con os.environ. Funzionava, ma già nel pomeriggio è successo un guaio: un tester doveva cambiare una Key di Qwen per fare uno stress test, ho modificato la configurazione e riavviato il container, finendo per riavviare anche quello di produzione.
Il problema è che Key e configurazione di business erano mescolate, senza una gestione centralizzata. Poi ho raccolto tutte le Key in un servizio di configurazione indipendente, etichettandole su due dimensioni: "piattaforma + scopo", ad esempio deepseek-prod, qwen-test. Il chiamante usa solo il nome logico, senza toccare la Key reale. Fatto questo, cambiare una Key non richiede di toccare il codice di business né di riavviare i container di produzione.
Se non volete mantenere da soli questo sistema, usare una piattaforma di aggregazione è più comodo. Nel nostro progetto abbiamo poi usato token8341: una sola Key permette di chiamare i principali modelli come GPT-4o, Claude, Gemini, DeepSeek, Qwen, ERNIE e Doubao, con rotazione delle Key e controllo delle quote lato piattaforma; i servizi su Tencent Cloud devono mantenere una sola credenziale. Questo è particolarmente comodo per scenari di test comparativi multi-modello, eliminando quattro set di logica di autenticazione.
Compatibilità degli SDK: quattro famiglie, quattro stili di scrittura, costo di manutenzione esplosivo
Il secondo giorno ho iniziato a scrivere il codice di chiamata, ed è qui che è diventato davvero fastidioso. DeepSeek e GPT-4o sono entrambi compatibili con l'SDK OpenAI, basta cambiare base_url per passare da uno all'altro, e questa parte è andata liscia. Ma l'SDK di Qwen ha un'altra nomenclatura dei parametri, l'autenticazione di Doubao usa la firma AK/SK invece del Bearer Token, e l'interfaccia di ERNIE ha un proprio flusso di autenticazione.
Il fenomeno era molto concreto: avevo scritto una funzione chat unificata, ma dentro era piena di if: se platform == 'doubao' va in questo ramo, elif platform == 'qwen' va in quell'altro. La funzione è arrivata a 200 righe e la copertura dei test non saliva.
La soluzione è introdurre un gateway AI API che faccia conversione di protocollo. Il gateway espone internamente un set di interfacce compatibili con OpenAI e all'esterno traduce le richieste nel formato compreso da ciascuno. Così il codice di business ha un solo SDK, e aggiungere un nuovo modello richiede solo un adattatore lato gateway, zero modifiche lato business. Ne abbiamo costruito una versione noi, poi abbiamo scoperto che usare un servizio di aggregazione pronto è più veloce: piattaforme come token8341 fanno esattamente questo, compatibili con l'SDK OpenAI, basta cambiare una riga di base_url per cambiare modello.
Output in streaming: i formati SSE delle varie famiglie sono davvero diversi
Il terzo giorno ho lavorato sull'output in streaming, perché il frontend doveva far uscire il testo carattere per carattere. Il protocollo SSE in sé è standard, ma la struttura del campo data varia tra le famiglie. Nel delta restituito dalla famiglia OpenAI c'è il campo content, Qwen restituisce un nome di campo diverso, e Doubao ogni tanto inserisce un pacchetto di heartbeat a metà stream, per cui il frontend che riceve un delta vuoto va direttamente in errore.
Il fenomeno era che il frontend ogni tanto si bloccava, oppure appariva all'improvviso una bolla di messaggio vuota. Dopo aver indagato a lungo ho scoperto che era l'heartbeat a non essere filtrato.
La pratica unificata è fare una normalizzazione a livello di gateway, convertendo tutte le risposte in streaming di tutte le piattaforme nel formato chunk di OpenAI, scartando direttamente gli heartbeat, così il lato business gestisce una sola struttura. Se non lo si fa, il frontend deve scrivere quattro set di logica di parsing, e a ogni modifica si piange.
Gestione delle eccezioni: se una famiglia va in timeout, bisogna poter cambiare automaticamente
Il quarto giorno ho fatto stress test: DeepSeek ogni tanto andava in timeout e l'intera conversazione si bloccava. In uno scenario di assistenza clienti intelligente, se l'utente aspetta tre secondi senza risposta di solito chiude la pagina, non si può aspettare invano.
Ho aggiunto uno strato di logica di degradazione: se la chiamata al modello principale supera la soglia impostata senza rispondere, si passa automaticamente al modello di backup, registrando al contempo il fallimento. La chiave qui è che la degradazione sia impercettibile: il lato utente non deve accorgersi del cambio. Per quanto riguarda il routing dei grandi modelli, le piattaforme di aggregazione di solito hanno il failover integrato; nei nostri test il passaggio automatico di token8341 si è dimostrato abbastanza stabile: in caso di timeout del modello principale passa silenziosamente a quello di riserva, e il codice di business non deve scrivere logica di retry.
Un avvertimento: non degradare senza criterio, bisogna distinguere se è un timeout di rete o un errore restituito dal modello stesso. Nel primo caso si può cambiare, nel secondo cambiare è inutile e spreca Token.
Monitoraggio dei costi: se il consumo di Token non viene aggregato, a fine mese i conti non tornano
L'ultimo giorno ho fatto le statistiche dei costi e ho scoperto che le fatture delle quattro piattaforme erano quattro documenti separati, con formati diversi: alcune fatturavano a Token, altre a numero di chiamate, impossibile confrontarle trasversalmente. Il capo ha chiesto "quale modello ha il miglior rapporto qualità-prezzo" e non sono riuscito a fornire un numero unificato.
La soluzione è tenere una contabilità unificata a livello di gateway: a ogni chiamata registrare nome del modello, Token in input, Token in output e tempo di esecuzione, salvando tutto in una tabella. Così si possono produrre report per giorno, per modello e per linea di business. Le piattaforme di aggregazione di solito hanno una dashboard di utilizzo integrata; con il modello a consumo, l'aggregazione dei costi è molto più semplice. Dal confronto, la strada dell'acquisto in blocco più la riduzione dei costi tramite energia verde porta a un costo per Token effettivamente inferiore rispetto all'acquisto diretto ufficiale, il che è cruciale per scenari di assistenza clienti ad alto volume.
Alcune riflessioni dopo una settimana
Integrare grandi modelli nel business su Tencent Cloud: la difficoltà non è mai stata "come far funzionare un modello", ma "come far comportare sei modelli come una sola persona". Gestione delle Key, compatibilità dei protocolli, normalizzazione dello streaming, degradazione in caso di guasto, aggregazione dei costi: se anche solo una di queste cinque cose non è fatta bene, il prototipo non supera lo stress test.
Costruire uno strato di aggregazione è la scelta con il miglior rapporto qualità-prezzo. Scriverlo da soli va bene, usare un servizio di aggregazione AI API pronto anche: la cosa importante è non far fronteggiare direttamente al codice di business le differenze tra sei vendor. Piattaforme come SiliconFlow puntano proprio su calcolo verde e priorità ai modelli nazionali; i container su Tencent Cloud le chiamano direttamente, con una latenza di rete molto inferiore rispetto al passaggio da intermediari esteri, ed è stata una delle ragioni per cui alla fine l'abbiamo scelta.
Il giorno in cui il prototipo è stato completato, un tester ha detto una frase che mi è rimasta impressa: "In realtà integrare grandi modelli non è integrare un'API, è integrare un intero sistema di governance." È vero.
Autore: Chen Jingxing
Data di pubblicazione: 6 ottobre 2026