0Pricing
AI Agents · Lekcja

Walidowanie danych wyjściowych narzędzi (Pydantic)

Przepuszczaj dane wyjściowe każdego narzędzia przez model Pydantic — nie ukrywaj błędów nieprawidłowej odpowiedzi.

Walidowanie danych wyjściowych narzędzi (Pydantic) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 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.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Zaufaj, ale sprawdzaj

Wyniki narzędzi pochodzą ze świata zewnętrznego — z interfejsów API, stron internetowych i modeli. Nieprawidłowa lub nieoczekiwana odpowiedź może doprowadzić do awarii agenta albo, co gorsza, po cichu przekazać nieprawidłowe dane do LLM.

Należy sprawdzać każdy wynik narzędzia względem schematu.

Modele Pydantic

Należy zdefiniować oczekiwane struktury:

from pydantic import BaseModel, HttpUrl

class SearchResult(BaseModel):
    title: str
    url: HttpUrl
    snippet: str
    score: float = 0.0

Validate at the Boundary

from pydantic import ValidationError

def search(query):
    raw = requests.post('https://api.tavily.com/search', json={'query': query}).json()
    results = []
    for r in raw.get('results', []):
        try:
            results.append(SearchResult.model_validate(r))
        except ValidationError as e:
            log.warning('Bad search result skipped: %s', e)
    return results

Listy z walidacją modelu

Należy zwalidować całą odpowiedź:

from pydantic import BaseModel
class SearchResponse(BaseModel):
    results: list[SearchResult]

response = SearchResponse.model_validate(raw)

Walidatory pól

Niestandardowe kontrole wewnątrz pól:

from pydantic import field_validator

class SearchResult(BaseModel):
    score: float

    @field_validator('score')
    @classmethod
    def score_in_range(cls, v):
        if not 0 <= v <= 1:
            raise ValueError('score out of [0,1]')
        return v

Tryb ścisły a pobłażliwy

Domyślnie Pydantic konwertuje typy (na przykład string -> int, jeśli jest to możliwe). W przypadku ścisłych kontroli:

from pydantic import StrictInt

class User(BaseModel):
    age: StrictInt   # rejects '25' (string)

Default Values for Missing Fields

class Tool(BaseModel):
    name: str
    description: str = 'No description provided'   # fallback

Walidacja ustrukturyzowanych wyników LLM

Należy wymusić zwracanie przez model JSON-a zgodnego ze schematem Pydantic — więcej informacji znajduje się w lekcji o ustrukturyzowanych wynikach. Następnie należy ponownie przeprowadzić walidację na granicy jako dodatkową warstwę ochrony.

Walidacja argumentów narzędzia

Przed wykonaniem należy zwalidować modelowe tool_call.arguments:

class SearchArgs(BaseModel):
    query: str
    k: int = 5

args = SearchArgs.model_validate_json(tool_call.function.arguments)
results = search(args.query, args.k)

Błędy walidacji jako wyniki narzędzia

Jeśli walidacja się nie powiedzie, należy zwrócić błąd do modelu, aby mógł ponowić próbę z poprawionymi argumentami:

try:
    args = SearchArgs.model_validate_json(...)
except ValidationError as e:
    return {'error': f'Invalid arguments: {e}'}

Wersjonowanie schematów

Gdy schemat wyników narzędzia się zmienia, należy go wersjonować:

class SearchResultV2(BaseModel):
    title: str
    url: HttpUrl
    relevance: float       # was 'score' in v1

Generowanie schematu JSON z Pydantic

W przypadku definicji schematu narzędzia należy wyprowadzić go z klasy Pydantic:

schema = SearchArgs.model_json_schema()
# Use directly as the 'parameters' for an OpenAI tool definition.

Cel walidacji

Dlaczego należy używać Pydantic dla każdego wyniku narzędzia?

Podsumowanie

Pydantic na każdej granicy: argumenty narzędzia przychodzące, wyniki narzędzia wychodzące i ustrukturyzowane wyniki LLM. Wyraźne awarie są lepsze niż ciche uszkodzenie danych.

Często zadawane pytania

Czy lekcja „Walidowanie danych wyjściowych narzędzi (Pydantic)” jest bezpłatna?

Tak — pełny tekst „Walidowanie danych wyjściowych narzędzi (Pydantic)” 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 „Walidowanie danych wyjściowych narzędzi (Pydantic)”?

Przepuszczaj dane wyjściowe każdego narzędzia przez model Pydantic — nie ukrywaj błędów nieprawidłowej odpowiedzi. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Walidowanie danych wyjściowych narzędzi (Pydantic)”?

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

  1. Idempotentne narzędzia i efekty uboczne
  2. Ponowienia z wykładniczym wycofaniem
  3. Limity czasu i circuit breaker
  4. Walidowanie danych wyjściowych narzędzi (Pydantic)
← Powrót do AI Agents