2026-07-31T17:02:37.759Z

Pydantic AI Agentenspeicher: Prüfverlauf vor der Wiedergabe

Testen Sie den Pydantic AI-Nachrichtenverlauf auf dauerhafte Serialisierung, Prompt-Kontinuität, ehrliche Werkzeugreparatur, Konversationsumfang, Vertrauen und verifizierte Ergebnisse.

Der Speicher des Pydantic AI Agenten ist nur dann für die Wiedergabe bereit, wenn sechs unabhängige Prüfungen bestanden wurden: Die Nachrichten durchlaufen den unterstützten Serialisierer, der Verlauf stammt von einer autorisierten serverseitigen Quelle, die erforderliche Systemaufforderung wurde überlebt, Toolaufrufe und Ergebnisse bleiben betrieblich ehrlich, jede Nachricht gehört zur beabsichtigten Konversation und die Anwendung verfügt über eine Quittung für das erwartete Ergebnis. Eine gültige JSON Nutzlast beweist nur die erste Prüfung. Diese Unterscheidung ist wichtig, da Pydantic AI absichtlich einige vom Anbieter ungültige Historien repariert. Ein abgebrochener Werkzeugabruf kann zu einer anbietergültigen unterbrochenen Rücksendung werden. Ein verwaistes Werkzeugergebnis kann entfernt werden. Diese Reparaturen tragen dazu bei, dass die nächste Modellanfrage erfolgreich ist, sie beweisen jedoch nicht, dass das aufgegebene Werkzeug fertig ist oder dass die vom Benutzer zu liefernde Leistung vorhanden ist. Betrachten Sie die Serialisierung als das erste Tor, nicht als das Urteil Pydantics Beamter Nachrichten und Chat Verlaufsdokumentation empfiehlt ModelMessagesTypeAdapter zum Speichern und Laden des ModelMessage Verlaufs. Es behält die Nachrichtenfelder bei, die zum Schema des Adapters passen, während ein JSON Roundtrip Werte normalisiert, die keine native JSON Darstellung haben. Das ist die richtige Persistenzgrenze. Es handelt sich nicht um eine Überprüfung des Anwendungszustands. Um den Unterschied messbar zu machen, habe ich sieben inhaltsfreie Historien über Pydantic AI 2.21.0 ausgeführt. Jeder Verlauf wurde mit ModelMessagesTypeAdapter.dump json serialisiert, mit validate json neu geladen, normalisiert und gehasht. Anschließend durchliefen die Fälle separate Prüfungen auf Prompt Kontinuität, Tool Paarung, Konversationsumfang, Vertrauen und eine von der Anwendung bereitgestellte Ergebnisbestätigung. Alle sieben normalisierten JSON Roundtrips stimmten überein. Nur der Kontrollfall war zur Wiedergabe bereit: Fall JSON Hin und Rückfahrt Operatives Urteil Vollständige Anamnese und Ergebnisbeleg Gleich READY Fehlende Systemaufforderung Gleich SYSTEM PROMPT GAP Unterbrochener Werkzeugaufruf Gleich INTERRUPTED TOOL Verwaistes Werkzeugergebnis Gleich ORPHAN RESULT REMOVED Gemischte Konversations IDs Gleich SCOPE DRIFT Modellantwort ohne Ergebnisempfang Gleich MISSING OUTCOME RECEIPT Vom Kunden bereitgestellter Verlauf Gleich UNTRUSTED HISTORY Das Ergebnis ist kein Argument gegen den Adapter. Es zeigt, warum ein schemagültiges Archiv und ein fehlerfreier Agentenstatus unterschiedliche Ansprüche sind. Der sinnvolle Standardwert besteht darin, die genaue Adapterausgabe beizubehalten, eine stabile Konversationskennung beizubehalten und einen separaten Ergebnisdatensatz zu führen. Reduzieren Sie die Nachrichten nicht in Ad hoc Rollen /Inhaltspaare, wenn Sie Werkzeugmetadaten, Laufgrenzen, Systemeingabeaufforderungen oder Anwendungsanmerkungen benötigen, um zu überleben. Ein minimaler Persistenzpfad sieht folgendermaßen aus: Führen Sie nach dem Laden die anderen Gatter aus, bevor Sie das Ergebnis an message history übergeben. Überprüfen Sie die Kontinuität der Eingabeaufforderung und den Umfang des Gesprächs Der Verlaufsvertrag von Pydantic AI enthält eine subtile Standardeinstellung: Wenn message history nicht leer ist, geht das Framework davon aus, dass der Verlauf bereits eine Systemeingabeaufforderung enthält. Für diesen Lauf wird kein neues generiert. Die Dokumentation verweist auf ReinjectSystemPrompt , wenn eine Datenbank, ein Frontend oder ein Komprimierungspfad die Eingabeaufforderung nicht umleitet. Das bedeutet, dass „die alten Benutzermeldungen vorhanden“ nicht ausreichen. Ein Persistenzjob kann jede Chat Runde beibehalten und dennoch die Anweisung entfernen, die die Autorität oder den Ausgabevertrag des Agenten definiert hat. Erfassen Sie den Prompt Vertrag als nicht geheime Kennung und nicht als Kopie vertraulicher Anweisungen in einem Gesundheitsstrom. Zum Beispiel: Überprüfen Sie bei der Wiedergabe, ob der geladene Verlauf die für diese Revision erforderliche Eingabeaufforderungsform enthält. Wenn Ihre Anwendung absichtlich dynamische Anweisungen anstelle dauerhafter Systemaufforderungen verwendet, überprüfen Sie diesen Vertrag explizit, anstatt Abwesenheit automatisch als fehlerhaft zu behandeln. Die Konversationsidentität benötigt einen eigenen Test. Aktuelle Pydantic AI Nachrichten können sowohl run id als auch conversation id enthalten. Ein neuer Lauf sollte eine neue Lauf ID erhalten, während die Konversations ID Runden korreliert. Die Quelle für Version 2.21.0 dokumentiert und implementiert separate Auflösungsregeln für die beiden Bezeichner. Ein praktisches Replay Gate sollte einen Verlauf ablehnen oder unter Quarantäne stellen, wenn: mehr als eine Konversations ID ungleich Null wird ohne explizite Zusammenführungsentscheidung angezeigt; Der angeforderte Mieter oder Benutzer ist nicht Eigentümer der Konversation. der Verlauf wurde unter einem Autorisierungskontext geladen und unter einem anderen wiedergegeben; Ein Anrufer versucht, eine frühere Lauf ID wiederzuverwenden, als wäre es die Gesprächstaste. Es war eine Verzweigung vorgesehen, aber die Anwendung behielt die ursprüngliche Konversationsidentität bei. Dabei handelt es sich um Umfangsentscheidungen. Sie können nicht sicher aus dem Nachrichtentext wiederhergestellt werden und ein Model sollte nicht über sie urteilen. Überprüfen Sie den Verlauf des reparierten Werkzeugs, ohne es als abgeschlossen zu bezeichnen Modellanbieter lehnen im Allgemeinen ein Werkzeugergebnis ohne passenden Aufruf oder einen Aufruf, dessen erforderliches Ergebnis nie angezeigt wird, ab. Das aktuelle Verlaufsbereinigungsverhalten von Pydantic AI macht den regulären, lokal ausgeführten Werkzeugverlauf vor einer Anfrage vom Anbieter gültig. Der Versionsfixierte 2.21.0 Quelle zeigt die Reihenfolge: 1. Entfernen Sie verwaiste reguläre Tool Ergebnisse. 2. synthetisieren Sie unterbrochene Ergebnisse für fehlende regelmäßige Werkzeugaufrufe, wenn eine Reparatur angebracht ist; 3. Führen Sie kompatible aufeinanderfolgende Nachrichten zusammen, nachdem das Pairing gültig ist. Synthetisierte Renditen werden in den Metadaten mit pydantic ai synthesized tool return gekennzeichnet und verwenden das neutrale interrupted Ergebnis. In der kontrollierten Wiederholung erzielte der unterbrochene Fall einen deutlichen Gewinn. Der Waisenfall verlor seine beispiellose Rendite. Beide daraus resultierenden Verläufe waren für einen Anbieter leichter zu akzeptieren. Beides lieferte keinen Beweis dafür, dass die äußere Wirkung des Werkzeugs stattgefunden hat. Verwenden Sie die Markierung als Ereignissignal: Versuchen Sie nicht automatisch jeden unterbrochenen Anruf erneut. Eine Zeitüberschreitung kann nach einem irreversiblen externen Effekt auftreten, aber bevor das Ergebnis in den Verlauf gelangt. Der begrenzte nächste Schritt besteht darin, das Ziel mit einem sicheren Idempotenzschlüssel oder einer Geschäftskennung abzufragen. Versuchen Sie es nur erneut, wenn das Ziel nachweist, dass der Effekt nicht vorhanden ist und der Vorgang sicher wiederholt werden kann. Auch die Waisenentnahme verdient eine Quittung. Wenn ein geladener Verlauf ein Ergebnis enthielt, das später durch die Bereinigung entfernt wurde, behalten Sie ein inhaltsfreies Prüfereignis mit der Konversations ID, der gehashten Tool Aufruf ID, der beobachteten Zeit und der Reparaturklasse bei. Bewahren Sie keine rohen Tool Argumente oder Ergebnisse auf, es sei denn, der Vorfall erfordert sie wirklich. Das Experiment verwendete das private clean message history Symbol von Pydantic AI, um die dokumentierte Pipeline exakt zu reproduzieren. Dieser Import ist für ein angeheftetes Diagnosegerät geeignet, nicht für Anwendungscode. Private APIs können ohne Kompatibilitätsgarantien geändert werden. Produktionsprüfungen sollten unterstützte Nachrichtentypen, dokumentierte Metadaten, Anwendungsbelege und Tests verwenden, die an die bereitgestellte Version angeheftet sind. Halten Sie den Client Verlauf außerhalb der Autoritätsgrenzen In der Dokumentation von Pydantic geht es explizit um den vom Client bereitgestellten Verlauf: Serverseitige Agentenoberflächen sind zustandslos, sodass ein Client, der den Verlauf übermitteln kann, Toolaufrufe, Toolergebnisse, Systemaufforderungen oder Genehmigungen fabrizieren kann. sanitize messages schränkt mehrere unsichere Formen ein, die Bereinigung stellt jedoch nicht sicher, dass der übermittelte Verlauf wahr ist. Behandeln Sie den Besitz eines JSON Transkripts und die Befugnis zur Wiederaufnahme der Arbeit als separate Tatsachen. Der Server sollte den Anrufer authentifizieren, die Konversation autorisieren, das zulässige Toolset aus der serverseitigen Identität erstellen und hochriskante Effekte innerhalb der Toolfunktion erneut validieren. Wenn eine angehaltene Ausführung wichtig ist, behalten Sie sie auf dem Server bei und setzen Sie sie im servereigenen Zustand fort. Akzeptieren Sie nicht die Behauptung eines Browsers, dass eine Genehmigung nur deshalb stattgefunden hat, weil eine zustimmungsförmige Nachricht validiert wird. Dies ist eine dokumentierte Vertrauensgrenze, kein Schwachstellenbericht. Der Betriebsfehler liegt darin, dass eine Anwendung einen nicht vertrauenswürdigen Verlauf als Autoritätsdatensatz behandelt. Eine kompakte Vorrangregel verhindert, dass eine plausible Prüfung auf niedrigerer Ebene einen schwerwiegenderen Fehler verbirgt: Die Reihenfolge ist bewusst. Es hat keinen Sinn, einen fehlenden Liefergegenstand anhand einer Historie zu diagnostizieren, die der Anrufer nie fortsetzen durfte. Fordern Sie eine Ergebnisquittung nach Ablauf der Historie an Das letzte Tor gehört zur Anwendung, nicht zum Modellhistorien Framework. Definieren Sie vor dem Lauf den erwarteten Effekt. Für einen Codierungsagenten kann es sich um einen Commit handeln, der eine bestimmte Änderung enthält und zusätzlich Tests besteht. Für einen Supportmitarbeiter könnte es sich um eine Ticketaktualisierung handeln, die über das Ticket API sichtbar ist. Bei einem geplanten Bericht handelt es sich möglicherweise um ein unveränderliches Objekt am erwarteten Ziel mit dem richtigen Berichtsintervall. Speichern Sie einen inhaltsminimierten Beleg: Der Empfang sollte vom stärksten verfügbaren deterministischen Readback stammen. Ein Modell, das „erledigt“ sagt, ist ein Aktivitätsbeweis. Eine Werkzeugrückgabe mit dem Vermerk „akzeptiert“ gilt als Transportbeweis. Ein neuer Bestimmungsort, der die beabsichtigte Überarbeitung zeigt, ist ein Ergebnisbeweis. Dies behandelt auch legitimes Warten. Wenn der Agent zur menschlichen Genehmigung angehalten wird, ist der korrekte Status nicht MISSING OUTCOME RECEIPT ; Es handelt sich um einen Wartedatensatz mit Eigentümer, erforderlicher Entscheidung, Frist und Lebenslauf Token. Klassifizieren Sie den Lauf nur dann als hängengeblieben, wenn das erwartete Fortschrittsfenster ohne gültige Wartezeit oder Ergebnis geschlossen wird. Die Sieben Fall Wiedergabe hat eine enge Grenze: Sie testet ausgewählte Fehlerzustände im Nachrichtenverlauf unter Pydantic AI 2.21.0, nicht jeden Anbieter, jedes integrierte Tool, jeden UI Adapter oder jedes Langzeitspeicherprodukt. Führen Sie das Fixture erneut aus, wenn Sie das Framework aktualisieren, die Serialisierung ändern, einen Frontend Adapter hinzufügen oder die Tool Ausführung ändern. Das beabsichtigte Gesundheitsmodell von Sidewisp umfasst Kontextpersistenz, Tool Erreichbarkeit, nützlichen Fortschritt und Ergebnisüberprüfung. Die Sammlung des Zustands des Produktionsagenten Sidewisp befindet sich derzeit in einer privaten Vorschauphase. und ein Pydantic AI Adapter werden im Allgemeinen nicht ausgeliefert. Daher handelt es sich bei diesem Leitfaden um eine unabhängige Betriebsregel und nicht um die Behauptung, dass Sidewisp die Prüfung bereits durchführt. Die Wiederholungsentscheidung ist daher einfach: Verwenden Sie ModelMessagesTypeAdapter für die Haltbarkeit und fordern Sie dann Autorität, Prompt Kontinuität, ehrliche Werkzeugpaarung, Konversationsumfang und eine externe Ergebnisbestätigung. Eine vom Anbieter gültige Historie ist ein nützlicher Beweis. Es ist nicht dasselbe wie ein gesunder Wirkstoff.