API-Versionierung für KI-Agenten: Umgang mit Breaking Changes

Ein umbenanntes Feld lässt einen typisierten Client lautstark abstürzen und einen Agenten stillschweigend fehlschlagen. Erfahren Sie, welche API-Änderungen Agenten zum Fehlschlagen bringen, wie man Versionen fixiert und wie man Abweichungen mit Vertragstests und Laufzeit-Strukturprüfungen erkennt.

Ashley Innocent

Ashley Innocent

26 August 2026

API-Versionierung für KI-Agenten: Umgang mit Breaking Changes

Apidog für Unternehmen

On-Premises Bereitstellung

SSO & RBAC

SOC 2 konform

Apidog Enterprise entdecken

Das API-Team benannte ein Feld von customer_name in customer_full_name um. Sie kündigten es an, aktualisierten die Dokumentation, und jeder manuell gepflegte Client erhielt einen Pull Request. Ihr Agent erhielt nichts, weil niemand ihn als Client betrachtete. Er sendete weiterhin das alte Feld, die API akzeptierte die Anfrage und ignorierte den unbekannten Schlüssel, und zwei Wochen lang hatte jeder von ihm erstellte Datensatz einen leeren Namen.

Agenten sind die API-Konsumenten, die am wenigsten in der Lage sind, eine Änderung zu bemerken, und am ehesten dazu neigen, darüber hinwegzusehen. Ein menschlicher Client löst eine Ausnahme aus. Ein Agent liest einen 200, entscheidet, dass der Aufruf funktioniert hat, und fährt fort. Manchmal improvisiert er um das Problem herum auf eine Weise, die wie ein Erfolg aussieht.

Dieser Leitfaden behandelt, warum Agenten ungewöhnlich anfällig für API-Drift sind, welche Änderungen sie brechen, die gewöhnliche Clients nicht brechen würden, wie man Versionen festnagelt und erkennt und wie man Drift in CI abfängt, bevor ein Lauf dies tut. Unser Beitrag zu warum KI-Agenten in der Produktion ausfallen behandelt die Fehlerursachen; dies ist diejenige, die außerhalb Ihrer Codebasis entsteht.

Apidog ist hier relevant, weil die Erkennung ein Spezifikationsproblem ist. Wenn Sie die vorherige Version einer API-Definition und die aktuelle haben, ist der Unterschied mechanisch.

button

Warum Agenten weniger bemerken als Clients

Vier Eigenschaften wirken sich schlecht aus.

Stille Toleranz. Die meisten APIs ignorieren unbekannte Felder in einem Request-Body. Ein umbenanntes Feld bedeutet, dass das neue fehlt und das alte verworfen wird, mit einem 200 auf dem Weg nach draußen. Nichts wird gemeldet.

Improvisation. Wenn in einer Antwort ein Wert fehlt, fährt ein Modell oft mit einem plausiblen Ersatz fort, anstatt anzuhalten. Das ist im Gespräch hilfreich, aber im Umgang mit einer API gefährlich.

Beschreibungen im Prompt. Agenten-Tool-Beschreibungen kodieren Annahmen über die API in Textform. Wenn sich die API ändert, werden die Beschreibungen subtil falsch, und falsche Beschreibungen führen zu falschen Aufrufen, ohne dass Code beteiligt ist. Unser Beitrag zum Design von Tool-Schemas behandelt, wie viel Verhalten von diesem Text abhängt.

Kein Compiler. Ein typisierter Client bricht zur Build-Zeit ab, wenn ein Feld verschwindet. Der Vertrag eines Agenten lebt in JSON-Schemas und Prosa, und nichts überprüft ihn, bis ein Aufruf fehlschlägt oder, schlimmer noch, bis einer stillschweigend nicht fehlschlägt.

Das Fazit: Änderungen, die für typische Clients sicher sind, sind nicht immer sicher für Agenten, und Sie sollten sie getrennt klassifizieren.

Welche Änderungen Agenten tatsächlich brechen

Die übliche Unterscheidung zwischen additiv und brechend gilt weiterhin, und Agenten fügen eine mittlere Kategorie hinzu.

Die mittlere Liste ist diejenige, die man im Auge behalten sollte, denn nichts in einer Standard-Änderungsprüfung kennzeichnet sie.

Immer die Version festlegen

Die erste Verteidigung besteht darin, sich implizit nicht zu bewegen.

