bananaml/fructose

Агенты⭐ 747Python
Открыть на GitHub ↗

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

Fructose — это легковесная Python-библиотека, которая позволяет вызывать LLM через декоратор @ai, автоматически преобразуя типизированные функции в промпты и гарантируя строго типизированный вывод.

Зачем нужен

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

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

  • Генерация структурированных объектов (например, dataclass Person) на основе текстового описания.
  • Анализ списков данных (например, список животных) с возвратом строго типизированного результата.
  • Создание цепочек вызовов, где LLM-функция использует локальные Python-функции (local function calling) через аргумент uses.
  • Интеграция с альтернативными LLM-провайдерами через кастомный OpenAI-клиент (при условии поддержки json mode и tools API).

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

  • Декоратор @ai, который интроспектирует функцию и автоматически строит промпт на основе аннотаций типов и docstring.
  • Поддержка сложных типов: dataclass, Enum, Optional, вложенные структуры, а также примитивов (str, int, bool, float).
  • Local function calling: возможность передавать локальные функции в LLM-вызов через аргумент uses.
  • Гибкая настройка промптов через Jinja-шаблоны и флаги (flavors), такие как chain_of_thought и random.
  • Использование OpenAI json mode для гарантированного возврата валидного JSON.

👤 Кому подойдёт: Python-разработчики, создающие приложения с LLM, которым важна типобезопасность и минимизация парсинга ответов.

Релизы

Релизы ещё не отслежены — появятся после ближайшего опроса.