Как получить от модели JSON по схеме Pydantic и проверить его?
- Как использовать Pydantic с LLM?
- Как извлечь данные из текста в виде объекта?
Описать результат классом Pydantic (поля, типы, обязательность, описания), передать его JSON-схему в API в режиме структурированного вывода (или как схему инструмента), получить ответ и провалидировать тем же классом. При ошибке валидации — повторить запрос с текстом ошибки или вернуть понятный отказ. Библиотеки вроде Instructor делают это за вас.
- Описания полей попадают в схему и помогают модели понять, что туда писать
- Необязательные поля — Optional, иначе модель выдумает значение
- Валидация ловит форму и типы; смысл (верная ли сумма) проверяют отдельно
А ещё Ограничивайте значения перечислениями (Literal, Enum) там, где их набор известен
Подробно
Пример:
from typing import Literal, Optional
from pydantic import BaseModel, Field
class Ticket(BaseModel):
category: Literal["доставка", "оплата", "возврат", "другое"]
order_id: Optional[str] = Field(None, description="Номер заказа, если указан")
urgent: bool
raw = call_model(text, schema=Ticket.model_json_schema())
ticket = Ticket.model_validate_json(raw)
Обработка ошибок: перехватить ValidationError, отправить модели сообщение с ошибкой и попросить исправить (1–2 попытки), затем записать случай в лог для разбора.
Что хотят услышать
- Pydantic-класс и его JSON-схема.
- Структурированный вывод в API.
- Валидация и повтор при ошибке.
- Optional и перечисления.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Достаточно написать в промпте «верни JSON» и разобрать ответ без проверки
- ✗Pydantic проверяет, правильные ли факты извлекла модель
- ✓Схему класса — в структурированный вывод, ответ — валидировать им же
- ✗Все поля стоит делать обязательными — так модель точнее извлекает данные из текста
Разбор темы
- Промпты и структурированный вывод
Как написать промпт, который стабильно работает, отделить инструкции от данных, получить от модели строгий JSON и когда разбивать задачу на цепочку вызовов.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.