Qwen 3.8 kom 13. august med styring av hvor grundig modellen skal tenke, men den offisielle Jinja-templaten skal samtidig ha feil som kan stoppe både raske svar, verktøykall og lengre agentsamtaler. En uoffisiell Jinja-template for Qwen 3.8 prøver å reparere dette for Qwen 3.5, 3.6 og 3.8 med én fil.

Det høres kanskje ut som en liten konfigurasjonsdetalj. Det er det ikke. Chat-templaten bestemmer hvordan systemmeldinger, samtalehistorikk, resonnering og verktøykall pakkes før modellen får se dem. En feil her kan få en god modell til å se dum, glemsk eller direkte ødelagt ut.

Den nye templaten er derfor svært interessant for alle som kjører Qwen lokalt med llama.cpp, LM Studio, vLLM eller MLX. Men det er en viktig hake: Vedlikeholderen opplyser selv at Qwen 3.8-støtten har bestått 28 automatiserte tester og kontroller mot tokenizeren, men ikke er kjørt mot den enorme Qwen3.8-2.4T-A95B-modellen. Dette er en lovende reparasjon, ikke et ferdig kvalitetsstempel.

Hva er nytt med resonnering i Qwen 3.8?

Qwen 3.8 har fått promptstyrt reasoning_effort med nivåene xhigh, high, medium og low. Ifølge dokumentasjonen for den uoffisielle templaten er xhigh standard, high behandles som et alias for xhigh, mens medium lar være å legge inn en ekstra styreinstruksjon.

Det gir en praktisk bryter mellom raske hverdagsoppgaver og jobber der modellen bør bruke mer tid på antakelser, alternativer og kontroll. Du trenger ikke samme mengde resonnering for å formatere en JSON-fil som for å planlegge en omfattende kodeendring. Styringen kan dermed spare både tid og tokens når den faktisk virker.

Dette er hovednyheten i 3.8-templaten. Tidligere har mange lokale oppsett måttet lene seg på en grovere av/på-bryter eller egne prompt-triks. Nå kan resonneringsnivået styres eksplisitt som en template-parameter:

{
  "reasoning_effort": "xhigh"
}

Problemet er at den offisielle templaten ifølge vedlikeholderen låser brukeren inne i tenkemodus. Sender klienten enable_thinking=false, skal Qwen 3.8-templaten kaste et hardt runtime-unntak i stedet for å gi et raskt svar uten resonnering. Det er en ganske merkelig måte å levere valgfri tenking på.

Hvilke feil skal den uoffisielle templaten rette?

Den uoffisielle versjon 22 skal rette fire sentrale problemområder: avkobling av resonnering, tomme <think>-blokker i historikken, krasj ved verktøyargumenter og ustabile agentløkker. Påstandene kommer fra template-vedlikeholderen og presentasjonen i LocalLLaMA, ikke fra en uavhengig Qwen 3.8-test.

Den første feilen er konkret: enable_thinking=false skal utløse et runtime-unntak. Reparasjonen fjerner denne sperren og lar deg deaktivere resonnering enten med template-argumentet eller ved å legge <|think_off|> i system- eller brukermeldingen. Templaten leser kontrolltaggen, fjerner den fra konteksten og endrer modus før systemmeldingen bygges.

Den andre feilen rammer samtalehistorikken. Den offisielle 3.8-templaten skal kunne sette inn en tom <think></think>-blokk foran den virkelige resonneringen i samtaler over flere runder. Over tid kan slike kunstige mønstre påvirke hva modellen gjør etter tenkeblokken, ødelegge prefikslikheten og gjøre verktøyløkker mindre forutsigbare. Versjon 22 forsøker å hente ut tidligere resonnering uten å lage ekstra tomme blokker.

Den tredje feilen er særlig relevant for OpenAI-kompatible klienter. Når verktøyargumenter kommer som en JSON-streng i stedet for et Python-objekt, skal den offisielle templaten kunne stoppe med TypeError: Can only get item pairs from a mapping. Reparasjonen håndterer både objekter, JSON-strenger og enkle argumentverdier. Dette er en detalj som fort avgjør om en agent faktisk får brukt verktøyene sine.

Teknisk diagram der Jinja-templaten normaliserer JSON-argumenter og stabiliserer Qwen-verktøykall
Den reparerte templaten håndterer både strukturerte objekter og JSON-strenger før argumentene sendes videre til verktøyløkken.

Hvorfor betyr chat-templaten så mye for agenter?

En chat-template er oversetteren mellom klientens meldinger og tokenrekken modellen får. Den plasserer roller, systeminstruksjoner, verktøydefinisjoner, tidligere svar og resonnering i formatet modellen er trent til å forstå. En liten feil i denne oversettelsen kan gjentas ved hver eneste samtalerunde.

Det er derfor template-feil ofte ser ut som modellfeil. Agenten kan gjenta samme verktøykall, miste en systemmelding midt i dialogen, avslutte svaret før verktøyet kalles eller begynne å diskutere sine egne instrukser. Bytter du modell, kvantisering og innstillinger uten å kontrollere templaten, kan du ende med å måle feil lag i stakken.

Versjon 22 prøver blant annet å beholde tidligere resonnering kronologisk, støtte system- og developer-meldinger midt i samtalen og reagere forskjellig på første og andre verktøyfeil. Vedlikeholderen hevder også full gjenbruk av prefiks-KV-cache når tidligere tenkeblokker bevares. Det kan gi stor forskjell i lange samtaler, men «100 prosent cache-treff» bør leses som et resultat under template-prosjektets forutsetninger – ikke som en garanti for alle motorer, klienter og oppsett.

Dette er relevant også om du tidligere har sett på Qwen 3.6 via OpenRouter. Modellnavnet alene forteller ikke hvordan en lokal eller OpenAI-kompatibel server pakker historikk og verktøykall. Samme modellfamilie kan oppføre seg svært forskjellig når template, parser og klient ikke er enige.

Hvordan settes templaten opp i llama.cpp?

For llama.cpp og llama-server anbefaler prosjektet å laste inn filen chat_template.jinja eksplisitt og bruke DeepSeek-formatet for resonnering. Kommandoen i dokumentasjonen er:

llama-server -m your_model.gguf \
  --jinja \
  --chat-template-file chat_template.jinja \
  --reasoning-format deepseek

--reasoning-format deepseek flytter tenkeblokkene til feltet reasoning_content i det OpenAI-kompatible API-svaret. Dermed slipper kodeagenter å få rå resonnering blandet inn i den vanlige tekststrømmen, noe som ellers kan stoppe et verktøykall midt i svaret. På nyere llama.cpp-bygg kan du også bruke --reasoning-preserve for å bevare tidligere resonnering og prefikscache.

For LM Studio erstatter du innholdet i feltet «Prompt Template» med innholdet fra chat_template.jinja og lagrer. For MLX og oMLX overskrives template-filen i den lokale modellmappen før oppstart med Jinja-støtte. Ikke anta at samme filsti eller meny gjelder i alle versjoner; selve prosjektfilen er felles, men innlastingen eies av motoren.

Hva må vLLM-brukere passe på?

vLLM trenger både riktig template og riktig parser for verktøykall. Prosjektet anbefaler qwen3_xml på nåværende vLLM-versjoner, qwen3_coder på eldre bygg og hermes dersom du uttrykkelig velger tool_call_format="json".

vllm serve Qwen/Qwen3.8-2.4T-A95B \
  --tool-call-parser qwen3_xml

Den operative kjeden er viktig: Hvis verktøykall feiler selv med ny template, kontroller først at parseren forventer samme format som templaten sender. Qwen-formatet bruker XML som standard. Et rammeverk som krever Hermes-JSON trenger både JSON-overstyringen i templaten og Hermes-parseren på serversiden. Bytter du bare den ene halvdelen, har du laget en ny protokollkonflikt.

Prosjektet tilbyr dessuten grensene max_tool_arg_chars og max_tool_response_chars for store verktøyresultater. Begge står til 0, altså deaktivert, som standard. Trunkering slås automatisk av i JSON-modus fordi kutting midt i serialisert JSON kan gjøre hele objektet ugyldig.

Er Qwen 3.8-støtten faktisk testet?

Ikke fullt ut. Vedlikeholderen skriver at templaten består 28 automatiserte testceller og kontroller mot tokenizeren. Testene dekker blant annet resonneringsnivåer, kontrolltagger, serialisering av verktøykall, trunkering og tolking av samtalehistorikk over flere runder. Det er langt bedre enn å lime inn en tilfeldig Jinja-fil og håpe på det beste.

Samtidig opplyser vedlikeholderen at han ikke kan kjøre modellen med 2,4 billioner parametere lokalt. Den første Qwen 3.8-utgaven er Qwen3.8-2.4T-A95B, og selve integrasjonen var derfor ikke prøvd ende til ende mot modellen da templaten ble presentert 13. august. Testene viser at templaten produserer forventet struktur. De viser ikke alene at alle kombinasjoner av modell, kvantisering, server og agent fungerer stabilt.

Diskusjonen under lanseringen gjør usikkerheten enda tydeligere. Noen brukere sier at tidligere utgaver av templaten har løst Qwen-problemene deres, mens andre melder at den innebygde templaten fungerer fint eller at tredjepartstemplater har gjort resultatene verre. Én bruker beskriver dessuten upålitelige verktøykall med Qwen 3.6, Hermes Agent og LM Studio. Det er nettopp derfor dette må behandles som programvare, ikke som magisk promptestøv.

Bør du bytte template nå?

Ja, hvis du faktisk treffer en av feilene og kan teste kontrollert. Nei, hvis produksjonsoppsettet ditt allerede er stabilt og den eneste begrunnelsen er at en Reddit-post sier «fixed». Den fornuftige fremgangsmåten er å lagre dagens template, kjøre den samme samtalen over flere runder og de samme verktøykallene før og etter byttet, og kontrollere både svaret og serverloggen.

Test minst fire ting: enable_thinking=false, hvert nivå av reasoning_effort, verktøyargumenter som både objekt og JSON-streng, og flere verktøykall etter hverandre med samtalehistorikk. Bruker du llama.cpp, kontroller også at reasoning_content faktisk skilles fra vanlig tekst. Bruker du vLLM, verifiser parservalget i stedet for å skylde på modellen ved første feil.

Min dom er ganske enkel: Denne templaten angriper ekte og kostbare feiltyper på riktig sted i stakken, og den er absolutt verdt å prøve for et Qwen-oppsett som krangler. Men 28 template-tester er ikke det samme som 28 vellykkede agentøkter på Qwen 3.8. Behold en enkel vei tilbake, mål forskjellen i ditt eget oppsett og stol på loggene.

Ofte stilte spørsmål

Kan resonnering slås helt av i Qwen 3.8?

Den uoffisielle versjon 22 lar deg bruke enable_thinking=false eller kontrolltaggen <|think_off|>. Vedlikeholderen sier at den offisielle 3.8-templaten kaster et runtime-unntak med av-parameteren, så funksjonen bør testes i din egen motor før produksjonsbruk.

Fungerer samme Jinja-template med Qwen 3.5 og 3.6?

Prosjektet er laget som én felles template for Qwen 3.5, 3.6 og 3.8. Den støtter flere lokale motorer, men parser, template-innlasting og verktøyformat må fortsatt passe sammen. Ta vare på den opprinnelige filen slik at byttet enkelt kan reverseres.

Hvilken parser skal brukes med vLLM?

Prosjektet anbefaler qwen3_xml på nåværende vLLM-utgaver og qwen3_coder på eldre bygg. Velger du tool_call_format="json" i templaten for et Hermes-oppsett, skal serveren bruke hermes-parseren.

Er 28 automatiserte tester nok til å stole på templaten?

Nei. Testene er et godt tegn og dekker viktige template-funksjoner, men vedlikeholderen hadde ikke kjørt versjon 22 mot selve Qwen3.8-2.4T-A95B. Gjør en ende-til-ende-test med din modell, kvantisering, server, klient og verktøyløkke.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Meld deg på nyhetsbrevet

Få oppdateringer om AI nyhetene rett i inboxen!

Du liker kanskje denne også
Jan Sverre vurderer Claude pris for Free, Pro og Max i 2026

Hva koster Claude AI? Priser for Free, Pro og Max i 2026

Hva koster Claude AI i 2026? Se priser for Free, Pro, Max, Team og API i norske kroner, forstå bruksgrensene og velg planen som passer behovet ditt best.
Jan Sverre utforsker hvordan man kan lage sang med AI i Suno

Lage sang med AI: Det jeg lærte av 150 Suno-låter

Lage sang med AI på norsk: Dette lærte jeg av 150 Suno-låter om tekst, prompts, uttale, pris, gratisbruk og rettigheter før du publiserer din egen musikk.
Jan Sverre med headphones og lydmikser i boardroom-møte med forvirrede executives

Suno AI Copyright 2026 – Opphavsrett og Rettigheter for AI-Musikk

Kan du tjene penger på Suno-musikk? Her er en praktisk gjennomgang av rettigheter, risiko og hva du bør avklare før publisering.
Jan Sverre blar gjennom en tilpasset YouTube AI-videofeed på telefonen

YouTube lar deg lage din egen AI-videofeed – slik fungerer det

YouTube lar deg nå beskrive hva du vil se med vanlig tekst, og AI setter opp en personlig feed for deg. Her er hva du trenger å vite – og hva det egentlig betyr for deg som bruker.