model: oggi non è validatoPer chi: tutti i prodotti che hanno una chiave AgileV, e in particolare chi il nome del modello
lo prende da una variabile d'ambiente o da un file di configurazione.
Da dove nasce: la prova dal posto di trpg del 28/9. Prima ci avevano scritto «il riordino vuole
agilev-rerank, non agilev-m3» — dedotto da /v1/models, non misurato, e falso.
Poi l'hanno misurato e hanno trovato di più: passa anche un nome inventato. E ci hanno chiesto una cosa
sola: l'avviso prima del 400 MODEL_UNKNOWN. Questa pagina è quell'avviso, con la misura sotto.
Misurato il 28/9 su 4 rotte x 9 nomi, sul codice 1.1 in produzione e sulla 1.2 già pronta,
con esito identico sulle due: zero 400. Il deploy della 1.2 non cambia
una riga di questa tabella.
| Nome inviato | /v1/embeddings, /v1/tokenize | /v1/rerank | /embed |
|---|---|---|---|
agilev-m3 | riconosciuto | servito, contato come sconosciuto | ignorato |
agilev-rerank | servito, contato come sconosciuto | riconosciuto | ignorato |
bge-m3 | riconosciuto (alias) | servito, contato come sconosciuto | ignorato |
agilev-m3-fast | riconosciuto, ma oggi 503 MODEL_UNAVAILABLE su /v1/embeddings | servito, contato come sconosciuto | ignorato |
qualunque altro (voyage-3, modello-che-non-esiste…) | servito, contato come sconosciuto | servito, contato come sconosciuto | ignorato |
"", null, campo assente | riconosciuto: vale il default | riconosciuto: vale il default | ignorato |
Una richiesta con un nome sconosciuto viene servita e contata in fattura come tutte le altre: la validazione è di forma, non di sostanza.
Il nome vuoto non lascia traccia. "", null e il campo assente valgono come
«default» e non vengono contati da nessuna parte. Se la vostra variabile d'ambiente è vuota, oggi non se
ne accorge nessuno: né voi (ricevete 200) né noi (il contatore resta fermo).
/embed non guarda il campo affatto. Il formato storico ha solo texts: un
model nel corpo viene scartato senza nemmeno essere contato. Chi è rimasto su /embed è
invisibile a questa validazione, oggi e domani.
Il controllo che regge, ed è gratis: ogni risposta dichiara il modello usato, non
quello chiesto — /v1/rerank risponde sempre "model":"agilev-rerank", /v1/embeddings
"model":"agilev-m3", /embed "model":"bge-m3". Confrontate quello, non
quello che avete spedito: è l'unico controllo che continua a funzionare anche dopo che la validazione esisterà.
È la correzione che trpg ha già messo nel proprio banco.
Un nome si confronta solo con quello della STESSA rotta. I tre valori qui sopra non sono
intercambiabili: /v1/embeddings e /embed danno gli stessi vettori (misurato: identici bit
per bit) con due nomi diversi, perché il primo usa il nome di listino e il secondo quello del modello
sottostante. Lo stesso vale per GET /health, che dichiara "model":"bge-m3": non è confrontabile
con agilev-m3 di /v1/models, e chi li confronta ha un falso allarme a ogni avvio (segnalato da
trpg il 28/9 sera). Se cercate un controllo di salute all'avvio, quello è sulla dimensione:
Regola 4, contromisura (a).
400 MODEL_UNKNOWN, e come lo saprete primaNon presto. Letto dai contatori di produzione il 29/9 alle 03:2x: 4 delle 7 richieste di rerank riuscite dal riavvio del 27/9 06:37:49Z portavano un nome non riconosciuto (il 28/9 erano 3 su 6). Prima di cambiare succederanno, in quest'ordine, tutte e quattro queste cose:
GET /v1/usage, campo model_unknown,
che non costa né quota né richieste al minuto: vuota è la risposta normale;Nel frattempo i modi di controllarvi da soli sono due, entrambi gratis. Il primo è model_unknown
in GET /v1/usage: se non è vuoto, la vostra configurazione manda un nome che non conosciamo, e sapete su
quale rotta. Il secondo è il model della risposta, che è l'unico dei due a cogliere anche
la variabile d'ambiente vuota (una stringa vuota vale come default e non viene contata da nessuna parte).
Se non è quello che vi aspettate, la vostra configurazione è già sbagliata oggi.
Tutto quanto sopra. Le misure sono state fatte su entrambe le versioni proprio per poterlo dire: se dopo il passaggio
alla 1.2 vedete un 400 su un nome di modello, è un guasto nostro e vogliamo saperlo subito.
La tabella completa e il resto del contratto sono in api.html
(la copia pubblica è allineata dalla regia: fino ad allora questa pagina è la più aggiornata).