Definiowanie schematów narzędzi (JSON Schema)
Pisz definicje JSON Schema dla parametrów narzędzi, uwzględniając typy, opisy, wartości enum oraz pola wymagane.
Definiowanie schematów narzędzi (JSON Schema) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 2 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.
Schematy narzędzi to JSON Schema
OpenAI, Anthropic i większość pozostałych dostawców używa JSON Schema dla parametrów narzędzi.
Jeśli używali Państwo OpenAPI / Swagger, znają już Państwo 90% tego zagadnienia.
Trzy wymagane pola
Każda definicja narzędzia zawiera:
name— unikalny identyfikator (snake_case)description— opis działania narzędzia i sytuacji, w których należy go użyćparameters— JSON Schema danych wejściowych
Minimalny schemat
Obiekt z jednym wymaganym polem tekstowym:
schema = {
'name': 'search_orders',
'description': 'Find orders by customer email',
'parameters': {
'type': 'object',
'properties': {
'email': {
'type': 'string',
'description': 'Customer email address'
}
},
'required': ['email']
}
}
import json
print(json.dumps(schema, indent=2))
Typy JSON Schema
string— tekstinteger,number— liczbyboolean— prawda/fałszarray— lista (wymaga równieżitems)object— słownik (wymaga równieżproperties)
Enumy dla zamkniętych zbiorów
Należy użyć enum, gdy istnieje dokładnie N dozwolonych wartości:
unit_param = {
'unit': {
'type': 'string',
'enum': ['C', 'F'],
'description': 'Temperature unit'
}
}
# The model will only ever output C or F
print(unit_param)
print("Allowed values:", unit_param['unit']['enum'])
Parametry tablicowe
W przypadku danych wejściowych w postaci listy należy ustawić items:
tags_param = {
'tags': {
'type': 'array',
'items': {'type': 'string'},
'description': 'List of tags to filter by'
}
}
print(tags_param)
Obiekty zagnieżdżone
Obiekty można zagnieżdżać, ale dla niezawodności modelu schematy powinny być płytkie (maksymalnie 2–3 poziomy):
filter_param = {
'filter': {
'type': 'object',
'properties': {
'min_price': {'type': 'number'},
'in_stock': {'type': 'boolean'}
}
}
}
print(filter_param)
Pola description mają kluczowe znaczenie
Model wybiera narzędzia i uzupełnia argumenty na podstawie description. Opisy należy traktować jak dokumentację API:
# Bad
bad = {'description': 'gets data'}
# Good
good = {'description': 'Fetch the most recent 50 orders for the given customer email. Returns order_id, status, total. Use this when the user asks about their order history or order status.'}
print("Bad description:", bad['description'])
print("Good description:", good['description'])
Tablica required
Wymagane pola należy oznaczać jawnie. Model będzie je zawsze uzupełniać, a pola opcjonalne tylko wtedy, gdy będzie to istotne:
tool_params = {
'parameters': {
'properties': {
'city': {'type': 'string'},
'unit': {'type': 'string', 'enum': ['C', 'F']}
},
'required': ['city']
}
}
print(tool_params)
print("Required fields:", tool_params['parameters']['required'])
Pydantic -> JSON Schema
Schematy można automatycznie generować na podstawie modeli Pydantic:
from pydantic import BaseModel, Field
class SearchArgs(BaseModel):
email: str = Field(description='Customer email')
limit: int = Field(50, description='Max orders to return')
schema = SearchArgs.model_json_schema()Tryb ścisły (OpenAI Structured Outputs)
Dodanie strict: true i additionalProperties: false gwarantuje, że dane wyjściowe modelu będą dokładnie zgodne ze schematem:
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'strict': True,
'parameters': {
'type': 'object',
'properties': {'city': {'type': 'string'}},
'required': ['city'],
'additionalProperties': False
}
}
}]
import json
print(json.dumps(tools, indent=2))
Znaczenie opisu
Dlaczego description narzędzia ma tak duże znaczenie?
Podsumowanie
Schematy sterują działaniem modelu. Dobre opisy, enumy dla zamkniętych zbiorów, tablice required i tryb ścisły to mechanizmy zwiększające niezawodność.
Często zadawane pytania
Czy lekcja „Definiowanie schematów narzędzi (JSON Schema)” jest bezpłatna?
Tak — pełny tekst „Definiowanie schematów narzędzi (JSON Schema)” 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 „Definiowanie schematów narzędzi (JSON Schema)”?
Pisz definicje JSON Schema dla parametrów narzędzi, uwzględniając typy, opisy, wartości enum oraz pola wymagane. Ć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 2 z 4.
Ile czasu zajmuje lekcja „Definiowanie schematów narzędzi (JSON Schema)”?
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
- Jak działa wywoływanie funkcji
- Definiowanie schematów narzędzi (JSON Schema)
- Wybór narzędzi w czasie działania
- Zwracanie wyników do modelu