# Classifying support tickets with a small model

Ticket classification is routing: fixed labels, a confidence threshold and a human queue. A small model is enough, and batch halves the price.

> Page: https://ui.eneawork.it/blog/ai-classificazione-ticket
> Markdown: https://ui.eneawork.it/blog/ai-classificazione-ticket.md

*2026-11-01*

Classificare i ticket è una decisione di instradamento: etichette fisse, soglia di confidenza e una coda umana per quello che resta ambiguo.

Il pacchetto openai su npm, letto il 1 novembre 2026, è alla versione 7.47.0: 4.062 file, 23.533.309 byte scompattati e Node 22 come minimo dichiarato. La pagina prezzi di OpenAI, letta lo stesso giorno, quota gpt-5-nano a 0,05 $ in ingresso e 0,40 $ in uscita, con la modalità batch a metà prezzo, 0,025 $ e 0,20 $. Per stimare l'input, uno script Node eseguito il 1 novembre 2026 ha letto 578 file JSON in data/blog: 7.493.703 byte, 12.965 byte di media per file.

## Le etichette prima del modello

import { generateText } from 'ai'; const labels = ['billing', 'bug', 'shipping', 'account', 'other'] as const; const result = await generateText({ model: 'openai/gpt-5-nano', system: 'Return one label from this list and nothing else: ' + labels.join(', ') + '. If none fits, return other.', prompt: ticket.subject + '\n\n' + ticket.body, maxOutputTokens: 8, }); const label = result.text.trim().toLowerCase(); console.log(labels.some((l) => l === label) ? label : 'other'); console.log(result.usage);

Otto token di uscita bastano per una parola. Se il modello scrive una frase, il validator la scarta e il ticket finisce in coda umana: è il comportamento corretto, non un errore da nascondere.

## La soglia, non l'etichetta

Una classificazione senza confidenza non si può instradare. Chiedi anche un punteggio da 0 a 1 e manda in coda umana tutto ciò che sta sotto 0,8: costa meno di un errore di fatturazione.

## Il batch paga metà

Un ticket non è urgente come una chat: la modalità batch dimezza il prezzo e accetta la latenza. Con gpt-5-nano l'ingresso scende a 0,025 $ per milione, quindi il risparmio arriva dal volume, non dal cambio di modello.

## La limitazione

La qualità dipende dagli esempi, e questo sito non ha un set di ticket etichettati: nessun numero di accuratezza qui è misurato. Un modello addestrato su etichette sbagliate impara l'errore con la stessa efficienza con cui impara il resto.

## Dove continuare

Come si valuta un classificatore è in valutare un agente, le istruzioni che reggono in prompt engineering per agenti, il costo per attività in costi per task. I record: 111.985 componenti, 1.556 blocchi, sidebar di 21st.dev.

## FAQ

### Quante etichette servono per classificare i ticket?

Da cinque a dodici nella maggior parte dei casi. Oltre, le etichette si sovrappongono e chi le assegna a mano non è più d'accordo con sé stesso.

### Serve un modello grande per etichettare un ticket?

No. Il compito è corto e il vocabolario chiuso, quindi un modello piccolo con otto token di uscita basta. La qualità arriva dagli esempi per etichetta, non dalla dimensione del modello.

### Come gestisco i ticket ambigui?

Con una soglia di confidenza e una coda umana. Tutto ciò che sta sotto 0,8 non viene instradato in automatico: il modello propone, la persona decide, e la decisione diventa un esempio.

### Quanto costa classificare diecimila ticket?

Dipende dai token di ogni ticket. Con gpt-5-nano a 0,05 $ per milione di token in ingresso e 0,40 $ in uscita, diecimila ticket da 300 token costano 0,15 $ in ingresso più l'uscita, e la metà in batch.

### Devo usare la modalità batch o le chiamate singole?

Batch quando il ticket può aspettare qualche ora, perché dimezza il prezzo. Chiamate singole quando il ticket arriva in chat e la risposta serve subito.
