AI-agenter · leksjon

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.

Leksjon 1 av 414 trinn

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-safe

Vanlige fallgruver

  • JSON mode uten strict — modellen kan returnere feil struktur
  • Glemmer additionalProperties: false i 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å.

Gratis å komme i gang

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

  1. JSON-modus og utdata fra verktøykall
  2. Validering av Pydantic-skjema
  3. Reparasjonsløkker for ugyldige utdata
  4. Instructor / Outlines for garantert struktur
← Tilbake til AI-agenter