Tryb JSON i wyniki wywołań narzędzi
Użyj response_format={'type':'json_object'} lub pojedynczego wywołania narzędzia, aby wymusić dane wyjściowe możliwe do sparsowania maszynowego.
Tryb JSON i wyniki wywołań narzędzi to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Potrzeba struktury
Tekst w swobodnej formie generowany przez LLM utrudnia pracę kodu. Agenty produkcyjne potrzebują danych wyjściowych, które można parsować: JSON, XML, argumenty funkcji — nigdy „odpowiedź brzmi…”
Tryb JSON (OpenAI)
Należy powiedzieć modelowi „zawsze zwracaj 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)Ograniczenie trybu JSON
Tryb JSON gwarantuje tylko poprawny JSON, a nie jego KSZTAŁT. Model może zwrócić {} lub {"foo": "bar"}. Należy zawsze sprawdzać również kształt danych.
Structured Outputs (tryb ścisły)
OpenAI Structured Outputs gwarantuje, że odpowiedź będzie zgodna ze schematem 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}
)Jak działa tryb ścisły
Tryb ścisły ogranicza dekoder, dzięki czemu model dosłownie nie może wygenerować nieprawidłowego tokenu. Wynik jest w 100% zgodny ze schematem.
Wywołania narzędzi jako dane strukturalne
Można wymusić określone wywołanie narzędzia, aby wyodrębnić dane strukturalne:
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)Użycie narzędzi Anthropic jako wyniku
Anthropic stosuje ten sam wzorzec z użyciem tool_choice="tool":
tool_choice = {'type': 'tool', 'name': 'submit_person'}
print(tool_choice)
JSON przez wstępne uzupełnienie (Anthropic)
W przypadku Claude bez narzędzi należy wstępnie uzupełnić turę asystenta znakiem {
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 + tryb ścisły
OpenAI Python SDK udostępnia skrót dla 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-safeTypowe pułapki
- Tryb JSON bez trybu ścisłego — model może zwrócić dane o nieprawidłowej strukturze
- Pomijanie
additionalProperties: falsew trybie ścisłym - Pola wymagane, których nie wymieniono w tablicy "required"
- Tryb ścisły jest dostępny tylko w gpt-4o-2024-08-06 i nowszych modelach
Koszt danych strukturalnych
Tryb ścisły wiąże się z niewielkim narzutem wynikającym z dekodowania ograniczonego gramatyką — jest on pomijalny w porównaniu z korzyścią w postaci jakości. Należy go zawsze włączać, gdy struktura ma znaczenie.
Połączenie z walidacją
Nawet wyniki z trybu ścisłego należy później zwalidować za pomocą Pydantic. To wielowarstwowa ochrona, która wykrywa przypadki brzegowe, takie jak liczby całkowite spoza dozwolonego zakresu.
Gwarancja trybu ścisłego
Co gwarantuje OpenAI Structured Outputs (tryb ścisły)?
Podsumowanie
Tryb JSON służy do uzyskiwania elastycznej struktury, Strict Outputs gwarantuje prawidłową strukturę, a wywołania narzędzi zapewniają ten sam efekt. W przypadku Claude można użyć wstępnego uzupełnienia. Zawsze należy przeprowadzać walidację wyniku.
Często zadawane pytania
Czy lekcja „Tryb JSON i wyniki wywołań narzędzi” jest bezpłatna?
Tak — pełny tekst „Tryb JSON i wyniki wywołań narzędzi” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Tryb JSON i wyniki wywołań narzędzi”?
Użyj response_format={'type':'json_object'} lub pojedynczego wywołania narzędzia, aby wymusić dane wyjściowe możliwe do sparsowania maszynowego. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Tryb JSON i wyniki wywołań narzędzi”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tryb JSON i wyniki wywołań narzędzi
- Walidacja schematów Pydantic
- Pętle naprawcze dla nieprawidłowych danych wyjściowych
- Instructor / Outlines dla gwarantowanej struktury