Senden Sie bei jeder Anfrage eine explizite Version, unabhängig vom Mechanismus, den die API bietet: ein Pfadsegment, einen Header oder eine kontoweite Pin. Die API-Versionsdokumentation von GitHub verwendet einen Datums-Header, und Stripe legt eine Version pro Konto mit einem expliziten Upgrade-Schritt fest. Beide geben Ihnen die gleiche Eigenschaft: Nichts ändert sich unter Ihnen, bis Sie es entscheiden.

DEFAULT_HEADERS = {
    "X-API-Version": "2026-06-01",
    "User-Agent": "billing-agent/1.4 (+https://example.com/agents)",
}

Der User-Agent ist genauso viel wert wie die Versionspin. Wenn ein API-Anbieter Aufrufer über eine Deprecation warnen muss, schauen sie sich den Traffic an. Ein Agent, der sich selbst identifiziert, erhält die E-Mail; einer, der eine Standard-Bibliothekszeichenfolge sendet, nicht.

Wenn Sie die API besitzen, veröffentlichen Sie eine Version und halten Sie sie. Unser Leitfaden zur besten API-Versionsstrategie behandelt die Optionen, und das Verwalten von API-Versionierung in Apidog behandelt das gleichzeitige Betreiben mehrerer Live-Versionen.

Für Drittanbieter-APIs ohne jegliche Versionierung, legen Sie fest, was Sie können: Erfassen Sie die Antwortstruktur, gegen die Sie entwickelt haben, und überprüfen Sie sie, was im nächsten Abschnitt behandelt wird.

Drift erkennen, bevor ein Lauf es tut

Das Festlegen kauft Zeit. Es stoppt nicht das eventuelle Upgrade und nützt nichts bei APIs, die sich ohne Versionierung ändern. Also: Erkennen.

Spezifikation regelmäßig abgleichen. Wenn der Anbieter ein OpenAPI-Dokument veröffentlicht, holen Sie es täglich ab und vergleichen Sie es mit der Kopie, aus der Sie Tools generiert haben. Entfernte Felder, geänderte Typen, hinzugefügte Anforderungen, erweiterte Enums, bearbeitete Beschreibungen. In Apidog können Sie die importierte Definition im Projekt behalten und sehen, was sich zwischen den Versionen geändert hat, was "hat sich etwas geändert" zu einem Bericht anstatt einer Untersuchung macht.

Kontrakttest der Endpunkte, die Sie aufrufen. Senden Sie für jedes Tool, das der Agent hat, eine bekannte gute Anfrage und überprüfen Sie die Antwortstruktur: erforderliche Felder vorhanden, korrekte Typen, Enum-Werte innerhalb des erwarteten Bereichs. Dies fängt Drift in APIs ab, die überhaupt keine Spezifikation veröffentlichen, was die meisten sind. Unser Leitfaden zum API-Kontrakttest behandelt das Muster, und der bidirektionale Kontrakttest behandelt das Ausführen von beiden Seiten.

Form zur Laufzeit prüfen. Validieren Sie Antworten im Tool-Wrapper gegen das erwartete Schema und protokollieren Sie eine Warnung, wenn etwas Unerwartetes auftritt. Dies ist die letzte Linie und diejenige, die die Änderung abfängt, die niemand angekündigt hat.

def check_shape(tool_name, payload, expected):
    missing = [f for f in expected["required"] if f not in payload]
    extra = [f for f in payload if f not in expected["properties"]]
    if missing:
        log.error("api_drift", tool=tool_name, missing=missing)
        raise ApiDriftError(f"{tool_name}: missing fields {missing}")
    if extra:
        log.warning("api_new_fields", tool=tool_name, fields=extra)
    return payload

Fehlschlagen bei fehlenden, warnen bei zusätzlichen. Ein fehlendes erforderliches Feld bedeutet, dass der Agent mit unvollständigen Daten arbeiten wird, was ein Fehler ist, für den es sich lohnt, anzuhalten. Neue Felder sind normalerweise additiv und es lohnt sich, sie zu kennen, ohne einen Lauf zu unterbrechen. Leiten Sie beides in den Trace-Eintrag weiter, der in unserem Beitrag zum Tracing von Agenten-Tool-Aufrufen beschrieben wird.

Verhalten beobachten, nicht nur Schemas. Einige Abweichungen sind für eine Formprüfung unsichtbar: ein geänderter Standardwert, eine verschärfte Ratenbegrenzung, eine langsamer gewordene Antwort. Verfolgen Sie Aufrufe pro abgeschlossener Aufgabe, Wiederholungsrate pro Endpunkt und durchschnittliche Antwortgröße pro Tool. Eine sprunghafte Änderung in einem davon bedeutet normalerweise, dass sich etwas stromaufwärts bewegt hat.

