0Pricing
AI Agents · Урок

Instructor / Outlines для гарантированной структуры

Instructor (Python) и Outlines ограничивают декодирование, поэтому модель буквально не может создать некорректный JSON.

«Instructor / Outlines для гарантированной структуры» — бесплатный урок AI Agents на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Две основные библиотеки

Два ведущих подхода к гарантированным структурированным результатам:

  • Instructor (Jason Liu) — оболочка Pydantic для OpenAI, Anthropic и многих других провайдеров
  • Outlines (.txt) — управляемое декодирование для моделей OSS

Instructor Basics

# pip install instructor openai
import instructor
from openai import OpenAI
from pydantic import BaseModel

client = instructor.from_openai(OpenAI())

class User(BaseModel):
    name: str
    age: int

user = client.chat.completions.create(
    model='gpt-4o-mini',
    response_model=User,
    messages=[{'role': 'user', 'content': 'Alice, 30'}]
)
print(user.name, user.age)

Магия Instructor

Внутри Instructor:

  1. Создаёт JSON Schema из вашей модели Pydantic
  2. Добавляет её как инструмент к вызову OpenAI
  3. Принудительно вызывает этот инструмент
  4. Разбирает аргументы и возвращает экземпляр Pydantic
  5. Повторяет попытку с исправлением при ошибках проверки

Instructor with Validation

from pydantic import field_validator

class User(BaseModel):
    name: str
    age: int

    @field_validator('age')
    @classmethod
    def positive(cls, v):
        if v <= 0:
            raise ValueError('Age must be positive')
        return v

# Instructor catches ValidationError and retries automatically

Streaming Instructor

for partial in client.chat.completions.create_partial(
    model='gpt-4o-mini',
    response_model=User,
    messages=[{'role': 'user', 'content': 'Alice, 30'}]
):
    print(partial)
# Streams partial Pydantic instances as fields fill in.

Instructor with Anthropic

from anthropic import Anthropic
client = instructor.from_anthropic(Anthropic())

user = client.messages.create(
    model='claude-sonnet-4-5',
    max_tokens=1024,
    response_model=User,
    messages=[{'role': 'user', 'content': 'Alice, 30'}]
)

Outlines для моделей OSS

Outlines использует декодирование с ограничениями грамматики. Он работает с HuggingFace, vLLM и llama.cpp:

# pip install outlines
import outlines

model = outlines.models.transformers('mistralai/Mistral-7B-Instruct-v0.2')

generator = outlines.generate.json(model, User)
user = generator('Alice, 30')

Зачем нужно управляемое декодирование?

Outlines определяет, какие токены допустимы на каждом шаге согласно схеме, и маскирует недопустимые токены. Модель буквально не может выдать некорректный JSON.

Регулярные выражения и варианты в Outlines

Можно ограничить результат регулярным выражением или списком вариантов:

import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?')   # 'yes'

Сочетание обоих подходов

Для максимальной надёжности:

  1. Используйте Instructor для управляемых или закрытых моделей (OpenAI, Anthropic)
  2. Используйте Outlines для моделей на собственном сервере
  3. Модели Pydantic используются в обоих подходах

Сравнение стоимости

  • Строгие результаты (встроенная функция OpenAI) — включены в стоимость
  • Instructor — небольшие накладные расходы из-за повторных попыток при проверке
  • Outlines — небольшое снижение пропускной способности из-за маскирования, но без дополнительных вызовов

Когда что использовать

Сценарий использованияИнструмент
OpenAI/AnthropicInstructor + Pydantic
Собственные модели OSSOutlines
Критичная задержкаВстроенные структурированные результаты OpenAI

Подход Outlines

Как Outlines гарантирует структурированный результат?

Итоги

Для OpenAI и Anthropic используйте встроенные структурированные результаты или Instructor. Для OSS используйте Outlines. Модели Pydantic объединяют всё это.

Часто задаваемые вопросы

Урок «Instructor / Outlines для гарантированной структуры» бесплатный?

Да — полный текст урока «Instructor / Outlines для гарантированной структуры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Instructor / Outlines для гарантированной структуры»?

Instructor (Python) и Outlines ограничивают декодирование, поэтому модель буквально не может создать некорректный JSON. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Instructor / Outlines для гарантированной структуры»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Режим JSON и вывод вызова инструментов
  2. Проверка схемы Pydantic
  3. Циклы исправления некорректного вывода
  4. Instructor / Outlines для гарантированной структуры
← Назад к AI Agents