Problemi di Output Strutturato di Ollama GPT-OSS
Non molto bello.
Ollama’s GPT-OSS models presentano frequenti problemi nel gestire l’output strutturato, specialmente quando vengono utilizzate con framework come LangChain, OpenAI SDK, vllm e altri.
Molti utenti segnalano fallimenti nel generare JSON valido o altri formati strutturati, l’illuminazione (hallucinazione) del modello riguardo agli elementi del formato e contenuti di risposta inconsistenti o vuoti. Questi problemi derivano da attuali lacune di compatibilità, cambiamenti nei formati di risposta (come Harmony) e dall’assenza parziale di applicazione degli schemi di output da parte di Ollama e di API di terze parti. Per un contesto più ampio sui runtimes, throughput e benchmark, vedere LLM Performance: Benchmarks, Bottlenecks & Optimization.

Su GPT-OSS
Questo è un nuovo e molto interessante LLM proveniente da OpenAI. Basta dare un’occhiata a questi parametri:
| Modello | gpt-oss-120b | gpt-oss-20b |
|---|---|---|
| Strati | 36 | 24 |
| Parametri totali | 117B | 21B |
| Parametri attivi per token | 5,1B | 3,6B |
| Esperti totali | 128 | 32 |
| Esperti attivi per token | 4 | 4 |
| Lunghezza del contesto | 128k | 128k |
Le note di rilascio dicono (qui e qui):
- Licenza permissiva Apache 2.0: Costruisci liberamente senza restrizioni di copyleft o rischi di brevetti — ideale per sperimentazioni, personalizzazioni e deployment commerciali.
- Configurabile sforzo di ragionamento: Regola facilmente lo sforzo di ragionamento (basso, medio, alto) in base al tuo caso specifico e alle tue esigenze di latenza.
- Catena completa di pensiero: Otteni completo accesso al processo di ragionamento del modello, facilitando il debug e aumentando la fiducia nei risultati. Non è destinato a essere mostrato agli utenti finali.
- Fine-tunabile: Personalizza completamente i modelli per il tuo caso specifico tramite fine-tuning dei parametri.
- Capacità agentiche: Utilizza le capacità native dei modelli per chiamate a funzioni, navigazione web, esecuzione di codice Python e Output Strutturati.
- Quantizzazione MXFP4: I modelli sono stati post-addestrati con la quantizzazione MXFP4 dei pesi MoE, permettendo al modello gpt-oss-120b di funzionare su un singolo GPU da 80 GB (come NVIDIA H100 o AMD MI300X) e al modello gpt-oss-20b di funzionare all’interno di 16 GB di memoria. Tutte le valutazioni sono state eseguite con la stessa quantizzazione MXFP4.
Cosa non amare? Il comportamento dell’output strutturato… che è proprio questo. Nel complesso, questo problema è molto deludente, soprattutto perché L’output strutturato funziona così bene con Ollama e Qwen3.
Problemi comuni
- Modelli come gpt-oss:20b spesso falliscono nel produrre un JSON rigoroso o un output conforme allo schema, con risposte che spesso contengono commenti extra o oggetti incompleti.
- L’integrazione con LangChain e OpenAI SDK tende a generare errori di parsing/validation a causa dell’output non strutturato, rendendo i pipeline inutilizzabili in ambienti di produzione.
- Il formato Harmony in gpt-oss introduce tracce di ragionamento anche quando non richieste, complicando il parsing degli schemi rispetto ad altri modelli come Qwen3.
- Con vllm, i meccanismi di applicazione dell’output strutturato sono assenti o deprecati, quindi l’output è spesso “non guidato” e deve essere analizzato manualmente.
- Ci sono segnalazioni che il modello produca l’output strutturato corretto, quindi continui con contenuti non correlati, rompendo i parser standard.
Soluzioni alternative e correzioni
- Alcuni utenti suggeriscono di specificare esplicitamente lo schema JSON nel prompt e di tentare un parsing manuale degli output del modello, talvolta utilizzando marcatori di inizio e fine.
- Un altro approccio è eseguire uno strato di post-elaborazione o un LLM più piccolo per riformattare l’output GPT-OSS allo schema desiderato, anche se questo è molto oneroso in termini di risorse.
- Alcune correzioni e richieste di modifica (PRs) hanno migliorato progressivamente la conformità al formato Harmony, specialmente con le nuove release di Ollama, ma non è ancora stato raggiunto un pieno allineamento con i modelli precedenti.
- Quando si utilizza vllm, l’applicazione di patch a funzioni specifiche potrebbe aiutare, ma in generale, non è supportata una rigorosa applicazione degli schemi in questo momento.
Consigli
- Evitare di affidarsi esclusivamente a GPT-OSS per l’output strutturato rigoroso fino a quando non sarà ripristinata la piena compatibilità in Ollama e nei framework downstream.
- Dove l’output strutturato è critico, utilizzare un ulteriore parsing o un modello noto per la conformità agli schemi.
- Monitorare le issue rilevanti su GitHub (ollama/ollama, langchain-ai/langchain, vllm-project/vllm) per aggiornamenti e correzioni.
In sintesi, GPT-OSS con Ollama attualmente fatica nell’output strutturato, in gran parte a causa dell’applicazione incompleta del formato, dei cambiamenti nel formato Harmony e del supporto mancante attraverso le toolchain. I workaround manuali potrebbero aiutare, ma il successo costante non è garantito. Per ulteriori informazioni sui runtimes degli LLM, sull’allocazione della memoria e sull’ottimizzazione delle prestazioni, controllare LLM Performance: Benchmarks, Bottlenecks & Optimization.
Link utili
- https://www.reddit.com/r/MachineLearning/comments/1n37qnu/d_ollamagptoss20b_cant_seem_to_generate/
- https://github.com/vllm-project/vllm/issues/23120
- https://github.com/ollama/ollama/issues/11691
- https://huggingface.co/openai/gpt-oss-20b/discussions/111
- https://github.com/langchain-ai/langchain/issues/33116
- https://ollama.com/library/gpt-oss
- https://openai.com/index/introducing-gpt-oss/