jackmpcollins/magentic

Бесшовная интеграция LLM как Python-функций

Агенты⭐ 2 425Pythonпоследний релиз: v0.41.1
Открыть на GitHub ↗Сайт проекта ↗

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

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

Зачем нужен

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

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

  • Генерация строго типизированных объектов (например, создание профиля персонажа с полями name, age, power) напрямую из промпта.
  • Создание чат-ботов с few-shot примерами, где модель обучается на предоставленных парах вопрос-ответ через @chatprompt.
  • Автоматизация поиска в интернете: LLM сам выбирает и вызывает нужные функции (например, поиск в Twitter или YouTube) для ответа на вопрос.
  • Построение цепочек рассуждений (@prompt_chain), где LLM последовательно вызывает функции, использует их результаты и формирует финальный ответ.

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

  • Структурированный вывод: поддержка Pydantic моделей и встроенных типов Python для гарантированной структуры ответа.
  • Function Calling и @prompt_chain: LLM может вызывать внешние функции, а декоратор @prompt_chain автоматически обрабатывает эти вызовы и передает результаты обратно модели.
  • Streaming: возможность получать структурированные данные и вызовы функций по мере их генерации.
  • LLM-Assisted Retries: встроенный механизм повторных попыток для улучшения соблюдения сложных схем вывода.
  • Наблюдаемость (Observability): интеграция с OpenTelemetry и Pydantic Logfire для отслеживания работы LLM.

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

Релизы

v0.41.1patch
🕐 6 мес назад · релиз на GitHub ↗

Исправлена обработка пустых чанков стрима и удалено требование require_parameters в OpenRouterChatModel.

  • Fixed: Исправлена обработка пустых чанков стрима.
  • Fixed: Удалено поле require_parameters в OpenRouterChatModel.