Этап 6 из 18 · ≈ 4 ч

Структурированный вывод

Основа с Junior

JSON по схеме вместо свободного текста — для интеграции модели с кодом.

Чтобы результат модели обрабатывал код, нужен строгий формат. Надёжный способ — структурированный вывод по JSON-схеме: провайдер ограничивает генерацию так, что ответ гарантированно соответствует схеме.

class Ticket(BaseModel):
    category: Literal["оплата", "доставка", "возврат", "другое"]
    urgent: bool
    summary: str

# SDK провайдеров принимают Pydantic-модель как схему ответа
ticket: Ticket = await llm.parse(messages, schema=Ticket)

Что важно знать

  • Просьба «ответь в JSON» в промпте работает не всегда; схема на стороне провайдера — надёжнее.
  • Валидировать результат всё равно: модель может заполнить поля правдоподобной ерундой.
  • Перечисления (Literal, enum) вместо свободных строк для категорий.
  • Поле с рассуждением перед ответом иногда повышает качество, но увеличивает расход токенов.
  • Для открытых моделей — ограниченная генерация (grammar, Outlines, режимы vLLM).

Критерии освоения

Junior ≈ 4 ч

  • Получает ответ модели в виде JSON по Pydantic-схеме и валидирует его

Практика. Извлечь из 20 писем клиентов категорию, срочность и номер заказа в JSON по схеме.

Middle ≈ 4 ч

  • Проектирует схему с перечислениями и обязательными полями так, чтобы снизить ошибки
  • Измеряет точность извлечения по полям на размеченном наборе

Практика. Довести точность извлечения на 100 размеченных письмах до заданного порога, сравнив 2 варианта схемы и промпта.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Как получить от LLM ответ в строгом формате, например JSON?Middle

Используйте режим структурированного вывода по JSON-схеме, если API его поддерживает, и всегда валидируйте результат в коде.

Полный разбор
Как получить от модели JSON по схеме Pydantic и проверить его?Junior

Описать результат классом Pydantic (поля, типы, обязательность, описания), передать его JSON-схему в API в режиме структурированного вывода (или как схему инструмента), получить ответ и провалидировать тем же классом. При ошибке валидации — повторить запрос с…

Полный разбор
Как спроектировать схему извлечения данных и измерить её точность?Middle

Схема снижает ошибки, если сужает пространство ответов: перечисления вместо свободного текста, обязательные поля только там, где значение всегда есть, null как явный вариант «не указано», нормализованные форматы (дата ISO, сумма числом в копейках), понятные…

Полный разбор
Как устроен запрос к чат-API модели — роли сообщений, причина остановки, расход токенов?Junior

Запрос — список сообщений с ролями: system (правила и роль модели), user (запросы), assistant (прошлые ответы модели). Модель не хранит диалог: приложение каждый раз отправляет историю целиком. Ответ содержит текст, причину остановки (закончила сама, упёрлась…

Полный разбор
Что такое вызов инструментов (tool calling) и агенты?Middle

Модель получает описания инструментов (имя, параметры по схеме) и вместо текста может вернуть запрос на вызов; вызывает их код приложения и отдаёт результат обратно модели.

Полный разбор
Зачем отделять инструкции от данных в промпте и как добавлять примеры (few-shot)?Junior

Данные (документ, письмо, ввод пользователя) оборачивают в явные границы — теги вроде <document>…</document> или блоки с заголовками, — чтобы модель понимала, где инструкция, а где материал для обработки. Это повышает качество и немного снижает риск инъекций…

Полный разбор
Как писать хорошие промпты?Junior

Хороший промпт — конкретная задача, контекст, ограничения и формат ответа, плюс примеры, если формат сложный.

Полный разбор

Разборы темы

← Вся карта «ИИ-инженер»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования