siati.ai docs

API reference

Cosa tocchiamo nelle risposte

Le due sole cose che il gateway modifica in quello che il modello produce, e perché. Dichiarate, non nascoste.

Last updated: 2026-08-18

Cosa tocchiamo nelle risposte

Il gateway modifica due cose in quello che il modello produce. Nient'altro. Le scriviamo qui perché un servizio che si vende sul dire esattamente cosa fa non può riscrivere le risposte in silenzio.

1. I delimitatori interni del modello

Alcuni modelli, dopo una chiamata a strumento, lasciano nel testo i marcatori con cui separano i propri canali interni:

text
<|channel>thought
<channel|>OK. Ho creato il task per il cliente Rossi.

Quei simboli sono protocollo, non contenuto: chi mostrasse quel campo a uno schermo li vedrebbe. Li togliamo, insieme alla parola thought se resta sola a inizio riga.

L'elenco dei delimitatori è chiuso: <|channel>, <channel|>, <|start|>, <|end|>, <|message|>, <|im_start|>, <|im_end|> e i marcatori di ruolo. Una regola generica su <|…|> rischierebbe di mangiare testo legittimo — per esempio una risposta che parla di sintassi — e non la usiamo.

2. La parola «null» al posto del valore nullo

Negli argomenti di una chiamata a strumento, su un campo che ammette null, il modello a volte scrive la stringa di quattro lettere. Un client che controlla !== null la salva, e in banca dati finisce un record la cui descrizione dice letteralmente «null».

Trasformiamo in null solo questi valori, e solo se il campo li contiene per intero, dopo aver tolto gli spazi:

text
null    none    nil    nessuno    n/a    undefined    (stringa vuota)

Il confronto è senza distinzione fra maiuscole e minuscole. Una frase che contiene la parola non viene toccata: "il campo era null e va corretto" resta com'è.

Vale sugli argomenti delle chiamate a strumento, dove il campo ha un tipo dichiarato. Non tocchiamo il testo libero della risposta.

3. Il silenzio in ingresso

Non è una modifica della risposta, ma è della stessa famiglia e va detto.

Su audio senza suono, /v1/audio/transcriptions restituisce testo vuoto senza interrogare il modello. Il motivo: su silenzio digitale whisper risponde «Grazie.» o «Thank you.» con no_speech_prob a 0,0000, cioè con piena fiducia. Su un percorso di dettatura un tocco accidentale sul microfono diventerebbe un comando.

Il controllo misura l'energia dell'onda, non il giudizio del modello, e scatta sotto circa -50 dBFS — sotto ci stanno il silenzio digitale e un microfono chiuso, sopra ci sta qualunque parlato, anche sussurrato a un microfono lontano. Si applica solo ai file WAV a 16 bit: i formati compressi passano sempre, perché senza decodificarli non possiamo misurare e nel dubbio si trascrive. Un audio buono scartato è molto peggio di una allucinazione.

Quello che non tocchiamo

Il testo della risposta, i numeri, la lingua, la punteggiatura, l'ordine delle chiavi JSON. Se il modello sbaglia un totale, quel totale arriva a voi come l'ha scritto: sommate le righe e confrontate, come dovreste fare con qualunque fornitore.