Tool Calling: Systemdesign
Trennt Modell-Tool-Vorschläge von der Autorisierung: Jeder Aufruf erfordert eine Richtliniengenehmigung, hochwirksame Mutationen erfordern eine an die Aktion gebundene Genehmigung, und Idempotenz verhindert doppelte Ausführung ohne Erteilung der Erlaubnis.
Paketstatus: Referenzkontext bereit zur menschlichen Überprüfung. Der Vertrag und die Testszenarien sind vollständig, aber es wird nicht behauptet, dass eine übernehmende Implementierung diese bestanden hat.
Entscheidung
Das Modell kann einen Toolnamen und Argumente vorschlagen; eine Richtlinien-Engine entscheidet, ob der Aufruf ausgeführt wird. Lese-Tools, die den dauerhaften Zustand nicht ändern können, dürfen nach ACL-Prüfungen ausgeführt werden. Jede Mutation erfordert eine Sitzungsauthorisierung. Hochwirksame, irreversible, finanzielle, administrative oder extern sichtbare Mutationen erfordern zusätzlich ein nicht abgelaufenes Genehmigungsartefakt, das genau an den Akteur, das Tool, das Ziel und die normalisierten Argumente gebunden ist. Ein Idempotenzschlüssel dient nur dem Replay-Schutz: Er kann eine bereits autorisierte Operation sicher wiederholen, gewährt aber niemals Autorität oder ersetzt eine Genehmigung. Der handelnde Benutzer, Mandant und die Rollen stammen aus dem authentifizierten Anforderungskontext, niemals aus vom Modell generierten Feldern.
Umfang
- Agent-Tool-Dispatch im Backend: Vorschlag, Autorisierung, Bestätigung, Trockenlauf, Idempotenz und Audit.
- Seiteneffektverursachende Tools wie Tickets, Rückerstattungen, Deployments oder Datensatzaktualisierungen.
- Bindung der Tool-ACL an die menschliche Person, die die Agentensitzung besitzt.
Außerhalb dieses Blocks
- Prompt-Injection-Inhaltsfilter für abgerufene Dokumente.
- Frontend-Streaming-Abbruch von bereits angezeigten Tokens.
Vertrag
- Jeder Toolaufruf speichert
proposed_by: modelundauthorized_byals Richtlinienentscheidung zur Sitzungsidentität. - Tools mit
mutation: truewerden nur nach Sitzungsauthorisierung ausgeführt. Wenn die Richtlinie die Aktion als hochwirksam klassifiziert, ist zusätzlich eine an die Aktion gebundeneapproval_iderforderlich. - Trockenlauf ist für mutierende Tools obligatorisch, wenn
require_dry_runwahr ist; das Ergebnis des Trockenlaufs ist das, was der Mensch bestätigt. - Argumente, die einen anderen Benutzer oder Mandanten als die Sitzung benennen, werden als
identity_spoofabgelehnt. - Die Tool-ACL wird auf den Sitzungsprinzipal gegen Ressourcen-IDs nach Argument-Schema-Validierung ausgewertet.
- Ein Idempotenzschlüssel wird nur akzeptiert, wenn derselbe Akteur, dasselbe Tool, dasselbe Ziel und derselbe Anforderungs-Fingerabdruck wie beim autorisierten Originalaufruf vorliegen. Er spielt das gespeicherte Ergebnis erneut ab und autorisiert niemals einen ersten Aufruf selbst.
Implementierung
- Mutation Flags, Bestätigungspolitik und Trockenlaufunterstützung im Toolkatalog halten, nicht im Prompt-Text.
- Kurzlebige Genehmigungsartefakte ausgeben, die den Trockenlauf-Snapshot hashen und Akteur, Tool, Ziel, Richtlinienversion und normalisierte Argumente binden, sodass ein Argumenttausch die Genehmigung nicht wiederverwenden kann.
Fehlerbehandlung
- Richtlinienverweigerung gibt
tool_forbiddenzurück, ohne den Provider aufzurufen. - Abgelaufene Genehmigungsartefakte führen zu einem geschlossenen Fehler. Nach einem unsicheren Timeout wird die Originaloperation abgeglichen, bevor mit demselben Idempotenzschlüssel und unverändertem Anforderungs-Fingerabdruck erneut versucht wird.
Verifikation
- Versuch einer Mutation mit einer vom Modell gelieferten Benutzer-ID und Erwartung von
identity_spoof. - Bestätige einen Trockenlauf, ändere Argumente und erwarte eine Bestätigungsmismatch; spiele denselben Schlüssel erneut ab und stelle einen Seiteneffekt fest.
Die ausführbaren Beispiele in diesem Paket sind Fixtures und Akzeptanzverträge. Führen Sie
python tools/validate.py vom Wurzelverzeichnis der Sammlung aus, um Paketstruktur und Metadaten zu prüfen; implementieren und führen Sie dann die Szenarien im Ziel-Repository aus.
Annahmen zur Übernahme
- Namen und numerische Werte in
example.yamlsind ein Übernahmeprofil, keine universellen Standardwerte. - Das übernehmende Team muss Akteure, Datenklassen, Fehler-Vokabular und Eigentum auf sein System abbilden.
Referenzen
- OWASP AI Agent Security Cheat Sheet trennt Autorisierung, menschliche Genehmigung und Replay-Schutz für hochwirksame Aktionen.