Teksten giver mening. Alligevel kan applikationen ikke overtage den, fordi mængden optræder én gang som »seks«, én gang som 6 og én gang som en sætning i kommentaren. Strukturerede output giver denne overdragelse en kontrakt. Den mere interessante del begynder, hvor korrekt JSON kan være indholdsmæssigt forkert.
Mistrals Custom Structured Outputs bruger et foruddefineret JSON-skema til dette. Felter og datatyper beskrives eksplicit. Det organiserer grænsefladen mellem model og applikation; det erstatter ikke kontrollen af, om en værdi faktisk understøttes af kildeteksten.
Ukendt er en selvstændig tilstand
Vores fiktive notat nævner mapper, men ingen mængde. Outputtet bør bevare denne manglende værdi. Hvis du i stedet indsætter en standardmængde, ser dataposten mere komplet ud og mister samtidig en vigtig oplysning.
Et lille, leverandørneutralt skema kan se sådan ud. Hvilke skemanøgleord en bestemt grænseflade understøtter, skal kontrolleres i dens aktuelle dokumentation før brug:
{
"type": "object",
"required": ["artikel", "menge", "klaerung"],
"additionalProperties": false,
"properties": {
"artikel": {"type": "string"},
"menge": {"type": ["integer", "null"], "minimum": 0},
"klaerung": {"type": "string"}
}
}
required kræver, at feltet er til stede. null tillader alligevel en eksplicit ukendt værdi. Den nedre grænse gælder for numeriske mængder. Om en mængde er tilladt i den faktiske bestillingsproces, kan kræve yderligere forretningsregler. Frem for alt besvarer skemaet, hvilken form den efterfølgende applikation kan forvente.
En forhåndsvisning uden model og uden bestilling
Du kan allerede undersøge behandlingen med faste eksempeldata. Gem følgende HTML-uddrag, som vi selv har skrevet, som en lokal eksempelfil, og åbn den i browseren. Det viser en datapost, men sender ingen API-anmodning og gemmer ingen bestilling.
<!doctype html>
<meta charset="utf-8">
<p id="ausgabe"></p>
<script>
const daten = { artikel: "Folders", menge: null, klaerung: "Quantity missing" };
function pruefe(d) {
if (!d || typeof d !== "object" || Array.isArray(d)) throw Error("Object expected");
const keys = Object.keys(d).sort().join(",");
if (keys !== "artikel,klaerung,menge") throw Error("Check fields");
if (typeof d.artikel !== "string" || typeof d.klaerung !== "string")
throw Error("Text expected");
if (d.menge !== null && (!Number.isInteger(d.menge) || d.menge < 0))
throw Error("Check quantity");
}
pruefe(daten);
const menge = daten.menge === null ? "not yet known" : String(daten.menge);
document.querySelector("#ausgabe").textContent =
daten.artikel + ": " + menge + ". " + daten.klaerung;
</script>
Funktionen er vores egen begrænsede validator til netop dette undervisningsskema, ikke et komplet JSON Schema-bibliotek. Skift efter tur mængden til 6, til -1 og til strengen »seks«. Tilføj derefter et uventet felt. Observer hver gang visningen eller fejlmeddelelsen i udviklerværktøjerne.
Sådan kan du teste en overgang, før en model er involveret. Du ved, hvordan applikationen håndterer kendte, ukendte og ugyldige værdier. Et senere modelsvar kan først nå dette uddrag, når det har bestået de samme regler.
Kontrollér format og betydning uafhængigt af hinanden
En formelt tilladt 6 kan stadig være forkert, hvis notatet siger fire. I en rigtig applikation bør du derfor tilføje en henvisning til kilden, hvor det er nødvendigt, og kontrollere vigtige værdier mod inputtet. Ved modstridende notater bør processen frembringe et afklaringspunkt i stedet for at vælge et vilkårligt tal.
Outputtet bruger textContent. Ekstern tekst indsættes dermed som tekst i stedet for at blive fortolket som HTML uden nogen kontrol. Udbydernøgler hører ikke hjemme i et browseruddrag som dette. Et modelkald ville være et separat behandlingstrin med egen adgang og egen fejlhåndtering.
Demonstration af uddraget på et website
Hvis du vil vise netop denne lille visning på et eksisterende website, er udviklertilstanden i KENJTEC WebSiteBuilder ai også ét muligt sted til din egen HTML/JavaScript-kode. Det kontrollerede uddrag overføres manuelt; kodeforhåndsvisning og dine egne kodeversioner understøtter den efterfølgende gennemgang. Det skaber ikke en indbygget forbindelse til Mistral.
Den egentlige indsigt er uafhængig af, hvor den bruges: modelformat, din egen validator, sikker visning og den indholdsmæssige beslutning har forskellige opgaver. Den, der holder dem adskilt, kan overtage et AI-output målrettet uden i det stille at gøre et plausibelt svar til en handling.
Kilder og status
Kilder pr. 25. oktober 2026. Custom Structured Outputs.