Upgrade ohne den Agenten zu stören

Wenn Sie auf eine neue Version umsteigen, behandeln Sie es als eine Änderung am Agenten, denn das ist es auch.

Generieren Sie die Tools neu, anstatt sie manuell zu bearbeiten, damit Beschreibungen und Schemas zusammenpassen. Lesen Sie dann den Diff der generierten Tool-Definitionen. Dieser Diff ist der tatsächliche Auswirkungsbereich und oft kleiner oder größer, als das API-Änderungsprotokoll andeutet.

Führen Sie den Agenten gegen einen Mock der neuen Version aus, bevor Sie ihn auf etwas Live-Ähnliches richten. Dies ist der wertvollste Schritt und derjenige, der am häufigsten übersprungen wird: Ein Mock, der aus der neuen Spezifikation erstellt wurde, ermöglicht es Ihnen, Ihre gesamte Task-Suite risikofrei gegen die neuen Formen auszuführen, gemäß unserem Beitrag zum Ausführen von Agenten gegen Mocks statt Produktion.

Führen Sie die Auswahl-Suite erneut aus. Änderungen an der Beschreibung verschieben, welches Tool das Modell auswählt, und diese Regression ist für einen Schema-Diff unsichtbar. Überprüfen Sie die Tool-Auswahl für eine feste Reihe von Prompts, wie in unserem Leitfaden zum Testen nicht-deterministischer Agenten beschrieben.

Führen Sie die Einführung hinter einem Feature-Flag durch, auf einem Teil des Datenverkehrs, wobei die alte Version noch fest verankert und bereit ist. Beobachten Sie die gleichen vier Zahlen einen Tag lang. Agenten-Regressionen zeigen sich als mehr Aufrufe pro Aufgabe und mehr Wiederholungen, lange bevor jemand eine Beschwerde einreicht.

Drei Drifts, die es in die Produktion schafften

Das umbenannte Feld. Die Eröffnungsgeschichte. Ein 200 bei jedem Anruf, leere Namen in jedem Datensatz, zwei Wochen später von einem Menschen entdeckt, der einen Bericht las. Eine Laufzeit-Formprüfung der Antwort hätte es beim ersten Anruf erkannt, weil das Feld, das der Agent zurücklesen sollte, verschwunden war.

Die verschärfte Standardeinstellung für die Paginierung. Ein Anbieter reduzierte die Standard-Seitengröße von 100 auf 20. Der Agent sandte nie ein limit, so dass er begann, 20 Datensätze zu sehen und sie als vollständige Menge zusammenzufassen. Es gab keine Fehlermeldung. Die Zusammenfassungen waren einfach falsch, auf eine Weise, die selbstbewusst wirkte. Die Lösung war eine Zeile, das Senden eines expliziten limit, und die Lektion ist allgemeiner: Verlassen Sie sich auf Standardwerte, und Sie haben eine unerklärte Abhängigkeit von der Entscheidung eines anderen.

Der neue Enum-Wert. Eine Zahlungs-API fügte status: "disputed" hinzu. Typisierte Clients ignorierten es. Der Agent überlegte, entschied, dass eine strittige Belastung als Rückerstattung zählte, und meldete abgeglichene Bücher, die es nicht waren. Eine explizite Enum-Validierung hätte bei dem unbekannten Wert einen Fehler ausgelöst, anstatt das Modell ihn interpretieren zu lassen.

Das Muster: Jede Änderung wurde angekündigt, jede war laut Klassifizierung des Anbieters additiv oder geringfügig, und jede war für einen Agenten störend. Diese Lücke ist das, worum man herumplanen muss.

Veraltetheit als Arbeitsaufgabe behandeln

Anbieter warnen Sie in der Regel. Die Warnung kommt in einem Changelog, einer E-Mail oder einem Deprecation-Header in der Antwort an, und es ist leicht, dass keine davon die Person erreicht, die den Agenten wartet.

Integrieren Sie sie in Ihre normale Warteschlange. Der Deprecation-Header und der Sunset-Header sind beide standardisiert, sodass eine generische Prüfung bei allen Anbietern funktioniert. Protokollieren Sie sie, wenn sie erscheinen, und alarmieren Sie beim ersten Auftreten statt beim tausendsten. Ein Header, der heute bei 3 Prozent der Aufrufe auftaucht, ist am Sunset-Datum ein vollständiger Ausfall.

