Planungsintelligenzen bieten eine schnellere, kostengünstigere und leistungsfähigere Lösung für die Ausführung von Aufgaben als bisherige Konzepte. Dieser Artikel führt Sie durch die Erstellung von drei Planungsintelligenzen in LangGraph.
Wir haben drei Intelligenzen im Modus "Planen und Ausführen" auf der LangGraph-Plattform eingeführt. Diese Intelligenzen weisen mehrere Verbesserungen gegenüber den klassischen Intelligenzen im Modus "Reason and Act" (ReAct) auf.
Erstens sind diese Intelligenzen in der Lage, mehrstufige Aufgabenprozesse schneller auszuführen, da es nicht notwendig ist, nach Abschluss jeder Aktion erneut die Beteiligung großer Intelligenzen anzufordern. Jede Teilaufgabe kann abgeschlossen werden, ohne dass zusätzliche Aufrufe des großen Sprachmodells (LLM) oder Aufrufe der leichteren LLM-Unterstützung erforderlich sind.
💸 Zweitens können sie im Vergleich zu ReAct-Intelligenzen die Kosten effektiv senken. Wenn LLM-Aufrufe für Teilaufgaben erforderlich sind, werden in der Regel kleinere, domänenspezifische Modelle verwendet. Große Modelle werden nur aufgerufen, wenn (Neu-)Planungsschritte durchgeführt und endgültige Antworten erzeugt werden müssen.
Indem man den Planer auffordert, explizit Schritt für Schritt über den Prozess nachzudenken, der zur Erledigung der gesamten Aufgabe erforderlich ist, können diese Intelligenzen bessere Leistungen in Bezug auf die Erledigungsrate und die Qualität der Aufgabe erzielen. Die Entwicklung von detaillierten Denkschritten ist eine validierte Technik, um die Ergebnisse zu verbessern. Die Segmentierung des Problems kann ebenfalls zu einer gezielteren und effizienteren Aufgabenerfüllung führen.
Hintergrund
Im vergangenen Jahr haben sich intelligente Agenten und Zustandsautomaten auf der Grundlage von Sprachmodellen als vielversprechendes Entwurfsparadigma für die Entwicklung flexibler und effizienter KI-Produkte erwiesen.
Der Kern eines Agenten ist ein Sprachmodell als generisches Problemlösungswerkzeug, das ihn mit externen Ressourcen verbindet, um Fragen zu beantworten oder Aufgaben zu erfüllen.
Intelligente Agenten, die auf Sprachmodellen basieren, durchlaufen in der Regel die folgenden Hauptschritte:
1. eine Aktion vorschlagen: Das Sprachmodell generiert einen Text, der direkt an den Benutzer gerichtet ist oder an eine Funktion weitergeleitet wird.
2) Aktion ausführen: Der Code ruft andere Software auf, um z. B. die Datenbank abzufragen oder die API und andere Operationen aufzurufen.
3 Beobachten Beobachten: Reagieren auf Rückmeldungen von Werkzeugaufrufen, entweder durch Aufruf einer anderen Funktion oder durch Reaktion auf den Benutzer.
ReAct Intelligente Agenten sind ein gutes Beispiel dafür, da sie sich wiederholende Zyklen des Denkens, Handelns und Beobachtens nutzen, um das Sprachmodell zu steuern:
Denken Sie: Ich sollte Search() aufrufen, um den Spielstand des aktuellen Spiels zu ermitteln.
Aktion: Suche("Wie lautet das Ergebnis des aktuellen Spiels X?")
Beobachtung: Aktueller Spielstand: 24-21
... (N-mal wiederholen)
Dies ist ein typischer Weg eines intelligenten Agenten im Stil von ReAct.
Dieser Ansatz nutztGedankenketteAufforderungen, so dass bei jedem Schritt nur eine einzige Handlungsentscheidung getroffen wird. Dies kann zwar für einfache Aufgaben effektiv sein, hat aber auch einige große Nachteile:
(1) Jeder Werkzeugaufruf erfordert einen Sprachmodellaufruf.
2. das Sprachmodell plant jeweils ein Teilproblem. Dies kann zu suboptimalen Verarbeitungspfaden führen, da es nicht gezwungen ist, über die gesamte Aufgabe "nachzudenken".
Ein effektiver Weg, diese beiden Unzulänglichkeiten zu überwinden, ist die Einbeziehung eines expliziten Planungsschritts. Im Folgenden finden Sie zwei Beispiele für solche Entwürfe, die wir bei LangGraph implementiert haben.
Plan-And-Execute-System
Diese einfache Struktur basiert auf dem Papier von Wang et al [Tipps zur Planung und Lösung], vorgeschlagen von und aufbauend auf Yohei Nakajimas [BabyAGIProjekt, wurde die typische Architektur eines Planungsagenten. Sie enthält zwei Hauptbasiskomponenten:
1. ein Planer (A) Planer), ist für die Steuerung eines Sprachmodells (LLM) zur Erstellung von Mehrschrittplänen für komplexe Aufgaben zuständig.
2. mehrere Aktoren (Testamentsvollstrecker(s)), die die Abfrageanforderungen des Benutzers sowie einen Schritt im Plan verarbeiten und ein oder mehrere Werkzeuge zur Ausführung dieser Aufgabe aufrufen können.
Sobald die Ausführung der Aufgabe abgeschlossen ist, wird der Agent mit einer neuen Planungsaufforderung konfrontiert, bei der er entscheidet, ob er einfach eine Antwort gibt, um die Aufgabe zu beenden, oder ob er bei Bedarf weitere Pläne erstellt (falls der ursprüngliche Plan sein Ziel nicht erreicht hat).
Dieses Agentendesign vermeidet die Notwendigkeit, sich bei jedem Aufruf des Tools auf ein großes Planungssprachmodell zu verlassen. Da es jedoch keine Zuweisungsoperationen für Variablen unterstützt und das Tool seriell aufgerufen werden muss, ist für jede Aufgabe ein eigenes Sprachmodell erforderlich.
Über die unabhängige Beobachtung hinausgehende Argumentation
In [ReWOOIn der Studie von Xu et al. wurde ein neuartiges Agentenmodell entwickelt, das die herkömmliche Vorgehensweise umkehrt, bei der sich jede Aufgabe auf das Large Language Model (LLM) stützen muss, indem es nachfolgenden Aufgaben erlaubt, sich auf die Ergebnisse der vorherigen Aufgabe zu stützen. Das Modell wird implementiert, indem die Funktion der Variablenzuweisung in die Ausgangsplanung einbezogen wird. Die folgende Abbildung zeigt den Aufbau dieses Agentenmodells.
Der Planer ist für die Erstellung einer Liste von Plänen verantwortlich, die abwechselnd "plan" (Schlussfolgerung) und die Zeile "E#" enthält. Zum Beispiel könnte der Planer für die Abfrage "Wie lauten die Quarterback-Statistiken für die diesjährigen Super Bowl-Anwärter?" den folgenden Plan erstellen:
Der Plan: Ich muss die Teams kennen, die dieses Jahr im Super Bowl spielen
E1: Suche nach [wer kämpft um den Super Bowl?]
Der Plan: Ich muss wissen, wer der Quarterback eines jeden Teams ist
E2: LLM [1. Mannschaft QB #E1]
Der Plan: Ich muss wissen, wer der Quarterback eines jeden Teams ist
E3: LLM [2. Mannschaft QB #E1]
Plan: Ich muss die Statistiken des ersten Quarterbacks nachschlagen
E4: Suche [#E2s Quarterback-Statistik]
Plan: Ich muss mir die Statistiken des zweiten Quarterbacks ansehen
E5: Suche [#E3s Quarterback-Statistik]
Beachten Sie, dass der Planer (Planer) Wie kann sie sich auf frühere Ausgaben durch eine Syntax wie "#E2" beziehen? Dies bedeutet, dass es möglich ist, eine Reihe von Aufgaben auszuführen, ohne jedes Mal einen neuen Zeitplan aufstellen zu müssen.
"Arbeiter (ArbeiterDer ")"-Knoten durchläuft jede Aufgabe und ordnet ihre Ausgaben vorgegebenen Variablen zu. Wenn nachfolgende Aufgabenaufrufe ausgeführt werden, werden diese Variablen durch die entsprechenden Ergebnisse ersetzt.
Letztendlich wird der "Resolver (Löser) "Integrieren Sie alle Ergebnisse, um die endgültige Antwort zu erhalten.
Diese Philosophie des Agentenentwurfs kann effizienter sein als ein einfaches Planen-Ausführen-Modell, da jede Aufgabe nur die notwendigen Kontextinformationen enthält (d. h. ihre Eingaben und Variablenwerte).
Dieser Entwurf basiert jedoch immer noch auf der sequentiellen Ausführung von Aufgaben, was zu längeren Gesamtlaufzeiten führen kann.
LLMCompiler
LLMCompiler Es ist eine Kombination aus [Team Kim] eine Agentenarchitektur entwickelt, die die Effizienz der Aufgabenausführung gegenüber dem zuvor beschriebenen Plan-Execute mit ReWOO-Agenten verbessern soll und sogar schneller ist als die parallelen Tool-Aufrufe von OpenAI.
Der LLMCompiler besteht aus den folgenden Hauptteilen:
1. PlanerEs erzeugt einen gerichteten azyklischen Graphen (DAG) von Aufgaben. Jede Aufgabe enthält Werkzeuge, Parameter und eine Liste von Abhängigkeiten.
2. Aufgabenabrufeinheit (TFU) Verantwortlich für die Planung und Ausführung von Aufgaben. Er kann einen Strom von Aufgaben annehmen und sie planen, wenn ihre Abhängigkeiten erfüllt sind. Da viele Tools zusätzliche Suchmaschinen- oder LLM-Aufrufe erfordern, kann diese parallele Ausführung die Geschwindigkeit erheblich steigern (bis zum 3,6-fachen laut dem Papier).
3. Verbinder (Joiner)Dieser Teil kann die Aufgabe dynamisch neu planen oder beenden, basierend auf dem gesamten Verlauf der Aufgabenausführung, einschließlich der Ergebnisse der Aufgabenausführung. Dies ist der Schritt in der LLM-Sitzung, der bestimmt, ob das Endergebnis direkt präsentiert oder der Fortschritt an den Planer zurückgegeben werden soll, um die Arbeit fortzusetzen.
Der Kernpunkt dieser Architektur zur Beschleunigung der Umsetzung ist:
- PlanerDie Ausgabe desStreaming; es ist in der Lage, sofortige Ausgaben von Aufgabenparametern und deren Abhängigkeiten zu erzeugen.
- Auftragserfassungseinheit Empfängt zugeführte Aufgaben und beginnt mit der Planung, wenn alle Abhängigkeiten erfüllt sind.
- Die Aufgabenparameter können seinVarianted. h. die Ergebnisse der vorangegangenen Aufgaben in dem gerichteten azyklischen Graphen. Das Modell kann zum Beispiel wie folgt dargestellt werden
suchen("${1}")
um den von Aufgabe 1 generierten Suchinhalt abzufragen. Mit diesem Ansatz kann der Agent effizienter arbeiten als mit den normalen parallelen Tool-Aufrufen von OpenAI.
Durch die Organisation der Aufgaben in einem gerichteten azyklischen Graphen wird nicht nur wertvolle Zeit beim Aufrufen des Tools gespart, sondern auch eine bessere Benutzerfreundlichkeit erzielt.
Zusammenfassungen
Diese drei Proxy-Architekturen sind Prototypen des Plan-Do-Entwurfsmusters, das den LLM-gesteuerten "Planer" von der Laufzeit des Werkzeugs trennt. Wenn Ihre Anwendung mehrere Aufrufe des Werkzeugs oder der API erfordert, können diese Ansätze die Zeit bis zum Endergebnis verkürzen und Ihnen helfen, die Kosten zu senken, indem die Anzahl der Aufrufe von LLMs auf höherer Ebene reduziert wird.