existieren Manus
Zu Beginn des Projekts stand das Team vor einer kritischen Entscheidung: Sollte ein End-to-End-Agentenmodell auf der Grundlage von Open-Source-Modellen trainiert werden oder sollten die leistungsstarken "Kontext-Lernfähigkeiten" modernster Modelle für den Aufbau des Agenten genutzt werden?
Spulen Sie ein Jahrzehnt zurück, und Entwickler hatten im Bereich der Verarbeitung natürlicher Sprache nicht einmal eine Wahlmöglichkeit. In den Tagen, als dies noch Teil der BERT
Ära muss jedes Modell wochenlang für neue Aufgaben feinabgestimmt und bewertet werden. Für eine Anwendung, die sich schnell weiterentwickeln will und erst noch die Markttauglichkeit des Produkts finden muss, kann diese langsame Feedbackschleife fatal sein. Dies war eine harte Lektion, die wir beim letzten Startup gelernt haben, als Modelle für die offene Informationsextraktion und die semantische Suche von Grund auf trainiert wurden, aber da die GPT-3
im Gesang antworten Flan-T5
der Entstehung dieser Selbstforschungsmodelle wurde fast über Nacht beseitigt. Ironischerweise waren es diese neuen Modelle, die die Ära des kontextuellen Lernens einleiteten und den Weg für einen völlig neuen Weg wiesen.
Diese Lektion hat die Manus
Die Entscheidung ist klar: Setzen Sie auf kontextbezogene Technik. Dadurch wird der Produktverbesserungszyklus von Wochen auf Stunden reduziert und das Produkt selbst bleibt "orthogonal" zur Entwicklung des zugrunde liegenden großen Modells - wenn der Fortschritt des Modells eine steigende Flut ist, dann ist es eine steigende Flut, und das Produkt selbst ist eine steigende Flut, und das Produkt selbst ist eine steigende Flut.Manus
Ein Boot auf dem Wasser zu sein, nicht ein am Meeresboden verankerter Mast.
Die kontextuelle Technik ist jedoch alles andere als reibungslos. Sie ist eher eine experimentelle Wissenschaft.Manus
Das Agenten-Framework wurde viermal komplett überarbeitet, jedes Mal, wenn das Team eine bessere Methode zur Gestaltung des Kontexts entdeckte. Dieser manuelle Prozess, eine Mischung aus architektonischer Suche, Debugging von Cue-Wörtern und empirischem Rätselraten, wurde vom Team als "Stochastic Graduate Descent" bezeichnet, was zwar unelegant, aber effektiv ist.
In diesem Beitrag wird die optimale lokale Lösung vorgestellt, die das Team durch "SGD" erreicht hat. Wenn Sie Ihren eigenen KI-Agenten entwickeln, werden Ihnen diese Grundsätze hoffentlich helfen, schneller zu konvergieren.
Entwerfen rund um den KV-Cache
Wenn nur ein Indikator ausgewählt werden kann, dann KV
Die Cache-Trefferrate ist zweifellos die wichtigste Kennzahl für die Messung produktionsfähiger KI-Agenten, da sie sich direkt auf die Latenzzeit und die Kosten auswirkt. Um dies zu verstehen, müssen Sie zunächst wissen, wie ein typischer Agent arbeitet.
Nach Erhalt der Benutzereingaben führt der Agent die Aufgabe durch eine Reihe von Werkzeugaufrufen aus. In jeder Iteration wählt das Modell ein Verhalten aus einem vordefinierten Aktionsraum aus, der auf dem aktuellen Kontext basiert, der in der Umgebung definiert ist (z. B. die Manus
der VM-Sandbox) wird in der VM-Sandbox ausgeführt, um eine Beobachtung zu erzeugen. Anschließend werden das Verhalten und die Beobachtung an den Kontext angehängt und bilden den Input für die nächste Iteration. Diese Schleife wird fortgesetzt, bis die Aufgabe abgeschlossen ist.
Es ist klar, dass der Kontext mit jedem Schritt wächst, während die Ausgabe - normalerweise ein strukturierter Funktionsaufruf - relativ kurz ist. Dies führt zu einem starken Ungleichgewicht im Verhältnis zwischen Eingabe- und Ausgabe-Token für den Agenten, im Gegensatz zu einem normalen Chatbot. In der Manus
Das Verhältnis liegt im Durchschnitt bei 100:1.
Glücklicherweise können Kontexte mit demselben Präfix die Vorteile der KV
Caching-Mechanismus.KV
Die Zwischenspeicherung reduziert die Zeit für die erste Token-Generierung (TTFT) und die Inferenzkosten erheblich, da die berechneten Schlüssel-Wert-Paare gespeichert werden und der Rechenaufwand für die erneute Verarbeitung derselben Präfixe drastisch reduziert wird. Dies bedeutet eine enorme Kosteneinsparung, unabhängig davon, ob Sie ein selbst gehostetes Modell verwenden oder eine Inferenz-API aufrufen. Zum Beispiel Claude Sonnet
Beispielsweise betragen die Kosten für ein zwischengespeichertes Eingabe-Token 0,30 $ pro Million Token, während die Kosten für ein nicht zwischengespeichertes Token 3 $ pro Million Token betragen, was einen zehnfachen Unterschied bedeutet.
Aus einer kontextbezogenen technischen Perspektive ist die Verbesserung KV
Für die Zwischenspeicherung von Treffern sind einige wichtige Verfahren zu beachten:
1. die Stabilität der Präfixe von Stichwortwörtern aufrechterhalten. Aufgrund des autoregressiven Charakters des großen Sprachmodells kann ein Unterschied in auch nur einem Token dazu führen, dass alle Caches nach diesem Token ungültig werden. Ein häufiger Fehler ist die sekundengenaue Angabe von Zeitstempeln am Anfang der Systemaufforderung. Dadurch kann das Modell zwar die aktuelle Zeit angeben, aber es zerstört auch die Cache-Treffer vollständig.
2. den Kontext "additiv" zu gestalten. Vermeiden Sie es, frühere Verhaltensweisen oder Beobachtungen zu verändern. Stellen Sie außerdem sicher, dass der Serialisierungsprozess deterministisch ist. Viele Programmiersprachen und Bibliotheken garantieren keine stabile Reihenfolge der Schlüssel bei der Serialisierung von JSON-Objekten, was zu einem stillen Bruch des Cache führen kann.
3. markieren Sie bei Bedarf explizit Cache-Haltepunkte. Einige Modellanbieter oder Inferenz-Frameworks unterstützen kein automatisches inkrementelles Präfix-Caching und erfordern das manuelle Einfügen von Cache-Haltepunkten in den Kontext. Berücksichtigen Sie beim Setzen von Haltepunkten die mögliche Verfallszeit des Caches und stellen Sie zumindest sicher, dass der Haltepunkt das Ende der Systemaufforderung enthält.
Zusätzlich, wenn Sie vLLM
usw. stellen Sie sicher, dass die Zwischenspeicherung von Präfixen/Hinweisen aktiviert ist und dass Anfragen mithilfe von Techniken wie Sitzungs-IDs konsistent über verteilte Arbeitsknoten weitergeleitet werden.
Maskieren statt entfernen
Da die Agenten immer leistungsfähiger werden, wird ihr Verhaltensbereich natürlich immer komplexer, und die Zahl der Werkzeuge explodiert förmlich. Die jüngste Popularität des Model Context Protocol (MCP) gießt noch Öl ins Feuer. Sobald Sie den Benutzern die Möglichkeit geben, Tools zu konfigurieren, wird es immer Hunderte von seltsamen und verrückten Tools geben, die jemand in Ihren sorgfältig kuratierten Verhaltensbereich einfügen kann. Infolgedessen ist es wahrscheinlicher, dass die Modelle das falsche Werkzeug wählen oder einen ineffizienten Weg einschlagen, und ein schwer bewaffneter Agent wird "dümmer".
Eine unmittelbare Reaktion besteht darin, einen dynamischen Verhaltensraum zu entwerfen, z. B. unter Verwendung von Elementen wie RAG
(Retrieval Enhancement Generation)-Technologie ein On-Demand-Ladetool.Manus
Dieser Ansatz wurde ebenfalls ausprobiert, aber die Schlussfolgerung aus den Experimenten ist eindeutig: Das dynamische Hinzufügen und Entfernen von Werkzeugen in der Mitte einer Iteration sollte vermieden werden, wenn es nicht unbedingt notwendig ist. Hierfür gibt es zwei Gründe:
(1) Werkzeugdefinitionen befinden sich in der Regel am Anfang des Kontextes. In den meisten großen Sprachmodellen werden die Werkzeugdefinitionen so serialisiert, dass sie den Systemhinweisen unmittelbar folgen. Daher haben alle Änderungen zur Folge, dass alle nachfolgenden Verhaltensweisen und Beobachtungen des KV
Invalidierung des Cache.
(2) Modelle können verwirrend sein. Modelle können verwirrt werden, wenn frühere Verhaltensweisen und Beobachtungen sich auf Werkzeuge beziehen, die im aktuellen Kontext nicht mehr existieren. Ohne die Dekodierung von Beschränkungen führt dies häufig zu Formatierungsfehlern oder das Modell halluziniert nicht existierende Werkzeugaufrufe.
Um dieses Problem zu lösen.Manus
entfernt das Werkzeug nicht, sondern verwendet einen kontextabhängigen Zustandsautomaten zur Verwaltung der Werkzeugverfügbarkeit. Er verhindert bzw. zwingt das Modell, bestimmte Aktionen auf der Grundlage des aktuellen Zustands zu wählen, indem er die Logits eines bestimmten Tokens während der Dekodierungsphase maskiert (verdeckt).
In der Praxis unterstützen die meisten Modellanbieter und Inferenz-Frameworks irgendeine Form der Vorbelegung von Antworten, die es ermöglicht, den Verhaltensraum einzuschränken, ohne die Werkzeugdefinition zu ändern. Beispiel: NousResearch
(in Form eines Nominalausdrucks) Hermes
Format als Beispiel gibt es in der Regel drei Modi für den Funktionsaufruf:
- Automatisch (Auto): Das Modell kann selbst entscheiden, ob es die Funktion aufruft oder nicht. Durch Vorbelegung der
<|im_start|>assistant
Verwirklichung. - Erforderlich: Das Modell muss eine Funktion aufrufen, aber es gibt keine Einschränkung, welche Funktion genau aufgerufen werden soll. Durch Vorbelegung der
<|im_start|>assistant<tool_call>
Verwirklichung. - Spezifiziert: Das Modell muss eine Funktion in der angegebenen Teilmenge aufrufen. Dies wird erreicht, indem der Name der Funktion an den Anfang gestellt wird, z. B.
<|im_start|>assistant<tool_call>{"name": “browser_
.
Mit diesem Mechanismus ist es einfach, die Aktionsauswahl durch Maskierung von Token-Logits einzuschränken. Wenn der Benutzer zum Beispiel eine neue Eingabe macht, wird dieManus
sofort reagieren müssen, anstatt die Aktion auszuführen. Das Team hat auch bewusst Aktionsnamen mit einheitlichen Präfixen entworfen, zum Beispiel beginnen alle Browser-Tools mit browser_
beginnt mit dem Kommandozeilenprogramm, das mit shell_
starten. Dies macht es einfach, einen Agenten zu zwingen, in einem bestimmten Zustand nur aus einem bestimmten Toolset auszuwählen, ohne einen zustandsabhängigen Logits-Handler verwenden zu müssen.
Diese Entwürfe stellen sicher, dass auch bei modellgesteuerten Architekturen dieManus
Der Zyklus der Proxys bleibt stabil.
Verwendung des Dateisystems als Kontext
Moderne, hochmoderne große Sprachmodelle bieten 128K oder noch größere Kontextfenster, aber in realen Agentenanwendungsszenarien ist dies oft nicht ausreichend und wird manchmal sogar zu einer Belastung. Es gibt drei Hauptschmerzpunkte:
1. die Beobachtungen können sehr groß sein. Wenn Agenten mit unstrukturierten Daten wie Webseiten, PDFs usw. interagieren, ist es leicht möglich, das Limit für die Kontextlänge zu überschreiten.
(2) Die Leistung des Modells nimmt mit zunehmender Kontextlänge ab. Selbst wenn sie technisch unterstützt werden, lässt die Leistung der Modelle ab einer bestimmten Länge nach.
3. hohe Kosten für lange Vorleistungen. Selbst bei der Zwischenspeicherung von Präfixen müssen die Entwickler immer noch für die Übertragung und Vorbelegung jedes Tokens bezahlen.
Um diese Probleme zu bewältigen, verwenden viele Proxy-Systeme Strategien zur Kontextkürzung oder Komprimierung. Eine zu aggressive Komprimierung führt jedoch unweigerlich zu Informationsverlusten. Dies ist ein grundsätzliches Problem: Es liegt in der Natur eines Agenten, seinen nächsten Schritt auf der Grundlage aller vorherigen Zustände vorherzusagen, und man kann nicht zuverlässig vorhersagen, welche Beobachtung zehn Schritte weiter vorne später entscheidend sein wird. Logischerweise ist jede irreversible Kompression mit einem Risiko verbunden.
Deshalb.Manus
Stellen Sie sich das Dateisystem als den ultimativen Kontext vor: Es hat eine unendliche Kapazität, ist von Natur aus beständig und kann von Agenten direkt manipuliert werden. Das Modell lernt, Dateien bei Bedarf zu lesen und zu schreiben und nutzt das Dateisystem nicht nur als Speicher, sondern auch als strukturierten externen Speicher.
Manus
Die Komprimierungsstrategie ist so konzipiert, dass sie immer wiederherstellbar ist. So kann beispielsweise der Inhalt einer Webseite aus dem Kontext entfernt werden, solange die URL erhalten bleibt; der Inhalt eines Dokuments kann weggelassen werden, solange der Dateipfad in der Sandbox verbleibt. Dies ermöglicht die Manus
Die Länge von Kontexten kann effektiv reduziert werden, ohne dass Informationen dauerhaft verloren gehen.
Ein interessanter Gedanke bei der Entwicklung dieser Funktion war: Wie kann ein Zustandsraummodell (SSM) in einer Agentenumgebung effizient funktionieren? Mit dem Transformer
Im Gegensatz zu SSMs mangelt es SSMs an globaler Aufmerksamkeit und sie haben Schwierigkeiten, mit langen Backtracking-Abhängigkeiten umzugehen. Wenn sie jedoch ein dateibasiertes Gedächtnis beherrschen, d. h. den langfristigen Zustand externalisieren, anstatt ihn im Kontext zu halten, dann könnten ihre Geschwindigkeit und Effizienz eine ganz neue Klasse von Agenten eröffnen. An diesem Punkt könnten agentenbasierte SSMs die wahren Nachfolger der neuronalen Turing-Maschinen werden.
Manipulation der Aufmerksamkeit durch "Nacherzählung".
Wenn Sie Folgendes verwendet haben Manus
Sie werden ein interessantes Phänomen bemerken: Bei der Bewältigung komplexer Aufgaben neigt sie dazu, eine todo.md
dokumentieren und die erledigten Aufgaben nach und nach aktualisieren und abhaken, je nachdem, wie die Aufgabe voranschreitet.
Dabei handelt es sich nicht einfach um ein anthropomorphes Verhalten, sondern um einen ausgeklügelten Mechanismus der Aufmerksamkeitsmanipulation.
existieren Manus
in dem eine typische Aufgabe im Durchschnitt etwa 50 Werkzeugaufrufe erfordert, was ein ziemlich langer Zyklus ist. Da Manus
Wenn man sich bei der Entscheidungsfindung auf große Sprachmodelle stützt, kann man bei langen Kontexten oder komplexen Aufgaben leicht vom Weg abkommen oder frühe Ziele vergessen.
Durch das ständige Überarbeiten der Aufgabenliste wird dieManus
Dies ist gleichbedeutend mit einer "Neuformulierung" des Kernziels am Ende des Kontextes. Dadurch wird der globale Plan in die unmittelbare Aufmerksamkeitsspanne des Modells gerückt, wodurch das "lost-in-the-middle"-Problem vermieden und die Zielabweichung verringert wird. So wird die natürliche Sprache genutzt, um die Aufmerksamkeit des Modells auf das Aufgabenziel zu lenken, ohne dass die Architektur geändert werden muss.
Aufzeichnung von Misserfolgen
Agenten machen Fehler. Das ist kein Makel, sondern eine Tatsache. Sprachmodelle erzeugen Illusionen, Umgebungen geben Fehler zurück, externe Tools funktionieren nicht, und alle Arten von unerwarteten Randfällen gibt es. Bei mehrstufigen Aufgaben ist das Scheitern nicht die Ausnahme, sondern Teil des Zyklus.
Ein häufiger Impuls unter Entwicklern ist jedoch, diese Fehler zu verstecken: die Spuren zu bereinigen, die Aktion erneut zu versuchen oder den Modellstatus zurückzusetzen und zu hoffen, dass ein magischer "Temperatur"-Parameter das Problem behebt. Das fühlt sich sicherer und kontrollierbarer an, hat aber seinen Preis: Wenn Sie den Fehler auslöschen, löschen Sie auch die Beweise. Ohne Beweise kann sich das Modell nicht anpassen und lernen.
Boden Manus
Unserer Erfahrung nach ist eine der wirksamsten Methoden zur Verbesserung des Agentenverhaltens überraschend einfach: Fehlversuche im Kontext zu halten. Wenn das Modell eine fehlgeschlagene Aktion und die daraus resultierende Beobachtung oder den Stack-Trace sieht, aktualisiert es implizit seine internen "Überzeugungen", wodurch seine Vorliebe für ähnliche Verhaltensweisen und die Wahrscheinlichkeit, den Fehler zu wiederholen, verringert werden.
In der Tat ist die Fähigkeit, sich von Fehlern zu erholen, einer der deutlichsten Indikatoren für echte Agentenintelligenz. In den meisten akademischen Studien und öffentlichen Benchmark-Tests, die sich nur auf den Erfolg von Aufgaben unter idealen Bedingungen konzentrieren, wird dies jedoch immer noch stark unterschätzt.
Hüten Sie sich vor der "Sample-Less"-Falle
"Few-shot prompting" ist eine gängige Technik zur Verbesserung der Qualität der Ausgabe von großen Sprachmodellen, aber sie kann in Agentensystemen auf subtile Weise nach hinten losgehen.
Sprachmodelle sind hervorragende Nachahmer und imitieren Verhaltensmuster in ihrem Kontext. Wenn Ihr Kontext voller ähnlicher "Verhalten-Beobachtungs"-Paare ist, wird das Modell dazu neigen, diesem Muster zu folgen, auch wenn es nicht mehr die beste Wahl ist.
Dies kann bei Aufgaben, die sich wiederholende Entscheidungen oder Handlungen beinhalten, sehr gefährlich sein. Zum Beispiel, wenn man Manus
Bei der Durchsicht von 20 Lebensläufen in großer Zahl verfallen die Bearbeiter oft in einen Rhythmus - sie wiederholen ähnliche Handlungen immer und immer wieder, einfach weil sie sie im Zusammenhang sehen. Dies kann zu Verhaltensdrift, Übergeneralisierung und manchmal sogar zu Halluzinationen führen.
Die Lösung besteht darin, die Vielfalt zu erhöhen.Manus
Eine kleine Anzahl strukturierter Varianten wurde in die Verhaltensweisen und Beobachtungen eingeführt, wie die Verwendung verschiedener Serialisierungsvorlagen, alternativer Formulierungen und kleiner Störungen in der Reihenfolge oder im Format. Diese kontrollierte Zufälligkeit trägt dazu bei, verfestigte Muster aufzubrechen und die Aufmerksamkeit des Modells anzupassen.
Mit anderen Worten: Lassen Sie sich nicht auf eine "stichprobenlose" Pfadabhängigkeit ein. Je einheitlicher der Kontext ist, desto anfälliger ist das Verhalten des Agenten.
Die kontextbezogene Technik ist noch eine junge Wissenschaft, aber für Agentensysteme ist sie bereits ein Eckpfeiler des Erfolgs. Die Modelle mögen stärker, schneller und billiger werden, aber keine Steigerung der rohen Leistung kann die sorgfältige Gestaltung von Speicher, Kontext und Feedback ersetzen. Wie Sie den Kontext gestalten, bestimmt letztendlich, wie Ihr Agent agiert: wie schnell er läuft, wie belastbar er ist und wie weit er skaliert. Die Zukunft des Agenten wird sich aus einem sorgfältig gestalteten Kontext nach dem anderen zusammensetzen.