Установка
pydantic-ai-slim с 2.0 по 3.0. В версии 2.0 был удалён параметр Agent(instrument=...) и введён протокол возможностей, на котором строится этот адаптер, поэтому версия 1.x не может быть инструментирована таким образом.
Инструментирование
root_capability, поэтому нет атрибута agent.capabilities для чтения.
Агенты, созданные во время инструментирования, сохраняют возможность, поэтому вы можете вызвать uninstrument() и повторно инструментировать без пересоздания.
Что записывается
Здесь нет пары hook и нет пары human-in-the-loop. Pydantic AI не имеет границы узла или шага для заключения и не имеет встроенной паузы для человека, поэтому нечего преобразовывать. Если вы создадите что-либо из этого, генерируйте события самостоятельно — см. Пользовательские агенты.
Значение
output_type никак не влияет на трассировку. Типизированный запуск и запуск со строкой создают одинаковые события.
Пример
restock_eta отображается как tool_result с ошибкой, за которым следует другой вызов модели, где агент её обходит, и запуск всё ещё заканчивается success. Оба факта фиксируются.
Ошибки, повторные попытки и управление потоком
Pydantic AI вызывает исключения для трёх разных вещей, и адаптер их разделяет:ModelRetry намеренно находится в первой группе. Это означает, что попытка действительно не удалась и модель была попрошена попробовать снова, что именно то, для чего предназначено поле ошибки инструмента. Классификация её как управления потоком скрыла бы реальные отказы инструментов за зелёным запуском.
Назовите ваши span-ы
Собственный span запуска Pydantic AI называетсяagent. Заключите вызов в контекст, чтобы дать ему выбранный вами ярлык:
inventory, и именно там висят события модели и инструмента.
Держите agent_id с низкой кардинальностью. Это первичный аспект на каждой поверхности панели, поэтому используйте имя роли, никогда UUID или строку для каждого запуска.
Управление сеансом
Разрешается в этом порядке, первое совпадение побеждает:instrument("pydantic_ai", session_id=...)- Содержащий
failproofai_sdk.session()scope conversation_idзапуска, затем егоrun_id- Сгенерированный
uuid4().hex
Опции
Распространённые проблемы
Запуск работает, но события не появляются
Запуск работает, но события не появляются
Agent был создан до запуска instrument(). См. предупреждение выше и проверьте agent.root_capability.capabilities.Простое исключение в инструменте завершает запуск
Простое исключение в инструменте завершает запуск
Простой
raise распространяется; это дизайн Pydantic AI. Чтобы позволить модели его обойти, вызовите ModelRetry с сообщением, на которое она может действовать. Отказ записывается в любом случае.Есть вложенный span агента, который я не создавал
Есть вложенный span агента, который я не создавал
Этот дочерний элемент — собственный span запуска Pydantic AI, и именно там висят события модели и инструмента. Отбросьте собственный scope, если хотите один span, ценой пользовательского имени.
Трассировки стека начинаются с маркера усечения
Трассировки стека начинаются с маркера усечения
Граф асинхронного стека Pydantic AI длиннее предела поля полезной нагрузки, и последняя строка трассировки — это само исключение. Это поле обрезается спереди, а не сзади, поэтому нужная вам строка выживает.
Далее
Как это работает
Пары, идентификаторы, жизненный цикл сеанса и доставка.
Прочитайте трассировку
Следите за причинностью через только что захватанный сеанс.
Другие фреймворки
LangGraph, CrewAI, LlamaIndex и пользовательские агенты.