Führen Sie auch ein Inventar: welcher Agent, welcher Anbieter, welche Version, welche Endpunkte und wer dafür verantwortlich ist. Zehn Zeilen in einer Datei reichen aus. Wenn eine Deprecation-Meldung eintrifft, sollte die Frage „betrifft uns das?“ eine Minute dauern, nicht einen Nachmittag mit Grepping.

Drift ist Arbeit, also gib ihr einen Besitzer

Die Erkennung erzeugt eine Warteschlange: einen Spezifikations-Diff, einen fehlschlagenden Kontrakttest, einen erstmals gesehenen Deprecation-Header. Jeder ist eine kleine Arbeitsaufgabe mit einer Frist, und der Fehlermodus besteht darin, dass er in einem Kanal liegt, den niemand besitzt, bis das Sunset-Datum erreicht ist.

Legen Sie sie dorthin, wo Ihr Team bereits Arbeit verfolgt. Wenn Ihre Agenten als Coding-Runtimes und nicht als von Ihnen bereitgestellter Dienst laufen, kann die Verwaltungsplattform den Kreis schließen: Sharkly weist einem Agenten oder einer Crew eine Aufgabe zu und hält das Ziel, die Ausführungsverfolgung und die Überprüfung an einem Ort, so dass „die Zahlungs-API diesen Endpunkt als veraltet markiert hat“ zu einer zugewiesenen Aufgabe mit einem Ergebnis wird, anstatt einer Nachricht in einem Thread. Was auch immer Sie verwenden, die Regel ist dieselbe. Eine Drift-Warnung ohne Besitzer ist eine Veraltetheit, der Sie am Tag des Ausfalls wieder begegnen werden.

Eine Checkliste

Das API-Team wird weiterhin Änderungen veröffentlichen, und das ist in Ordnung. Was Sie brauchen, ist, dass Ihr Agent ein Client ist, der Änderungen bemerkt, wofür eine Versions-Pin, ein Kontrakttest und eine Laufzeit-Formprüfung erforderlich sind. Laden Sie Apidog herunter, um die Spezifikation abzugleichen und die nächste Version zu mocken, bevor sie in den Live-Betrieb geht.

Häufig gestellte Fragen

Wie oft sollte ich eine Drittanbieter-Spezifikation auf Änderungen überprüfen? Täglich reicht für die meisten aus und ist günstig zu automatisieren. Für APIs ohne veröffentlichte Spezifikation sollten Sie stattdessen auf in CI laufende Kontrakttests setzen, da diese denselben Drift von außen erkennen.

Sollte ich immer auf die älteste funktionierende Version festlegen? Nein. Legen Sie fest, damit Upgrades bewusst erfolgen, und führen Sie dann Upgrades nach einem Zeitplan durch. Das Verharren auf einer alten Version, bis sie entfernt wird, verwandelt eine geplante Änderung in einen Notfall.

Was, wenn der Agent nach einer Änderung einwandfrei funktioniert? Überprüfen Sie, anstatt anzunehmen. Die gefährlichen Ergebnisse sind diejenigen, die immer noch 200 zurückgeben, wie ein umbenanntes Feld, das stillschweigend verworfen wird. Eine Formprüfung sagt Ihnen, was ein erfolgreicher Lauf nicht kann.

Muss ich meine eigene API für Agenten anders versionieren? Nicht anders, aber strenger. Behandeln Sie neue erforderliche Felder, neue Enum-Werte und geänderte Standardwerte als brechend für Agenten-Konsumenten, auch wenn sie für typisierte Clients additiv sind, und kündigen Sie sie auf dieselbe Weise an.

Woher weiß ich, welche Agenten welche Endpunkte aufrufen? Aus Ihren Traces. Toolname plus Endpunkt pro Lauf ergibt die Abhängigkeitskarte und sagt Ihnen genau, wer von einer Veralterung betroffen ist. Unser Beitrag zum Tracing von Agenten-Tool-Aufrufen behandelt die Datensatzform.

Kann sich der Agent selbst an eine geänderte API anpassen? Manchmal, und Sie sollten sich nicht darauf verlassen. Ein Modell, das um ein fehlendes Feld herum improvisiert, erzeugt eine plausible Ausgabe, ohne dass ein Signal für einen Fehler vorliegt. Brechen Sie lautstark ab und beheben Sie stattdessen die Tools.

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen