Utdataformatering (JSON, XML, Markdown)
Tvinga modellen att returnera strukturer som går att tolka genom att använda JSON-läge, XML-taggar eller strikt Markdown, så att utdata blir maskinläsbar.
Utdataformatering (JSON, XML, Markdown) är en gratis lektion i AI-agenter på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-agenter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-agenter innehåller totalt 4 lektioner.
Varför formatet spelar roll
Agenter skickar modellens utdata vidare till kod. Fritt formulerad text förstör parsrar. Strukturerad utdata (JSON, XML med mera) är obligatorisk för alla produktionsagenter.
JSON-läge
OpenAI och de flesta leverantörer erbjuder ett JSON-läge som garanterar parsbar utdata:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
response_format={'type': 'json_object'},
)
import json
data = json.loads(response.choices[0].message.content)Structured Outputs (strikt schema)
OpenAI Structured Outputs tar emot ett JSON Schema och garanterar att utdata matchar det:
schema = {
'name': 'extract_person',
'schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
},
'required': ['name', 'age'],
'additionalProperties': False
},
'strict': True
}
response = client.chat.completions.create(
model='gpt-4o-2024-08-06',
messages=messages,
response_format={'type': 'json_schema', 'json_schema': schema}
)XML-taggar (Anthropic-stil)
Anthropic rekommenderar XML-taggar som det mest tillförlitliga formateringssättet för Claude:
system = '''
Return your answer wrapped in XML tags:
<reasoning>Your step-by-step thinking</reasoning>
<answer>The final answer</answer>
'''
# Parse with a simple regex or BeautifulSoup
import re
ans = re.search(r'<answer>(.*?)</answer>', text, re.S).group(1)Markdown för människor
Använd Markdown när utdata går direkt till en människa (chattgränssnitt, dokumentation).
Undvik Markdown när utdata skickas vidare till kod — Markdown är svårt att parsa robust.
Välj rätt format för varje mottagare
- JSON — ska in i er kod
- XML — ska in i er kod, särskilt med Claude
- Markdown — ska visas i ett mänskligt gränssnitt
- Ren text — ska skickas till en annan LLM
Visa, berätta inte bara
Inkludera alltid ett konkret exempel på den önskade utdata i prompten:
system = '''
Return a JSON object like:
{
"action": "reply",
"content": "Hi there!",
"confidence": 0.95
}
'''
print(system.strip())
Tvinga fram den första token
Med Anthropic kan ni förifylla assistant-turen med { eller [ för att tvinga fram JSON-utdata:
messages = [
{'role': 'user', 'content': 'Return JSON with name and age.'},
{'role': 'assistant', 'content': '{'}
]
# Output will start at '{ "name": ...' guaranteed.
for m in messages:
print(f"{m['role']}: {m['content']}")
print('Output will start at \'{ "name": ...\' guaranteed.')
Hantera efterföljande skräp
Även med JSON-läge lägger modeller ibland till prefixet "Visst! Här är JSON-objektet:". Robusta parsrar:
- Leta efter den första
{eller[ - Räkna klamrar och hakparenteser för att hitta den matchande avslutningen
- Parsa endast det utsnittet
Reparationsprompter
Om parsningen misslyckas skickar ni tillbaka den trasiga utdata till modellen och ber den rätta till den:
repair_prompt = f'''
The previous output failed to parse with error: {error}.
Return ONLY a valid JSON object matching the schema. No prose.
Previous output:
{bad_output}
'''Pydantic för validering
Validera den parsade dict-strukturen med en Pydantic-modell — typkontrollera fält och generera ett fel om något saknas.
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
person = Person.model_validate_json(response_text)
print(person.name, person.age)Bästa formatet för kod
Ni skickar utdata vidare till Python. Vilket format är mest tillförlitligt?
Sammanfattning
Tre regler:
- Välj ett format som passar mottagaren
- Visa ett exempel, beskriv det inte bara
- Validera varje svar och ha en väg för reparation
Lär dig AI-agenter med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 60
- Lektioner
- 239
Vanliga frågor
Är lektionen ”Utdataformatering (JSON, XML, Markdown)” gratis?
Ja – hela texten till ”Utdataformatering (JSON, XML, Markdown)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-agenter, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-agenter innehåller totalt 4 lektioner.
Vad lär jag mig i ”Utdataformatering (JSON, XML, Markdown)”?
Tvinga modellen att returnera strukturer som går att tolka genom att använda JSON-läge, XML-taggar eller strikt Markdown, så att utdata blir maskinläsbar. Ni övar på AI-agenter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-agenter?
Du behöver inga förkunskaper. Utbildningen i AI-agenter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Utdataformatering (JSON, XML, Markdown)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-agenter-lektionen?
Ja. Varje AI-agenter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Zero-shot, few-shot och chain-of-thought
- System- kontra användar- och assistentroller
- Utdataformatering (JSON, XML, Markdown)
- Undvik prompt injection i indata