Im vergangenen Jahr haben wir mit Teams zusammengearbeitet, die Large Language Model (LLM)-Agenten in verschiedenen Branchen entwickeln. Dabei haben wir festgestellt, dass die erfolgreichsten Implementierungen keine komplexen Frameworks oder Spezialbibliotheken verwenden, sondern nach einfachen, komponierbaren Mustern aufgebaut sind.
In diesem Beitrag berichten wir über unsere Erfahrungen bei der Arbeit mit Kunden und der Erstellung von Agenten und geben Entwicklern praktische Tipps für die Erstellung effizienter Agenten.
Intelligent/Agent/Agent hat im Folgenden die gleiche Bedeutung.
Was ist ein Agent?
Der Begriff "Agent" kann auf viele Arten definiert werden. Einige Kunden definieren Agenten als völlig autonome Systeme, die über einen längeren Zeitraum hinweg unabhängig arbeiten können und eine Vielzahl von Tools zur Ausführung komplexer Aufgaben verwenden. Andere verwenden den Begriff, um eher präskriptive Implementierungen zu beschreiben, die vordefinierten Arbeitsabläufen folgen. Bei Anthropic bezeichnen wir diese Varianten zusammenfassend als Agentenbasierte SystemeAber es gibt eine architektonische Herausforderung für die Arbeitsablauf im Gesang antworten in einer verantwortungsvollen Position für jemanden handeln Es wurden wichtige Unterscheidungen getroffen:
- Arbeitsablauf ist ein System, das LLMs und Werkzeuge durch vordefinierte Codepfade orchestriert.
- in einer verantwortungsvollen Position für jemanden handeln ist ein System, in dem das LLM seine eigenen Prozesse und den Einsatz von Werkzeugen dynamisch steuert, um die Kontrolle darüber zu behalten, wie die Aufgaben erledigt werden.
Im Folgenden werden diese beiden agentengestützten Systeme näher erläutert. In Anhang 1 ("Agenten in der Praxis") beschreiben wir zwei Bereiche, in denen der Einsatz dieser Systeme durch die Kunden besonders wertvoll war.
Wann (und wann nicht) Sie Proxys verwenden sollten
Bei der Entwicklung von Anwendungen mit LLM empfehlen wir, eine möglichst einfache Lösung anzustreben und die Komplexität nur bei Bedarf zu erhöhen. Dies kann bedeuten, überhaupt keine agentenbasierten Systeme zu entwickeln. Stellvertretende Systeme bieten oft einen Kompromiss aus Latenz und Kosten für eine bessere Aufgabenleistung, und Sie müssen abwägen, ob dieser Kompromiss lohnenswert ist.
Workflows bieten Vorhersagbarkeit und Konsistenz für genau definierte Aufgaben, wenn eine höhere Komplexität erforderlich ist, während Agenten besser abschneiden, wenn Flexibilität und modellgesteuerte Entscheidungsskalierung erforderlich sind. Für viele Anwendungen ist jedoch die Optimierung eines einzelnen LLM-Aufrufs in Kombination mit Abrufen und kontextbezogenen Beispielen oft ausreichend.
Wann und wie man den Rahmen nutzt
Es gibt eine Reihe von Rahmenwerken, die die Implementierung von agentenbasierten Systemen erleichtern, darunter
- LangGraph von LangChain;
- Amazon Bedrock's AI-Agent Rahmen.;
- NieteDer LLM-Workflow-Builder ist ein Drag-and-Drop-GUI-LLM-Workflow-Builder;
- PergamentEin weiteres GUI-Tool zum Erstellen und Testen komplexer Arbeitsabläufe.
Diese Frameworks erleichtern den Entwicklungsprozess, indem sie Standardaufgaben auf niedriger Ebene wie den Aufruf von LLMs, die Definition und das Parsing von Tools und die Verknüpfung von Aufrufen miteinander vereinfachen. Sie neigen jedoch dazu, zusätzliche Abstraktionsebenen hinzuzufügen, die die zugrundeliegenden Hinweise und Antworten verschleiern können, was die Fehlersuche erschwert. Dies kann auch den Ausschlag für eine höhere Komplexität geben, wenn in Wirklichkeit ein einfacheres Setup ausreicht.
Wir empfehlen Entwicklern, zunächst die LLM-API direkt zu verwenden: Viele Muster können mit wenigen Zeilen Code implementiert werden. Wenn Sie ein Framework verwenden, stellen Sie sicher, dass Sie den zugrunde liegenden Code verstehen. Falsche Annahmen über die zugrundeliegende Logik des Frameworks sind eine häufige Quelle für Client-Fehler.
Siehe unser Kochbuch für einige Beispielimplementierungen.
Bausteine, Arbeitsabläufe und Agenten
In diesem Abschnitt werden wir gängige Muster für agentenbasierte Systeme untersuchen, die wir in Produktionsumgebungen sehen. Wir beginnen mit dem Grundbaustein Enhanced LLM und steigern dann schrittweise die Komplexität von einfachen kombinatorischen Abläufen bis hin zu autonomen Agenten.
Bausteine: Erweitertes LLM
Der Grundbaustein des agentenbasierten Systems ist das erweiterte LLM, das erweiterte Funktionen wie Suche, Werkzeuge und Gedächtnis integriert. Unser derzeitiges Modell kann diese Funktionen proaktiv nutzen, indem es eigene Suchanfragen stellt, geeignete Werkzeuge auswählt und entscheidet, welche Informationen es speichert.
Wir empfehlen, sich auf zwei Schlüsselaspekte der Implementierung zu konzentrieren: die Anpassung dieser Funktionen an Ihren spezifischen Anwendungsfall und die Sicherstellung, dass sie eine einfach zu verwendende und gut dokumentierte Schnittstelle zum LLM bieten. Während diese Erweiterungen auf verschiedene Weise implementiert werden können, besteht ein Ansatz darin, unser kürzlich veröffentlichtes Model Context Protocol zu verwenden, das Entwicklern die Integration in das wachsende Ökosystem von Drittanbieter-Tools durch eine einfache clientseitige Implementierung ermöglicht.
Für den Rest dieses Papiers gehen wir davon aus, dass diese Verbesserungen bei jedem LLM-Aufruf zugänglich sind.
Workflow: Promptverkettung
Die Hinweiskette unterteilt die Aufgabe in eine Reihe von Schritten, wobei jeder Aufruf des Large Language Model (LLM) die Ausgabe des vorherigen Schritts verarbeitet. Sie können bei jedem Zwischenschritt verfahrenstechnische Prüfungen (siehe "Gate" in der Abbildung unten) hinzufügen, um sicherzustellen, dass der Prozess noch auf dem richtigen Weg ist.
Wann ist dieser Workflow zu verwenden?
Dieser Arbeitsablauf ist ideal, wenn sich die Aufgaben einfach und klar in feste Teilaufgaben aufteilen lassen. Das Hauptziel besteht darin, die Genauigkeit zu verbessern und gleichzeitig die Latenzzeit zu verringern, indem jeder LLM-Aufruf in überschaubare Aufgaben zerlegt wird.
Beispiele für die Anwendung der Cue-Kette:
- Erstellen Sie Marketingtexte und übersetzen Sie sie in verschiedene Sprachen.
- Schreiben Sie eine Gliederung des Dokuments, prüfen Sie, ob die Gliederung bestimmte Kriterien erfüllt, und schreiben Sie dann das Dokument auf der Grundlage der Gliederung.
Arbeitsablauf: Routing
Das Routing kategorisiert die Eingabe und leitet sie an eine spezielle Folgeaufgabe weiter. Dieser Arbeitsablauf ermöglicht die Trennung von Belangen und die Erstellung speziellerer Eingabeaufforderungen. Die Optimierung für einen Eingabetyp kann die Leistung für andere Eingaben beeinträchtigen, wenn dieser Arbeitsablauf nicht verwendet wird.
Wann ist dieser Workflow zu verwenden?
Routing-Workflows funktionieren gut, wenn komplexe Aufgaben verschiedene Kategorien haben, die getrennt verarbeitet werden müssen, und die Klassifizierung durch LLM oder herkömmlichere Klassifizierungsmodelle/-algorithmen genau gehandhabt werden kann.
Anwendbare Beispiele für das Routing:
- Leiten Sie verschiedene Arten von Kundendienstanfragen (allgemeine Fragen, Erstattungsanträge, technische Unterstützung) an verschiedene nachgelagerte Prozesse, Tipps und Tools weiter.
- Leiten Sie einfache/allgemeine Probleme an kleinere Modelle weiter (z. B. Claude 3.5 Haiku), während komplexe/unübliche Probleme an leistungsfähigere Modelle (z. B. Claude 3.5 Sonnet) weitergeleitet werden, um Kosten und Geschwindigkeit zu optimieren.
Arbeitsablauf: Parallelisierung (Parallelisierung)
LLMs können manchmal Aufgaben gleichzeitig verarbeiten, und ihre Ergebnisse werden programmatisch aggregiert. Es gibt zwei Hauptvarianten von parallelisierten Arbeitsabläufen:
- Aufteilung: Zerlegen Sie Aufgaben in unabhängige Teilaufgaben, die parallel laufen können.
- Abstimmen: Führen Sie dieselbe Aufgabe mehrmals aus, um unterschiedliche Ergebnisse zu erzielen.
Wann ist dieser Workflow zu verwenden?
Die Parallelisierung ist dann sinnvoll, wenn zerlegte Teilaufgaben parallel verarbeitet werden können, um die Geschwindigkeit zu erhöhen, oder wenn mehrere Perspektiven oder Versuche erforderlich sind, um ein zuverlässigeres Ergebnis zu erzielen. Bei komplexen Aufgaben mit mehreren Überlegungen ist es in der Regel besser, jede Überlegung durch einen separaten LLM-Aufruf zu bearbeiten und sich so auf jeden spezifischen Aspekt zu konzentrieren.
Beispiele für die Anwendung der Parallelisierung:
- Aufteilung:
- Implementieren Sie Schutzmechanismen, bei denen eine Modellinstanz Benutzeranfragen bearbeitet und die andere auf unangemessene Inhalte oder Anfragen prüft. Dies ist in der Regel besser, als wenn ein und derselbe LLM-Aufruf sowohl die Schutzmaßnahmen als auch die Kernantwort bearbeitet.
- Automatisierte Bewertung der LLM-Leistung, wobei jeder LLM-Aufruf einen anderen Aspekt der Leistung des Modells für einen bestimmten Hinweis bewertet.
- Abstimmen:
- Überprüfung des Codes auf Schwachstellen, mehrfache Überprüfung des Codes durch verschiedene Eingabeaufforderungen und Kennzeichnung der gefundenen Probleme.
- Bewertung von Inhalten auf Unangemessenheit, Verwendung mehrerer Aufforderungen zur Bewertung verschiedener Aspekte oder Erfordernis unterschiedlicher Schwellenwerte für die Abfrage, um falsch positive Ergebnisse und Auslassungen auszugleichen.
Arbeitsablauf: Orchestrator-Arbeiter
In einem Koordinator-Arbeiter-Workflow zerlegt der zentrale LLM dynamisch Aufgaben, delegiert sie an die Arbeiter-LLMs und fasst deren Ergebnisse zusammen.
Wann ist dieser Workflow zu verwenden?
Dieser Arbeitsablauf ist sehr gut geeignet, wenn die Aufgabe komplex ist und die erforderlichen Teilaufgaben nicht vorhersehbar sind (z. B. bei der Codierung, wo die Anzahl der zu ändernden Dateien und die Art der Änderungen in jeder Datei von der spezifischen Aufgabe abhängen können). Ähnlich wie bei parallelisierten Workflows, aber der Hauptunterschied liegt in der Flexibilität - Teilaufgaben sind nicht vordefiniert, sondern werden vom Koordinator auf der Grundlage spezifischer Eingaben entschieden.
Beispiele für den Einsatz von Koordinatoren und Arbeitnehmern:
- Kodierungsprodukte, die komplexe Änderungen an mehreren Dateien gleichzeitig vornehmen.
- Eine Suchaufgabe, die das Sammeln und Analysieren von Informationen aus mehreren Quellen beinhaltet, um relevante Informationen zu finden.
Arbeitsablauf: Auswerter-Optimierer
Im Arbeitsablauf zwischen Bewerter und Optimierer erzeugt ein Aufruf des Large Language Model (LLM) die Antwort, während der andere die Bewertung und das Feedback liefert und so eine Schleife bildet.
Wann ist dieser Workflow zu verwenden? Der Arbeitsablauf ist besonders effektiv, wenn wir klare Bewertungskriterien haben und die iterative Optimierung einen messbaren Wert liefert. Zwei zutreffende Merkmale sind erstens, dass LLM-Antworten erheblich verbessert werden können, wenn Menschen Feedback geben, und zweitens, dass LLM in der Lage ist, solches Feedback zu geben. Dies ist vergleichbar mit dem iterativen Schreibprozess, den ein menschlicher Autor beim Verfassen eines ausgefeilten Dokuments durchlaufen könnte.
Beispiele für die Anwendbarkeit von Evaluatoren und Optimierern:
- Literarische Übersetzungen, bei denen der LLM-Übersetzer anfangs vielleicht nicht alle Nuancen erfasst, der LLM-Bewerter aber nützliche Kritiken liefern kann.
- Komplexe Suchaufgaben, die mehrere Such- und Analysedurchgänge erfordern, um umfassende Informationen zu sammeln, wobei der Bewerter entscheidet, ob weitere Recherchen erforderlich sind.
Intelligentsia/Agenten
Agenten tauchen allmählich in der Produktion auf, da LLM in Bezug auf Schlüsselfähigkeiten wie das Verstehen komplexer Eingaben, das schlussfolgernde Denken und die Planung, die zuverlässige Verwendung von Werkzeugen und die Wiederherstellung nach Fehlern ausgereift ist. Agenten beginnen ihre Arbeit entweder mit Anweisungen von einem menschlichen Benutzer oder durch interaktive Diskussionen. Wenn die Aufgabe klar ist, plant und arbeitet der Agent selbstständig, wobei er möglicherweise zum Menschen zurückkehrt, um weitere Informationen zu erhalten oder eine Entscheidung zu treffen. Während der Ausführung muss der Agent bei jedem Schritt "echte Informationen" aus der Umgebung erhalten (z. B. Ergebnisse von Toolaufrufen oder Codeausführung), um seinen Fortschritt zu bewerten. Der Agent kann an Kontrollpunkten oder beim Auftreten von Hindernissen eine Pause einlegen, um menschliches Feedback einzuholen. Aufgaben enden in der Regel mit der Fertigstellung, enthalten aber oft Stopp-Bedingungen (z. B. maximale Anzahl von Iterationen), um die Kontrolle zu behalten.
Agenten können komplexe Aufgaben bewältigen, aber ihre Implementierungen sind in der Regel relativ einfach. Oft handelt es sich nur um große Sprachmodelle, die auf Feedback-Schleifen für die Verwendung des Werkzeugs basieren. Daher muss die Entwicklung eines Werkzeugsatzes und seiner Dokumentation klar und gut durchdacht sein. In Anhang 2 ("Hint Engineering für Tools") werden bewährte Verfahren für die Entwicklung von Tools näher erläutert.
Wann sollten Proxys verwendet werden? Agenten können für Probleme mit offenem Ende eingesetzt werden, bei denen die Anzahl der erforderlichen Schritte nicht vorhergesagt werden kann und bei denen feste Pfade nicht fest kodiert werden können.LLM kann mehrere Runden von Operationen erfordern, so dass Sie ein gewisses Vertrauen in seine Entscheidungsfähigkeit haben müssen. Die Autonomie des Agenten macht ihn gut geeignet für die Skalierung von Aufgaben in einer vertrauenswürdigen Umgebung.
Die Autonomie der Agenten ist mit höheren Kosten und dem potenziellen Risiko einer Fehlerhäufung verbunden. Wir empfehlen umfangreiche Tests in einer Sandbox-Umgebung mit entsprechenden Sicherheitsmaßnahmen.
Beispiel einer Proxy-Anwendung:
Die folgenden Beispiele stammen aus unseren aktuellen Implementierungen:
- Coding Agent zur Lösung von SWE-Bench-Aufgaben, bei denen mehrere Dateien entsprechend der Aufgabenbeschreibung bearbeitet werden müssen;
- unser Realisierung der Referenz "Computernutzung"In diesem Fall verwendete Claude einen Computer, um die Aufgabe zu erledigen.
Kombinieren Sie diese Modelle und passen Sie sie an
Diese Bausteine sind nicht obligatorisch. Sie sind allgemeine Muster, die Entwickler für verschiedene Anwendungsfälle anpassen und kombinieren können. Wie bei jeder LLM-Funktion liegt der Schlüssel zum Erfolg darin, die Leistung zu messen und die Implementierung zu wiederholen. Auch hier gilt: Sie sollten eine zusätzliche Komplexität nur dann in Betracht ziehen, wenn sie die Ergebnisse deutlich verbessert.
Abstracts
Beim Erfolg im Bereich der Modellierung großer Sprachen (LLM) geht es nicht darum, das komplexeste System zu bauen, sondern das System, das Ihren Bedürfnissen am besten entspricht. Beginnen Sie mit einfachen Hinweisen, optimieren Sie durch gründliche Evaluierung und fügen Sie mehrstufige Agentensysteme nur dann hinzu, wenn einfache Lösungen Ihren Anforderungen nicht genügen.
Bei der Implementierung von Vollmachten folgen wir drei Grundprinzipien:
- Beibehaltung des Agentendesigns Einfachheit .
- Setzen Sie Prioritäten bei den Planungsschritten, indem Sie deutlich machen, dass der Agent Transparenz .
- Durch detaillierte Tools Dokumentation und Prüfung Gestalten Sie Ihre Agent-Computer-Schnittstelle (ACI) sorgfältig.
Frameworks können Ihnen den schnellen Einstieg erleichtern, aber zögern Sie nicht, die Abstraktionsebenen zu reduzieren und mit Basiskomponenten zu arbeiten, wenn Sie in die Produktion gehen. Wenn Sie diese Grundsätze befolgen, können Sie Agenten erstellen, die nicht nur leistungsstark, sondern auch zuverlässig und wartbar sind und denen die Benutzer vertrauen.
ein Dankeschön-Schreiben
Dieser Artikel wurde von Erik Schluntz und Barry Zhang geschrieben. Diese Arbeit basiert auf unseren Erfahrungen bei der Entwicklung von Agenten bei Anthropic und den wertvollen Erkenntnissen unserer Kunden, für die wir dankbar sind.
Anhang 1: Praktische Anwendungen von Proxies
Unsere Arbeit mit unseren Kunden hat zwei besonders vielversprechende Anwendungen von KI-Agenten ergeben, die den praktischen Wert der oben beschriebenen Muster demonstrieren. Diese Anwendungen zeigen, dass Agenten am wertvollsten bei Aufgaben sind, die eine Kombination aus Dialog und Aktion erfordern, klare Erfolgskriterien haben, Feedback-Schleifen unterstützen und eine effektive menschliche Aufsicht ermöglichen.
A. Kundenbetreuung
Der Kundensupport kombiniert die vertraute Chatbot-Benutzeroberfläche mit erweiterten Funktionen für die Toolintegration. Dieses Szenario ist perfekt für offenere Agenten als:
- Unterstützung von Interaktionen, die auf natürliche Weise einem Dialogfluss folgen und gleichzeitig den Zugang zu externen Informationen und die Ausführung von Aktionen erfordern;
- Es können Tools zur Extraktion von Kundendaten, Bestellhistorie und Wissensdatenbankartikeln integriert werden;
- Vorgänge (wie die Ausstellung von Erstattungen oder die Aktualisierung von Arbeitsaufträgen) können programmatisch abgewickelt werden;
- Der Erfolg lässt sich eindeutig an benutzerdefinierten Lösungen messen.
Mehrere Unternehmen haben die Tragfähigkeit dieses Ansatzes durch ein nutzungsbasiertes Preismodell bewiesen, bei dem nur erfolgreich gelöste Fälle in Rechnung gestellt werden, was das Vertrauen in die Effizienz der Agentur unterstreicht.
B. Programmierer
Im Bereich der Softwareentwicklung hat sich ein erhebliches Potenzial für LLM-Funktionen gezeigt, die sich von der Code-Vervollständigung bis zur autonomen Problemlösung entwickeln. Agenten sind besonders effektiv, weil:
- Code-Lösungen können durch automatisierte Tests überprüft werden;
- Die Agenten können die Testergebnisse als Feedback nutzen, um die Lösung zu verbessern;
- Die Problembereiche sind klar und strukturiert;
- Die Qualität des Outputs kann objektiv gemessen werden.
In unserer Implementierung war der Proxy in der Lage, die Beschreibungen der Pull-Anfragen individuell auf der Grundlage der SWE-Bank Geprüft Tatsächliche GitHub-Probleme beim Benchmarking. Auch wenn automatisierte Tests zur Validierung der Funktionalität beitragen können, ist eine manuelle Überprüfung dennoch unerlässlich, um sicherzustellen, dass die Lösung den allgemeinen Systemanforderungen entspricht.
Anhang 2: Tooltip-Projekt
Unabhängig von der Art des Agentensystems, das Sie entwickeln, sind Werkzeuge wahrscheinlich ein wichtiger Bestandteil Ihres Agenten. Werkzeuge ermöglichen Claude die Interaktion mit externen Diensten und APIs, indem sie deren genaue Struktur und Definitionen angeben. Wenn Claude antwortet und ein Tool aufrufen will, enthält die API-Antwort eine Block für den Werkzeugeinsatz . Werkzeugdefinitionen und -spezifikationen sollten ebenso wie allgemeine Aufforderungen dem "Prompt Engineering" unterzogen werden. In diesem Anhang wird kurz beschrieben, wie Werkzeuge mit Hinweisen versehen werden können.
In der Regel gibt es mehrere Möglichkeiten, denselben Vorgang anzugeben. Sie können beispielsweise die Dateibearbeitung angeben, indem Sie diff schreiben, oder die gesamte Datei neu schreiben. Für eine strukturierte Ausgabe können Sie Code in Markdown oder Code in JSON zurückgeben. In der Softwareentwicklung sind diese Unterschiede kosmetischer Natur und können ohne Verlust ineinander umgewandelt werden. Einige Formate sind jedoch für LLM schwieriger zu schreiben als andere. Zum Beispiel muss man beim Schreiben von diff wissen, wie viele Zeilen in einem Blockkopf geändert werden, bevor neuer Code geschrieben wird. Das Schreiben von Code in JSON (im Gegensatz zu Markdown) erfordert zusätzliches Escaping von Zeilenumbrüchen und Anführungszeichen.
Im Folgenden werden Empfehlungen für das Format des Instruments gegeben:
- Geben Sie dem Modell genügend Wertmarken "Denken" Sie nach, damit Sie nicht in einem Trott steckenbleiben.
- Halten Sie die Formatierung nahe an dem Text, den das Modell natürlich im Internet sehen würde.
- Vergewissern Sie sich, dass das Format nicht mit zusätzlichen Aufgaben belastet wird, wie z. B. der exakten Berechnung von Tausenden von Codezeilen oder dem Escapen von Code, den es schreibt.
Als Faustregel gilt, dass man sich überlegen sollte, wie viel Aufwand in die Mensch-Computer-Schnittstelle (HCI) fließt, und dass man auch die Erstellung guter in einer verantwortungsvollen Position für jemanden handeln -Gleicher Aufwand wird in die Computerschnittstelle (ACI) investiert. Im Folgenden werden einige Vorschläge genannt:
- Denken Sie in Form von Modellen. Ist es aufgrund der Beschreibung und der Parameter offensichtlich, dieses Werkzeug zu verwenden? Wenn es eine sorgfältige Überlegung erfordert, dann gilt dies wahrscheinlich auch für das Modell. Eine gute Werkzeugdefinition enthält in der Regel Anwendungsbeispiele, Grenzfälle, Anforderungen an das Eingabeformat und klare Grenzen zu anderen Werkzeugen.
- Wie können Sie den Namen oder die Beschreibung eines Parameters ändern, um ihn deutlicher zu machen? Betrachten Sie dies als das Verfassen großartiger Dokumentationsnotizen (docstring) für die Nachwuchsentwickler in Ihrem Team. Dies ist besonders wichtig, wenn viele ähnliche Tools verwendet werden.
- Testen Sie, wie das Modell Ihre Werkzeuge verwendet: Lassen Sie viele Beispieleingaben auf unserer Workbench laufen, beobachten Sie, welche Fehler das Modell macht, und iterieren Sie.
- Poka-yoke Ihre Werkzeuge. Ändern Sie die Parameter, damit es schwieriger wird, Fehler zu machen.
Bei der Erstellung von Agenten für SWE-bench haben wir mehr Zeit auf die Optimierung der Tools als auf die Optimierung der Eingabeaufforderung insgesamt verwendet. Wir haben zum Beispiel festgestellt, dass Werkzeuge, die relative Dateipfade verwenden, fehleranfällig sind, wenn der Agent aus dem Stammverzeichnis verschoben wird. Um dies zu beheben, änderten wir das Tool so, dass es immer absolute Dateipfade verlangte - wir stellten fest, dass das Modell mit diesem Ansatz keinerlei Probleme hatte.