2026-07-31T17:29:14.751Z

Память агента Pydantic AI: История аудита перед воспроизведением

Проверьте историю сообщений Pydantic AI для долговечной сериализации, оперативной непрерывности, честного ремонта инструментов, масштаба разговора, доверия и проверенных результатов.

Память агента Pydantic AI готова к воспроизведению только после прохождения шести независимых проверок: сообщения возвращаются через поддерживаемый сериализатор, история исходит из авторизованного серверного источника, требуемый системный запрос сохранился, звонки инструмента и результаты остаются оперативно честными, каждое сообщение принадлежит к намеченному разговору, а приложение имеет квитанцию на ожидаемый результат. Действующая полезная нагрузка JSON доказывает только первую проверку. Это различие имеет значение, поскольку Pydantic AI намеренно восстанавливает некоторые недействительные истории поставщиков. Отмененный звонок инструмента может стать действительным для поставщика перерывным возвратом. Результат инструмента может быть удален. Эти ремонты помогают следующему запросу модели добиться успеха, но они не доказывают, что заброшенный инструмент закончен или что доступный для пользователя существует. Смотрите на сериализацию как на первую дверь, а не на вердикт. Официальный сообщения и документация по истории чата Pydantic рекомендует ModelMessagesTypeAdapter для хранения и загрузки истории ModelMessage . Он сохраняет поля сообщений, которые соответствуют схеме адаптера, в то время как обратная поездка JSON нормализует значения, которые не имеют родного представления JSON. Это правильная граница настойчивости. Это не проверка здоровья приложения. Чтобы сделать разницу измеряемой, я провел семь историй без контента через Pydantic AI 2.21.0. Каждая история была сериализирована с ModelMessagesTypeAdapter.dump json , перезагружена с validate json , нормализована и хэширована. Затем дела прошли отдельные проверки на наличие оперативной непрерывности, паровки инструментов, объем разговора, доверие и получение результатов, предоставленного приложениями. Все семь нормализованных поездок JSON совпали. Только контрольный корпус был готов к повторному воспроизведению: Дело JSON обратное путешествие Оперативный вердикт Полная история плюс получение результатов Равномерно READY Отсутствующая система Равномерно SYSTEM PROMPT GAP Призыв к инструменту прерван Равномерно INTERRUPTED TOOL Результат инструмента "сирота" Равномерно ORPHAN RESULT REMOVED Идентификаторы смешанных разговоров Равномерно SCOPE DRIFT Модель ответа без получения результата Равномерно MISSING OUTCOME RECEIPT История, предоставленная клиентом Равномерно UNTRUSTED HISTORY Результат не является аргументом против адаптера. Это показывает, почему архив с схемой и состояние здорового агента являются разными утверждениями. Разумным дефолтом является сохранение точного выхода адаптера, сохранение стабильного идентификатора разговора и сохранение отдельной записи результатов. Не расширяйте сообщения на ad hoc пары ролей/контента, если для выживания вам нужны метаданные инструмента, границы запуска, системные запросы или аннотации приложения. Минимальный путь настойчивости выглядит вот так: После загрузки запустите другие ворота, прежде чем перевести результат на message history . Прогнозный аудит непрерывности и объема разговора Договор истории Pydantic AI содержит тонкий дефолт: когда message history не пустой, рамка предполагает, что история уже содержит системный запрос. Это не создает новую для этой работы. Документация указывает на ReinjectSystemPrompt , когда база данных, фронтэнд или путь сжатия не перемещают запрос. Это означает, что "старые сообщения пользователя присутствуют" недостаточно. Работа настойчивости может сохранить каждый поворот чата и все же удалить инструкцию, определяющую авторитет агента или выходный контракт. Зарегистрируйте оперативный контракт как несекретный идентификатор, а не как копию чувствительных инструкций в медицинском потоке. Например: Во время воспроизведения проверьте, что загруженная история содержит форму, требуемую для этого пересмотра. Если в вашем приложении намеренно используются динамические инструкции вместо постоянных системных запросов, проверьте этот контракт явно, вместо того, чтобы автоматически считать отсутствие нездоровым. Идентичность разговора нуждается в собственном тесте. Текущие сообщения Pydantic AI могут содержать как run id , так и conversation id . Новый запуск должен получить новый идентификатор запуска, в то время как идентификатор разговора коррелирует с оборотами. Источник для версии 2.21.0 документирует и реализует отдельные правила разрешения для двух идентификаторов. Практическая ворота повторного воспроизведения должна отклонить или изолировать историю, когда: более одного не нулевого идентификатора разговора появляется без явного решения о слиянии; запрашиваемый арендатор или пользователь не владеет разговором; история была загружена в одном контексте разрешения и воспроизведена в другом; звонок пытается повторно использовать предыдущий идентификатор запуска, как если бы это был ключ к разговору; была намечена вилка, но заявка сохранила оригинальную идентичность разговора. Это решения о масштабах. Они не могут быть безопасно восстановлены из текста сообщения, и модель не должна судить их. Проверьте исправленную историю инструмента без названия его полным Провайдеры моделей обычно отклоняют результат инструмента без сопоставляемого вызова или вызова, требуемый результат которого никогда не появляется. Современное поведение очистки истории Pydantic AI делает регулярного, локально выполненного поставщика истории инструмента действительным до запроса. источник 2.21.0 с версией показывает порядок: 1. удалять результаты регулярных инструментов, оставшихся сиротами; 2. синтезировать прерыванные результаты для подвешивания регулярных звонков инструмента, когда ремонт является целесообразным; 3. совмещать совместимые последовательные сообщения после паровки действительны. Синтезируемые результаты отмечаются в метаданных pydantic ai synthesized tool return и используют нейтральный результат interrupted . В контролируемой повторной игре прерыванный случай получил одно значительное возвращение. Дело о сиротах потеряло свою непревзойденную отдачу. Оба полученных историй были легче принять поставщику. Ни один из них не стал доказательством того, что внешний эффект инструмента произошел. Используйте маркер в качестве сигнала инцидента: Не пытайтесь автоматически перепробовать каждый перерыв. Время отсрочки может возникнуть после необратимого внешнего воздействия, но до того, как его результат достигнет истории. Следующий шаг заключается в запросе места назначения с помощью безопасного ключа от беззакония или идентификатора предприятия. Попробуйте повторно только тогда, когда пункт назначения докажет отсутствие эффекта и операция может быть повторена безопасно. Вывод сирот также заслуживает квитанции. Если в загруженной истории содержался результат, который позже был удален, сохраните событие аудит без контента с идентификатором разговора, идентификатором хэшированного инструмента позова, наблюдаемым временем и классом ремонта. Не сохраняйте аргументы или результаты инструмента, если инцидент действительно не требует их. В эксперименте использовался частный символ Pydantic AI clean message history для точного воспроизведения документированного трубопровода. Этот импорт подходит для закрепленного диагностического устройства, а не для кода применения. Частные API могут меняться без гарантий совместимости. Продукционные проверки должны использовать поддерживаемые типы сообщений, документированные метаданные, расписки приложений и тесты, прикрепленные к развертываемой версии. Сохранять историю клиента за пределами полномочий Документация Pydantic явно касается предоставленной клиентом истории: поверхности агента на стороне сервера без статуса, поэтому клиент, который может подавать историю, может создавать инструментные звонки, результаты инструмента, системные запросы или одобрения. sanitize messages сужает несколько опасных форм, но дезинфекция не подтверждает истинность представленной истории. Приобретение транскрипта JSON и полномочия для возобновления работы рассматриваются как отдельные факты. Сервер должен удостоверять аутентификацию звонка, разрешить разговор, создать разрешенный набор инструментов из идентификации на стороне сервера и подтвердить эффекты с высокой ставкой внутри функции инструмента. Если пауза выполнения имеет значение, настаивайте на нем на сервере и возобновите его из сервер владельческого государства. Не принимайте заявление браузера о том, что одобрение произошло просто потому, что подтверждается сообщение в форме одобрения. Это документированная граница доверия, а не отчет о уязвимости. Оперативная неисправность это заявка, которая рассматривает недоверимую историю как авторитетную запись. Компактное правило преимущества не позволяет проверке более низкого уровня скрыть более важную ошибку: Приказ преднамеренный. Нет никакого смысла диагностировать отсутствующий товар из истории, которую звонивший никогда не мог возобновить. Требуйте результат квитанции после прохождения истории Окончательная дверь принадлежит приложению, а не структуре модели истории. Определить ожидаемый эффект перед бегом. Для кодирующего агента это может быть обязательство, содержащее конкретные изменения плюс прохождение испытаний. Для агента поддержки это может быть обновление билета, видимое через API билета. Для планируемого отчета это может быть неизменный объект в ожидаемом пункте назначения с правильным интервалом отчета. Сохранить квитанцию с минимальным содержанием: Допись должна исходить из наиболее сильной доступной детерминистической отсчета. Модель, в которой говорится, что done, является доказательством активности. В случае возвращения инструмента с указанием "принято" это транспортное доказательство. Свежие показания направления, показывающие предполагаемую пересмотр, являются доказательством результатов. Это также касается законного ожидания. Если агент приостанавливается для одобрения человека, правильное состояние не MISSING OUTCOME RECEIPT ; это запись ожидания с владельцем, необходимое решение, крайний срок и продолжение токен. Классифицировать пробег как застрявший только тогда, когда ожидаемое прогрессное окно закрывается без действительной ожидания или результата. Семь случаев воспроизведения имеет узкий предел: он тестирует выбранные состояния неисправности истории сообщений в соответствии с Pydantic AI 2.21.0, а не каждый провайдер, инструмент встроения, адаптер пользовательского интерфейса или продукт с долгосрочной памятью. Повторяйте фиксацию при обновлении фреймворка, изменении сериализации, добавлении адаптера фронтэнда или изменении исполнения инструмента. Предназначенная модель здоровья Sidewisp включает в себя стойкость контекста, доступность инструмента, полезный прогресс и проверку результатов. Sidewisp сейчас находится на этапе закрытого предварительного доступа. Производственный агент здравоохранительный коллектив и адаптер Pydantic AI обычно не поставляются, поэтому данное руководство является независимым правилом эксплуатации, а не утверждением о том, что Sidewisp уже проводит аудит. Поэтому решение о повторном воспроизведении просто: используйте ModelMessagesTypeAdapter для устойчивости, а затем требуйте полномочий, оперативной непрерывности, честной парировки инструментов, объема разговора и внешнего получения результата. Валидная история поставщика является полезным доказательством. Это не то же самое, что здоровый агент.