Uso di strumenti (function calling) in italiano
18 domande · scoring tool-call · contaminazione low
Com'è andata
Questo eval misura il function calling: dato un set di strumenti e una richiesta in italiano, il modello deve produrre le chiamate giuste (nome + argomenti). La verità di riferimento è eseguibile — si confronta la chiamata con il gold, senza giudice LLM. Ripetuto 2 volte per modello.
Il tool use "semplice" è ormai quasi risolto per i modelli di frontiera: Sonnet 4.6, DeepSeek V4 Flash e Qwen3-235B arrivano al 100%, e la maggioranza sta sopra il 94%. Il divario vero emerge sulle richieste parallele e su quelle che chiedono di agire con decisione.
Come sbagliano (i modi ricorrenti)
- Sovra-specificano gli argomenti. Il caso più frequente: alla richiesta "cerca zaini da trekking impermeabili" i modelli GPT aggiungono un filtro
category="zaini"che nessuno ha chiesto. Con un grading in stile BFCL (stesso insieme di argomenti della gold) questo conta come errore. È l'unico inciampo di gpt-5.4 "pieno". - Esitano ad agire. Alla richiesta "prenota un tagliando per domani alle 15:00", i GPT piccoli (mini, nano) non chiamano
book_appointment: rispondono a parole chiedendo conferma ("che tipo di servizio esattamente? per quale cliente?") pur avendo già tutto il necessario. È un tratto tipico dei modelli piccoli sui task agentici: più cauti, meno decisi. - Scelgono il tool sbagliato / sovra-decompongono. Su "il cliente ha traslocato, nuovo indirizzo: ...", gpt-5.4-mini chiama
get_customer(legge il cliente) invece diupdate_customer_address(aggiorna), pur avendo già tutti i dati per aggiornare. - Instabilità. gpt-5.4-nano a volte, sulla richiesta parallela, dimentica la seconda chiamata (fa 1 azione su 2). Solo la ripetizione lo rende visibile.
- Una sola chiamata per turno (gemma locale). Gemma 12B (GGUF, Jetson) è affidabile sulle chiamate singole —
simple,multipleerelevancepraticamente perfetti — ma non emette mai più di una tool call per turno: azzeraparalleleparallel_multiple(0/5 in entrambe le run) chiamando solo il primo strumento. È un limite del template gemma in llama.cpp, non del modello o del function calling in sé.
La lettura
Il divario non è "GPT non sa usare gli strumenti", ma piuttosto: i GPT piccoli esitano ad agire e sovra-decompongono, mentre il modello grande è solido e cade solo sulla severità del grading. Modelli non-OpenAI (Claude, DeepSeek, Qwen, GLM) qui tendono ad agire in modo più diretto.
Note di metodo
- Affidabilità: GLM e Qwen hanno oscillato tra le due run (94.4% ↔ 100%): il function calling non è deterministico, quindi un singolo run può ingannare. La classifica riporta media e range.
- Grading severo (stile BFCL): ogni argomento in più rispetto alla gold è un errore. Scelta trasparente — la sezione "chi sbaglia" per domanda mostra esattamente dove.
- Contaminazione bassa: i task sono nativi, non un quiz pubblico memorizzabile.
- Modelli locali (Jetson): gemma 12B gira via
llama-server --jinja(function calling GGUF, nessun costo API). Media ~69.5% (range 66.7–72.2% su 2 run): tutto il divario dai modelli di frontiera è sul parallelo, che il template non supporta.
Aggiornare questo commento quando si aggiungono modelli o ripetizioni.