JSON Schema i prompts
Begræns outputtets struktur.
JSON Schema i prompts er en gratis Promptteknik til AI-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Promptteknik til AI, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Promptteknik til AI-kurset indeholder 4 lektioner i alt.
Skemaet som kontrakt for uddata
Et JSON Schema beskriver deklarativt formen på gyldige uddata: typer, obligatoriske nøgler, værdibegrænsninger og indlejring. Når det sendes til en API til strukturerede uddata, bliver det en bindende kontrakt; når det indlejres i en prompt, bliver det en stærk retningslinje.
At mestre oprettelse af skemaer er den centrale færdighed inden for struktureret generering.
Flaget strict ændrer alt
I strict-tilstand kræver udbydere, at hver egenskab er angivet i required, og at additionalProperties er false. Valgfrie felter udtrykkes som en union med null, ikke ved at udelade dem.
{
'type': 'object',
'properties': {
'name': {'type': 'string'},
'nickname': {'type': ['string', 'null']}
},
'required': ['name', 'nickname'],
'additionalProperties': False
}Begrænsning af skalære værdier
Flyt valideringen ind i skemaet i stedet for at efterbehandle:
enumtil faste valg.minimum/maximumtil numeriske intervaller.patterntil strenge, der valideres med regulære udtryk.format-tip somdate-timeelleremail.
{
'rating': {'type': 'integer', 'minimum': 1, 'maximum': 5},
'sku': {'type': 'string', 'pattern': '^[A-Z]{3}-[0-9]{4}$'},
'created': {'type': 'string', 'format': 'date-time'}
}Lister og tupler
Brug items til homogene lister, og tilføj minItems/maxItems for at begrænse længden. Til tupler efter position skal du angive en liste af skemaer via prefixItems.
{
'tags': {
'type': 'array',
'items': {'type': 'string'},
'minItems': 1,
'maxItems': 5
}
}Diskriminerede unioner med oneOf
Modellér polymorfe resultater med oneOf og et diskriminatorfelt. Modellen vælger præcis én gren, og din deserialiseringskode skifter ud fra mærket.
{
'oneOf': [
{'type': 'object', 'properties': {
'kind': {'const': 'email'},
'address': {'type': 'string', 'format': 'email'}},
'required': ['kind', 'address']},
{'type': 'object', 'properties': {
'kind': {'const': 'phone'},
'number': {'type': 'string'}},
'required': ['kind', 'number']}
]
}Generér skemaer fra typer
Det er fejlbehæftet at skrive skemaer i hånden. Udled dem fra typede modeller, så skemaet og din kode aldrig kommer ud af takt.
from pydantic import BaseModel
class Invoice(BaseModel):
total: float
currency: str
paid: bool
schema = Invoice.model_json_schema()
# pass schema directly to response_formatBeskrivelser er også instruktioner
Modellen læser hver description i skemaet. Brug dem til at styre semantikken, ikke kun til at dokumentere felter.
En beskrivelse som 'ISO-3166-landekode med to bogstaver, med store bogstaver' forbedrer eksempelvis feltets nøjagtighed mærkbart. Betragt beskrivelser som mikroinstruktioner, der er indlejret i kontrakten.
{
'country': {
'type': 'string',
'description': 'ISO-3166 alpha-2 code, uppercase, e.g. US, TR, DE'
}
}Indlejring af skemaet i prompten
Når udbyderen ikke har indbygget understøttelse, skal du indlejre skemaet i prompten og kræve overensstemmelse. Kombinér det med ét eksempel i konteksten og en eksplicit instruktion om kun JSON og ingen prosa.
SYSTEM = (
'You output ONLY JSON matching this schema. No markdown, no commentary.\n'
'Schema:\n' + json.dumps(schema) + '\n'
'If a value is unknown, use null.'
)Undgå oppustede skemaer
For dybe eller forgrenede skemaer forvirrer modellen og øger tokenomkostningen. Retningslinjer:
- Hold indlejringen lav, og gør strukturen flad, hvor det er muligt.
- Foretræk enum-værdier frem for frie strenge.
- Opdel et enormt skema i flere fokuserede kald.
- Nogle udbydere begrænser indlejringsdybden og det samlede antal egenskaber; kontrollér grænserne.
Referencer og genbrug
Brug $defs og $ref til at genbruge underskemaer (f.eks. en Address, der bruges til fakturering og forsendelse). Bemærk, at nogle strikte tilstande begrænser rekursionsdybden, så kontrollér understøttelsen, før du er afhængig af selvrefererende referencer.
{
'$defs': {
'Address': {'type': 'object', 'properties': {
'city': {'type': 'string'}}, 'required': ['city'],
'additionalProperties': False}
},
'type': 'object',
'properties': {
'billing': {'$ref': '#/$defs/Address'},
'shipping': {'$ref': '#/$defs/Address'}
},
'required': ['billing', 'shipping'],
'additionalProperties': False
}Validér selve skemaet
En snigende fejlkategori er, at skemaet er fejlformet, ikke uddataene. Lint og validér skemaer i CI mod JSON Schema-metamodellen, og kør et eksempelobjekt gennem validatoren frem og tilbage, før du sender det i produktion.
import jsonschema
jsonschema.Draft202012Validator.check_schema(schema)
# also: validate a known-good sample
jsonschema.validate(sample_obj, schema)Hurtigt tjek
Hvordan udtrykker du korrekt et valgfrit felt i en udbyders tilstand med strengt JSON Schema?
Opsummering
Du kan nu skrive præcise skemaer:
- Strikt tilstand kræver, at alle felter er obligatoriske, og additionalProperties er false.
- Begræns skalarer med enum, interval, pattern og format.
- Modellér polymorfi med oneOf-diskriminatorer.
- Generér skemaer fra typede modeller, og behandl beskrivelser som mikroinstruktioner.
- Validér selve skemaet i CI.
Næste trin: anvend skemaer på værktøjs- og funktionskald.
Lær Promptteknik til AI med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 53
- Lektioner
- 199
Ofte stillede spørgsmål
Er lektionen “JSON Schema i prompts” gratis?
Ja — alle 3 lektioner i læringssporet Promptteknik til AI, inklusive “JSON Schema i prompts”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Promptteknik til AI-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “JSON Schema i prompts”?
Begræns outputtets struktur. Du øver dig i Promptteknik til AI med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Promptteknik til AI?
Der kræves ingen tidligere erfaring. Promptteknik til AI på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “JSON Schema i prompts”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Promptteknik til AI-lektion?
Ja. Alle Promptteknik til AI-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Hvorfor struktureret output
- JSON Schema i prompts
- Tool- og function-schemas
- Reparations- og valideringsloops