Agente di viaggio XHARD: vincoli combinati e trappole (italiano)
8 domande · scoring agentic · contaminazione low
Com'è andata
Primo giro, 8 modelli cloud, 2 ripetizioni. Restano 4 modelli a 100% (DeepSeek V4 Flash, gpt-5.4, GLM 5.2, Sonnet 4.6), ma la coda scende più in basso e si fa instabile: qwen3-235b e Haiku 4.5 all'87.5%, gpt-5.4-mini all'81% (range 75–87.5) e gpt-5.4-nano al 56% (50–62.5). Come nell'hard, le due ripetizioni fanno emergere l'oscillazione dei modelli piccoli.
Sorprese dai singoli task:
- La trappola non ha ingannato nessuno (X4 = 100%). Tutti hanno usato i prezzi reali di
cerca_volie non la stima fuorviante: il tool-trappola, da solo, non basta a fregarli. - L'infeasibile è chiaro (X6 = 100%). Nessuno prenota il 5 stelle sotto 40€ che non esiste: sanno riconoscere quando non agire.
- I veri scogli sono il calcolo a più passi. Il più duro è X3 (tasse + valuta) al 75% — maggiorare del 12%, convertire in USD e poi decidere è dove si perdono — insieme a X5 (multi-passeggero), sempre 75%, dove servono tre prenotazioni coordinate sullo stesso volo. Poi X2 (round-trip + budget) e X7 (calcolo della data) all'88%.
- nano cade proprio lì: sbaglia budget (X2), tasse/valuta (X3) e multi-passeggero (X5), e oscilla tra un run e l'altro.
Nota interessante: qui gpt-5.4 «grande» fa 100% mentre nell'hard era al 91.7% — la difficoltà non è monotòna tra eval, dipende da quali trappole tocchi. Costi ancora contenuti: da ~$0.005 (qwen, DeepSeek) a ~$0.26 (Sonnet) per run.
Cosa misura
Il gradino più duro della famiglia agentic (dopo base e hard). Stesso motore — loop multi-turn, voto binario sullo stato finale, ground truth eseguibile ricalcolata dalle query, nessun giudice LLM — ma i task combinano più vincoli insieme e l'ambiente ha 8 strumenti, di cui tre ingannevoli.
Ambiente viaggi-xhard: ai voli/hotel si aggiungono converti_valuta, due distrattori (meteo, cerca_treno) e soprattutto stima_prezzo_volo, una trappola: dà prezzi approssimativi che a volte invertono l'ordine rispetto a quelli reali. I voli hanno anche posti_disponibili (0 = esaurito): prenotare un volo pieno fallisce, e va gestito.
Gli 8 task
- multi-filtro (X1) — il più economico che sia diretto e arrivi entro le 18:00 e abbia posti: tre condizioni insieme, poi il minimo.
- round-trip + budget (X2) — andata, ritorno e hotel 4 notti sotto un budget totale: 3 prenotazioni, ottimo di combinazione.
- valuta + tasse (X3) — prezzo +12% di tasse, convertito in USD, sotto soglia: calcolo a più passi (la maggiorazione la fa il modello, la conversione lo strumento) e poi la decisione.
- trappola (X4) — il più economico reale: chi si fida di
stima_prezzo_voloprenota il volo sbagliato. - multi-passeggero (X5) — tre persone sullo stesso volo diretto più economico con ≥3 posti: 3 prenotazioni coordinate.
- infeasibile (X6) — un 5 stelle sotto i 40€/notte non esiste: la risposta giusta è non prenotare.
- data (X7) — «il primo venerdì di agosto 2026»: il modello deve calcolare la data prima di cercare.
- posti (X8) — il volo più economico è esaurito: va preso il più economico tra quelli prenotabili (leggere
posti_disponibili, non solo il prezzo).
Note di metodo
- Voto binario, stato finale, ricalcolato: l'atteso è ricomputato dalle query deterministiche (nessun
ida mano). Con vincoli combinati un solo dettaglio sbagliato — un filtro dimenticato, il volo esaurito, il ramo errato — fa cadere il task. - Fino a 18 turni per task; 2 ripetizioni per stanare l'instabilità (media + range).
- Le trappole sono nei dati, non nel testo: la richiesta è chiara; a fregare è chi non legge i risultati (stima vs reale, posti, tasse) o non calcola (la data).
Aggiornare quando si aggiungono modelli, ripetizioni o il modello locale sul Jetson.