normal-computing/outlines

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

Инструменты⭐ 15 852Pythonпоследний релиз: 1.3.3
Открыть на GitHub ↗Сайт проекта ↗

Что это за инструмент

Outlines — это библиотека Python, которая гарантирует, что вывод LLM будет строго соответствовать заданной структуре (JSON, Pydantic-модели, перечисления), исключая ошибки парсинга.

Зачем нужен

Инструмент решает проблему непредсказуемости ответов нейросетей, обеспечивая валидный структурированный вывод на этапе генерации, а не постобработки. Это упрощает интеграцию LLM в production-системы, где важна надежность данных.

Что можно реализовать

  • Автоматическая классификация обращений в техподдержку с извлечением приоритета и категории
  • Извлечение структурированных данных (например, отзывов товаров) с валидацией полей
  • Парсинг событий или документов в заранее определенные типы данных
  • Генерация JSON-ответов для API без риска нарушения схемы
  • Использование в связке с vLLM, Ollama или OpenAI для кросс-платформенной работы

Ключевые возможности

  • Гарантия валидной структуры вывода прямо во время генерации
  • Поддержка Pydantic, типов Python (int, str, Literal) и пользовательских схем
  • Провайдер-независимая архитектура: один код работает с разными LLM
  • Интеграция с популярными фреймворками (vLLM, Hugging Face, OpenAI)
  • Простой API: передача желаемого типа данных как аргумента функции

👤 Кому подойдёт: Разработчики, внедряющие LLM в production; инженеры данных, работающие с извлечением информации; архитекторы AI-систем, требующие надежности и структурированности выходов моделей

Релизы

1.3.3minor
🕐 1 мес назад · релиз на GitHub ↗

Релиз 1.3.3: новые типы данных (hex, slug, IBAN, геоданные), поддержка PEP 604 и исправления для vLLM, SGLang и Gemini.

  • Added: Добавлена поддержка объединений типов PEP 604 (int | str) в качестве выходных типов.
  • Added: Введены новые пользовательские типы: hex_color, slug, credit_card, iban, bic, e164, latitude, longitude.
  • Fixed: Исправлено мутирование словаря extra_body в клиентах vLLM и SGLang при генерации структурированного вывода.
  • Fixed: Улучшена валидация: добавлены проверки на отрицательные значения count, ведущие нули в IPv4/IPv6 и корректная обработка системных сообщений в Gemini.
  • Fixed: Исправлена работа с Enum (игнорирование методов), кавычками для ключей Dict в JSON и приведением в соответствие __eq__ и __hash__ у токенизаторов.
1.3.2patch
🕐 2 мес назад · релиз на GitHub ↗

Исправления в валидации дат, JSON Schema, vLLM и обработке исключений, а также улучшение документации.

  • Fixed: Исправлена валидация дат: теперь отклоняется некорректный день '00'.
  • Fixed: vLLM: отправляются ключи structured_outputs вместо удалённых guided_*.
  • Fixed: JSON Schema: константы маппятся на Literal, экранируются спецсимволы в числовых ограничениях.
  • Fixed: Исправлен краш при объединении типов, где есть None, и исправлено игнорирование whitespace_pattern.
  • Fixed: Исключения: больше не требуется SDK провайдера для нормализации ошибок.
  • Added: Добавлена документация для модели LM Studio и исправлены битые ссылки.
1.3.1minor
🕐 2 мес назад · релиз на GitHub ↗

Релиз 1.3.1: новые типы данных, миграция на src layout и множество исправлений в обработке JSON Schema и DSL.

  • Added: Добавлены пользовательские типы: semver, MAC-адрес и IPv6.
  • Added: Проект мигрирован на структуру каталогов src layout.
  • Fixed: Исправлена генерация JSON Schema: свойства помечены как NotRequired, а массивы типов конвертируются в Union.
  • Fixed: Улучшена работа DSL: сохранено значение None без кавычек в опциональных контейнерах.
  • Fixed: Исправлена обработка булевых литералов, числовых экспонент и неформатированных f-строк.