{"id":66,"date":"2026-05-29T22:15:00","date_gmt":"2026-05-29T22:15:00","guid":{"rendered":"https:\/\/rpi.temporiti.net\/wordpress\/?p=66"},"modified":"2026-05-30T14:35:10","modified_gmt":"2026-05-30T12:35:10","slug":"groq-qwen3-32b","status":"publish","type":"post","link":"https:\/\/rpi.temporiti.net\/wordpress\/?p=66","title":{"rendered":"Qwen3 32B su Groq per ragionamento step-by-step e analisi cause"},"content":{"rendered":"<p>Qwen3 32B servito su Groq \u00e8 il modello che apro quando Llama 3.1 8B \u00e8 troppo poco e Llama 3.3 70B \u00e8 sovradimensionato. Sta nel mezzo, ha un ragionamento step-by-step migliore del 70B sui task di coding piccoli, e sulle LPU di Groq la latenza resta sotto i due secondi anche su risposte da 1500 token.<\/p>\n<p>Lo tengo come &#8220;secondo cervello&#8221; del terminale: quando devo trasformare uno schema, riscrivere una funzione, leggere un Dockerfile e suggerire un&#8217;ottimizzazione, \u00e8 il modello che d\u00e0 la qualit\u00e0 pi\u00f9 alta a parit\u00e0 di tempo di attesa. Qwen 3 \u00e8 open weights, Apache 2.0, sviluppato da Alibaba. Pesi pubblici, ridistribuibili, ispezionabili.<\/p>\n<h2>Configurazione di opencode<\/h2>\n<p>La chiave Groq \u00e8 la stessa che uso per gli altri modelli del provider, presa da <code>console.groq.com\/keys<\/code> e salvata in <code>~\/.config\/claude-credentials\/credentials.env<\/code> come <code>GROQ_API_KEY<\/code>. Nel file <code>~\/.config\/opencode\/opencode.json<\/code> aggiungo il modello sotto il provider Groq:<\/p>\n<pre><code class=\"language-json\">\n{\n  \"provider\": {\n    \"groq\": {\n      \"npm\": \"@ai-sdk\/openai-compatible\",\n      \"options\": {\n        \"apiKey\": \"{env:GROQ_API_KEY}\",\n        \"baseURL\": \"https:\/\/api.groq.com\/openai\/v1\"\n      },\n      \"models\": {\n        \"qwen\/qwen3-32b\": { \"name\": \"Qwen3 32B\" }\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<p>Lo lancio dalla shell dentro la cartella del progetto:<\/p>\n<pre><code class=\"language-bash\">\nopencode . --model groq\/qwen\/qwen3-32b\n<\/code><\/pre>\n<p>La working directory che passo \u00e8 di solito <code>~\/Documenti\/progetti\/<nome>\/<\/code>, con dentro il sorgente da rivedere.<\/p>\n<h2>Un esempio di sessione reale<\/h2>\n<p>Gioved\u00ec alle 10:50 stavo riscrivendo un piccolo script Python che parsava un export CSV di Strava in record JSON per caricarli su un database. Lo script originale funzionava ma era 180 righe di codice non idiomatico, con tre cicli annidati e una logica di deduplicazione fragile. Ho aperto opencode dentro la cartella del progetto e ho dato il prompt:<\/p>\n<blockquote>\n<p>leggi parser.py. Riscrivilo idiomatico Python 3.13, usa pathlib, dataclasses e itertools dove sensato. Mantieni esattamente la stessa interfaccia CLI e produci la lista dei diff principali in un commento in cima.<\/p>\n<\/blockquote>\n<p>Risposta in circa due secondi e mezzo. Ha consolidato i tre cicli in uno solo usando <code>groupby<\/code>, ha sostituito la deduplicazione manuale con un set su tuple ordinate, e ha aggiunto un dataclass <code>Activity<\/code> che ha reso il resto leggibile. Le 180 righe sono diventate 95, con cinque commenti utili e zero modifiche all&#8217;interfaccia CLI. La regressione l&#8217;ho verificata con un diff sui JSON di output: identici riga per riga.<\/p>\n<h2>Cosa fa bene<\/h2>\n<p>Riscritture di funzioni medie con stile idiomatico nel linguaggio target. Analisi di una catena di errori con causa probabile motivata. Trasformazioni di schema (CSV verso JSON, YAML verso TOML, eccetera) con regole esplicite. Spiegazioni passo passo di pezzi di codice altrui. Generazione di test parametrizzati a partire da una funzione esistente. Mantiene il filo su prompt da 5-10k token senza divagare.<\/p>\n<h2>Cosa fa meno bene<\/h2>\n<p>Output narrativo molto lungo: tende a essere meno scorrevole del 70B. Output puramente creativo: non \u00e8 la sua area. Su prompt molto vaghi propone soluzioni generiche, vuole specifiche e vincoli per dare il meglio.<\/p>\n<h2>Privacy e termini del provider<\/h2>\n<p>Groq, nella Services Agreement Sezione 4.2 aggiornata al 15 ottobre 2025, dichiara esplicitamente che input e output non vengono usati per training n\u00e9 fine-tuning. La retention dei log \u00e8 al massimo 30 giorni per troubleshooting e abuse monitoring. L&#8217;infrastruttura \u00e8 GCP US, quindi residency statunitense. Il toggle ZDR esiste sulla console sotto Data Controls, eligibility per il free tier non chiaramente documentata.<\/p>\n<p>Il modello Qwen 3 32B \u00e8 open weights, Apache 2.0, rilasciato da Alibaba. Posso scaricarlo e riprodurlo in locale (con hardware adeguato) o sostituirlo con la variante pi\u00f9 piccola della stessa famiglia se serve. La combinazione policy Groq pi\u00f9 modello Apache 2.0 \u00e8 una delle pi\u00f9 pulite per task tecnici di routine.<\/p>\n<h2>Cosa non gli mando<\/h2>\n<p>Niente nomi reali di clienti, niente IP interni, niente hostname del mio homelab, niente stralci con secret. Su uno script che contiene path personali o nomi di file di configurazione, sostituisco con placeholder prima di mandarlo. Per codice davvero sensibile fallback su <code>qwen2.5-coder:14b<\/code> su Ollama in locale: la latenza sale a qualche secondo sul mio hardware ma il codice non lascia la macchina.<\/p>\n<h2>In pratica<\/h2>\n<p>Nel mio mix Qwen3 32B su Groq \u00e8 il default per coding di precisione su singoli file. Per task triviali e veloci scendo a Llama 3.1 8B Instant. Per output narrativi lunghi salgo a Llama 3.3 70B Versatile. Per ragionamento su codebase intere con tanti file dentro lo stesso contesto passo a Qwen3 235B su Cerebras o a Gemini 2.5 Pro. Il 32B \u00e8 il punto dolce della curva qualit\u00e0\/latenza nel mio uso quotidiano.<\/p>\n<hr>\n<blockquote>\n<p>Immagine generata con Cloudflare Workers AI \/ FLUX.<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Qwen3 32B servito su Groq \u00e8 il modello che apro quando Llama 3.1 8B \u00e8 troppo poco e Llama 3.3 70B \u00e8 sovradimensionato. Sta nel mezzo, ha un ragionamento step-by-step migliore del 70B sui task di coding piccoli, e sulle LPU di Groq la latenza resta sotto i due secondi anche su risposte da 1500 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":67,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-66","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-locale"],"_links":{"self":[{"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=66"}],"version-history":[{"count":6,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/66\/revisions"}],"predecessor-version":[{"id":369,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/66\/revisions\/369"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/67"}],"wp:attachment":[{"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpi.temporiti.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}