Всё про ChatGPT

ChatGPT и Pydantic AI: типизированные агенты без хаоса в JSON

Рабочее место разработчика с кодом, распечатками и техникой для создания типизированного AI-агента

Разработчикам, которые строят LLM-агентов, Pydantic AI предлагает более аккуратный способ работы с ответами и инструментами. Идея простая: меньше ручной обвязки, меньше поломок формата и больше опоры на типы и валидацию.

Почему обычный LLM-проект быстро обрастает костылями

Сначала агент на базе большой языковой модели выглядит очень просто: промпт, запрос к API и разбор ответа через JSON. Но через время модель начинает отвечать не только данными, а ещё и лишними фразами, иногда пропускает обязательные поля или присылает массив не в том формате.

Тогда в коде появляются регулярные выражения, дополнительные проверки и повторные запросы. В итоге вместо компактного решения получается большой слой связующего кода, который сложно поддерживать и страшно менять.

Что предлагает Pydantic AI

Pydantic AI пытается решить проблему на стыке между ответом модели и приложением. Фреймворк использует типы и схемы Pydantic: агент описывается функцией с аннотациями, а структурированный результат — отдельной pydantic-моделью.

Проект делает команда Pydantic, той самой библиотеки, на которой держится валидация во многих Python-проектах, включая FastAPI и OpenAI SDK. В статье показан и простой путь запуска: поставить пакет через uv add pydantic-ai или pip install pydantic-ai, а дальше собрать агента и вызвать его синхронно или асинхронно.

Отдельный плюс — гибкость с моделями. В примере используется OpenAI-совместимый шлюз, а переход на локальную или другую модель сводится к небольшой правке в настройках. Для тех, кто работает с разными поставщиками LLM, это экономит время и упрощает эксперименты.

Инструменты агента, зависимости и повторные попытки

Вместо ручного описания JSON-схемы Pydantic AI собирает инструмент из обычной функции. Декоратор, сигнатура и docstring превращаются в описание для модели автоматически, а это значит, что код и схема не расходятся друг с другом.

Есть два варианта инструментов: с контекстом и без него. Через контекст агент может получать зависимости, например HTTP-клиент или базовый адрес API, и это удобно для тестов и для работы без глобальных переменных. Такой подход особенно понятен тем, кто уже использовал аннотации и валидацию в FastAPI.

Если модель передала неверные аргументы или инструмент сам вернул ошибку, можно не падать сразу, а дать системе шанс исправиться. Для этого есть ModelRetry: сообщение об ошибке уходит обратно модели, и она может попробовать ещё раз. В статье также упоминается, что лимит повторов можно настраивать на уровне агента или отдельного инструмента.

Чем это может быть полезно в работе

Pydantic AI особенно полезен там, где LLM должна не просто болтать, а выдавать предсказуемый результат: для поддержки клиентов, автоматизации заказов, внутренних ассистентов и других рабочих сценариев. Чем строже формат ответа, тем меньше ручной обработки потом нужно писать в приложении.

Для разработчика это шанс быстрее собрать прототип и не утонуть в нестабильном JSON. Для бизнеса — меньше поломок, проще тестирование и понятнее сопровождение кода. А если нужно быстро проверить идею с агентом или подключить несколько моделей, такой подход помогает не начинать всё с нуля.

Частые вопросы

Что именно решает Pydantic AI?
Он помогает связать ответ модели с кодом приложения через типы и валидацию, чтобы не ловить ошибки формата вручную.
Нужно ли отдельно писать JSON-схему для инструмента?
Нет, Pydantic AI собирает описание инструмента из функции, её аннотаций и docstring.
Можно ли использовать локальные или другие модели вместо облачных?
Да, в статье показано, что смена провайдера может сводиться к небольшой правке настройки, включая работу через OpenAI-совместимый шлюз и локальные варианты.
Для чего нужен ModelRetry?
Он позволяет отправить ошибку обратно модели и дать ей ещё одну попытку вызвать инструмент с правильными аргументами.

Читайте также

Попробовать Lord GPT бесплатно →