JSON-modus og utdata fra verktøykall
Bruk response_format={'type':'json_object'} eller ett enkelt verktøykall for å tvinge frem utdata som kan tolkes av maskiner.
JSON-modus og utdata fra verktøykall er en gratis leksjon i AI-agenter på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter inneholder totalt 4 leksjoner.
Behovet for struktur
Friformtekst fra LLM-er er dårlig egnet for kode. Agenter i produksjon trenger tolkbar utdata: JSON, XML, funksjonsargumenter – aldri «svaret er …»
JSON-modus (OpenAI)
Be modellen «returner alltid JSON»:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Return a JSON object with name and age.'},
{'role': 'user', 'content': 'Alice, 30 years old.'}
],
response_format={'type': 'json_object'}
)
import json
data = json.loads(response.choices[0].message.content)Forbehold ved JSON-modus
JSON-modus garanterer bare gyldig JSON – ikke riktig STRUKTUR. Modellen kan returnere {} eller {"foo": "bar"}. Valider alltid strukturen også.
Strukturerte utdata (strengt)
OpenAI Structured Outputs garanterer at svaret samsvarer med et JSON Schema:
schema = {
'name': '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=...,
response_format={'type': 'json_schema', 'json_schema': schema}
)Slik fungerer strict mode
Strict mode begrenser dekoderen slik at modellen bokstavelig talt ikke kan produsere et ugyldig token. Utdataene samsvarer 100 % med schemaet.
Verktøykall som strukturerte utdata
Et spesifikt verktøykall kan tvinges frem som en måte å hente ut strukturerte data på:
tools = [{'type': 'function', 'function': {
'name': 'submit_person',
'parameters': {
'type': 'object',
'properties': {'name': {'type': 'string'}, 'age': {'type': 'integer'}},
'required': ['name', 'age']
}
}}]
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=...,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'submit_person'}}
)
args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)Anthropic-verktøybruk som utdata
Anthropic har det samme mønsteret med tool_choice="tool":
tool_choice = {'type': 'tool', 'name': 'submit_person'}
print(tool_choice)
JSON via forhåndsutfylling (Anthropic)
For Claude uten verktøy kan assistentmeldingen forhåndsutfylles med {
messages = [
{'role': 'user', 'content': 'Give me JSON for Alice, 30.'},
{'role': 'assistant', 'content': '{'}
]
# Output starts with { and likely produces valid JSON.
for m in messages:
print(f"{m['role']}: {m['content']}")
print("Output starts with { and likely produces valid JSON.")
Pydantic + strict mode
OpenAI Python SDK har en snarvei for Pydantic:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
response = client.beta.chat.completions.parse(
model='gpt-4o-2024-08-06',
messages=...,
response_format=Person
)
person = response.choices[0].message.parsed
# Pydantic instance, type-safeVanlige fallgruver
- JSON mode uten strict — modellen kan returnere feil struktur
- Glemmer
additionalProperties: falsei strict - Påkrevde felt er ikke oppført i "required"-arrayet
- Strict mode støttes bare av gpt-4o-2024-08-06 og nyere
Kostnaden ved strukturerte utdata
Strict mode medfører en liten ekstrakostnad fra grammatikkbegrenset dekoding — ubetydelig sammenlignet med kvalitetsgevinsten. Bruk det alltid når strukturen er viktig.
Kombiner med validering
Selv strenge utdata bør valideres med Pydantic i etterkant. Forsvar i dybden — fanger opp kanttilfeller som heltall utenfor tillatt område.
Garantien i strict mode
Hva garanterer OpenAI Structured Outputs (strict mode)?
Oppsummering
JSON mode for en fleksibel struktur, Strict Outputs for garanterte strukturer, verktøykall for samme effekt, og forhåndsutfylling i Anthropic for Claude. Valider alltid etterpå.
Lær deg AI-agenter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 60
- Leksjoner
- 239
Ofte stilte spørsmål
Er leksjonen «JSON-modus og utdata fra verktøykall» gratis?
Ja – hele teksten i «JSON-modus og utdata fra verktøykall» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter inneholder totalt 4 leksjoner.
Hva lærer jeg i «JSON-modus og utdata fra verktøykall»?
Bruk response_format={'type':'json_object'} eller ett enkelt verktøykall for å tvinge frem utdata som kan tolkes av maskiner. Du øver på AI-agenter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-agenter?
Ingen tidligere erfaring er nødvendig. AI-agenter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «JSON-modus og utdata fra verktøykall»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-agenter-leksjonen?
Ja. Alle AI-agenter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- JSON-modus og utdata fra verktøykall
- Validering av Pydantic-skjema
- Reparasjonsløkker for ugyldige utdata
- Instructor / Outlines for garantert struktur