Vorstellung des Agent Snap

Tim Fan Kopfbild
8 min gelesen
Fassen Sie dies mit AI zusammen

Rückblick: Was ist ein Agent?

„Agenten sind autonome LLM-basierte Prozesse, die mit externen Systemen interagieren können, um ein übergeordnetes Ziel zu erreichen.“

Agenten sind LLM-basierte Systeme, die auf Grundlage der Anfrage des Benutzers und des Szenarios, das vom LLM des Agentensystems bestimmt wird, Aktionen ausführen können. Ein minimaler Agent besteht aus 1. einer LLM-Komponente und 2. Tools, die der Agent verwenden kann. Stellen Sie sich den Agenten als einen Roboter mit einem Gehirn (LLM) und Roboterarmen (Tools) vor. Basierend auf der Anfrage kann das Gehirn „entscheiden“, etwas zu tun, und dann führt der Arm die vom Gehirn beschlossene Aktion aus. Je nach Szenario kann das Gehirn dann entscheiden, ob weitere Aktionen erforderlich sind oder ob die Anfrage abgeschlossen ist.

Der Prozess eines Agenten

Wir haben zuvor das Pipeline-Muster „Agent Driver und Agent Worker“ vorgestellt, das jeden einzelnen Vorgang, der in einem Agent-Prozess auftreten würde, klar definiert. Der Prozess des Musters lässt sich wie folgt beschreiben

Agent-Treiber

  1. Definieren Sie die Anweisung des Agenten. (Systemaufforderung)
  2. Formatieren Sie die Anfrage des Benutzers in eine Konversation. (Nachrichten-Array)
  3. Legen Sie die Tools fest, die dem Agenten zur Verfügung gestellt werden sollen.
  4. Senden Sie alle oben genannten Informationen in eine „Schleife“ und lassen Sie den Agent-Worker laufen, bis der Prozess abgeschlossen ist.

Agent-Mitarbeiter

  1. Rufen Sie den LLM mit den Anweisungen, der Konversation und den Werkzeugdefinitionen auf.
  2. LLM entscheidet…
    1. Wenn die Anfrage abgeschlossen werden kann, beenden Sie das Gespräch und fahren Sie mit Schritt 7 fort.
    2. Wenn Werkzeugaufrufe erforderlich sind, fahren Sie mit Schritt 3 fort.
  3. Rufen Sie die Werkzeuge.
  4. Formatieren Sie das Ergebnis des Tools.
  5. Fügen Sie die Ergebnisse des Tools zur Unterhaltung hinzu.
  6. Zurück zu Schritt 1.
  7. Die Anfrage ist abgeschlossen, der Agent antwortet.

Die Begründung

Aus der Agent Driver- und der Agent Worker-Pipeline lässt sich folgende Beobachtung ableiten:

  1. Die Treiber-Pipeline übernimmt die gesamte „Konfiguration“ des Agenten.
  2. Die Worker-Pipeline übernimmt den „Betrieb“ des Agenten.

Stellen Sie sich nun Folgendes vor:

Wenn wir die „Agentenoperation“ in einem einzigen Modul zusammenfassen könnten, sodass wir Agenten einfach durch Bereitstellung von Anweisungen und Tools erstellen könnten, wäre das nicht großartig?

Genau das macht Agent Snap. Agent Snap kombiniert PipeLoop Snap und die Agent Worker-Pipeline, sodass alle Agent-Operationen in einem einzigen Snap ausgeführt werden.

Informationen und Voraussetzungen

Bevor Sie nun davon träumen, Ihre eigene Agentur zu gründen, sollten Sie wissen, dass es einige Informationen und Voraussetzungen gibt, die Sie beachten müssen, bevor dies möglich ist, auch wenn die Gründung einer Agentur mittlerweile sehr einfach ist.

1. Agent Snaps sind modellspezifisch.

Modellspezifische Agent-Snaps

Der Agent Snap ist eine Kombination aus „Loop“ und Agent Worker, daher ist auch der für einen Agent Snap zu verwendende LLM-Anbieter festgelegt. Dieses Design ermöglicht es Benutzern, ihre bevorzugte Kombination aus benutzerdefinierten Modellparametern beizubehalten.

2. Funktionsdefinitionen (Werkzeuge) müssen mit einer Pipeline verknüpft sein, um die Ausführung durchzuführen.

Vorher: Agent Worker mit PipeExec Snaps
Jetzt: Eine Tool-Pipeline für eine Funktionsdefinition

Bisher war in einer Agent Worker-Pipeline das Tool Calling Snap mit Pipeline Execute Snaps verbunden, um Tool-Aufrufe auszuführen, aber dies ist beim Agent Snap nicht mehr der Fall. Stattdessen sollte eine Funktionsdefinition den Pfad der Pipeline enthalten, um die Ausführung durchzuführen, wenn dieses Tool aufgerufen wird. Auf diese Weise können wir sicherstellen, dass jeder Tool-Aufruf erfolgreich durchgeführt werden kann. Wenn der Benutzer keine Tool-Pipeline mit der Funktionsdefinition bereitstellt, wird das Agent Snap nicht fortgesetzt.

3. Erwartete Ein- und Ausgänge einer Tool-Pipeline

Wenn ein Tool-Aufruf von einem LLM angefordert wird, gibt das LLM den Namen des aufzurufenden Tools und die entsprechenden Parameter für den Aufruf an. Der Agent Snap entpackt die Parameter und sendet sie direkt an die Tool-Pipeline.

Hier ein Beispiel: Ich habe ein Tool namens get_weather, das city: string als Parameter verwendet. Das LLM beschließt, das Tool get_weather mit der folgenden Nutzlast aufzurufen:

{ "name": "get_weather", "parameters": { "city": "New York City" }, "sl_tool_metadata": { ... } }

Damit dies funktioniert, muss meine Tool-Pipeline das Eingabedokument akzeptieren können:

{"city": "New York City"}

Nebenbei bemerkt wird dassl_tool_metadata-Objekt auch für die Tool-Pipeline als Eingabe für APIM- und OpenAPI-Tools verfügbar sein.

Nehmen wir nun an, meine Tool-Pipeline hat erfolgreich die Wetterdaten für New York City abgerufen. Nun ist es an der Zeit, dass Agent Snap das Ergebnis dieses Tool-Aufrufs erfasst. Agent Snap erfasst alle Daten aus dem Ausgabedokument der Tool-Pipeline als Ergebnis des Tool-Aufrufs*, damit das LLM die nächsten Schritte richtig bestimmen kann.

*Hinweis: Mit einer Ausnahme wird die Ausgabe einer „Tool-Pipeline“, die das Feld „messages“ oder „contents“ enthält, als Konversationsverlauf des „Child-Agenten“ behandelt, der gefiltert und nicht berücksichtigt wird. 

Erstellen Sie einen Agenten mit Agent Snap

Wir haben die Idee verstanden, wir haben die Voraussetzungen durchgesprochen, und nun ist es an der Zeit, einen Agenten zu erstellen.

Agent-Pipeline mit Agent Snap

In diesem Beispiel haben wir einen Agenten mit zwei Tools: einem Wetter-Tool und einem Kalender-Tool. Wir beginnen zunächst mit einem Prompt-Generator, um die Benutzereingaben zu formatieren. Anschließend definieren wir die Tools, auf die der Agent zugreifen kann.

Schauen wir uns eine der Werkzeugdefinitionen an.

In diesem Beispiel-Tool sehen wir den Namen des Tools, die Beschreibung des Tools, die Parameter und den Pfad der Tool-Pipeline, um diese Aufgabe auszuführen. Dies erfüllt die Anforderungen an ein Tool, das von einem Agent Snap verwendet werden soll.

Nachdem wir die Tools eingerichtet haben, schauen wir uns den Agent Snap an, wobei wir den Amazon Bedrock Converse API Agent Snap als Beispiel verwenden.

Die Konfiguration eines Agent-Snaps ähnelt der des entsprechenden Tool-Aufruf-Snaps, mit Ausnahme einiger zusätzlicher Felder, wie z. B. einer Schaltfläche zur Visualisierung des Agent-Ablaufs und einem Abschnitt zur Konfiguration des Agent-Betriebs, wie z. B. Iterationsgrenze und Anzahl der Threads für die Ausführung der Tool-Pipeline.

Der Agent Snap übernimmt den gesamten Ausführungsprozess und wird beendet, wenn 1. die Anfrage abgeschlossen ist (keine weiteren Tool-Aufrufe erforderlich sind) oder 2. ein Fehler aufgetreten ist.

Voilà! Sie haben einen Agenten erstellt.

Nachdem die Agent-Pipeline eine Ausführungsrunde abgeschlossen hat, kann der Benutzer die Schaltfläche „Agent-Ablauf visualisieren“ im Agent-Snap verwenden, um die vom LLM aufgerufenen Tools anzuzeigen.

Die Benutzeroberfläche des Agent Visualizers

Tipps und Tricks für den Agent Snap

Werfen wir einen Blick auf die Funktionen, die in Agent Snap integriert sind.

Wiederverwendung von Pipelines

Die meisten Aufrufe von Agententools sind Prozesse, die wiederverwendet werden können. Um die Ausführungslast zu minimieren, können wir die Funktion „Tool-Pipeline wiederverwenden“ nutzen. Diese Funktion ermöglicht die Wiederverwendung von Tool-Pipeline-Instanzen, sodass der Agent nicht bei jedem Aufruf eines Tools eine Pipeline erstellen muss.

Um diese Funktion nutzen zu können, muss die wiederzuverwendende Tool-Pipeline „Ultra-kompatibel“ sein, da sonst die Ausführung der Pipeline hängen bleibt und der Agent Snap schließlich eine Zeitüberschreitung verursacht.

Überwachung von Tool-Aufrufen

Agenten können lang laufen; es ist nicht ungewöhnlich, dass ein Agent mehrere Iterationen ausführt. Um zu sehen, was in diesem Prozess geschieht, verfügt Agent Snap über eine integrierte Überwachungsfunktion während der Validierung. Der Benutzer kann den Iterationsindex, das aktuell aufgerufene Tool und die für den Toolaufruf verwendeten Parameter in der Statusleiste der Pipeline-Statistik sehen.

Durch Auswahl der Option „Monitor tool call“ (Toolaufruf überwachen) wird der Parameter in die Statusaktualisierung aufgenommen. Dies ist eine Opt-in-Funktion. Wenn der Benutzer die Informationen nicht an SnapLogic weitergeben möchte, sollte er diese Option deaktivieren.

Warnungen

Die Konfiguration des Agenten ist ein heikler Vorgang; ein Fehler kann möglicherweise zu Fehlern führen. Der Agent Snap verfügt über eine Reihe integrierter Warnfunktionen, sodass der Benutzer besser erkennen kann, was schiefgehen könnte.

1. Der Agent-Prozess wurde abgeschlossen, bevor alle Tool-Aufrufe abgeschlossen waren.

Warnung: Iterationsgrenze erreicht

Im Agent Snap gibt es eine Einstellung für die Iterationsgrenze, die die Anzahl der Iterationen begrenzt, die der Agent ausführen kann. Wenn der Benutzer eine kleinere Grenze angegeben hat, wodurch der Agent angehalten wurde, während das LLM noch auf Tool-Aufrufe wartet, wird diese Warnung angezeigt, um den Benutzer darauf hinzuweisen, dass die Ausführung unvollständig ist.

2. Der Pfad der Tool-Pipeline ist nicht definiert.

Warnung wegen fehlendem Pfad zur Tool-Pipeline

Eine vom Agent Snap zu verwendende Funktionsdefinition (Tool-Definition) sollte einen Tool-Pipeline-Pfad enthalten, damit der Agent Snap eine Verbindung zur tatsächlichen Pipeline herstellen kann, die die Ausführung durchführt. Wenn der Pipeline-Pfad nicht in der Funktionsdefinition enthalten ist, wird diese Warnung angezeigt, um den Benutzer darauf hinzuweisen, dass der Agent nicht fortfahren wird.

3. Doppelte Benennung von Werkzeugen

Warnung wegen doppelten Namens

Da wir versuchen, dem Agent Snap immer mehr Tools hinzuzufügen, haben wahrscheinlich zwei Tools denselben Namen. Der Agent Snap kann die an das LLM gesendeten Tools umbenennen und dann trotzdem mit der richtigen Pipeline verknüpfen. Außerdem wird in den Pipeline-Statistiken eine Warnung angezeigt, um den Benutzer auf eine Verhaltensänderung aufmerksam zu machen.

Veröffentlichungszeiträume

Der Agent Snap ist die Grundlage für den SnapLogic Agent der nächsten Generation. Im November werden wir vier Agent Snaps veröffentlichen:

  • Amazon Bedrock Converse API-Agent
  • OpenAI Chat-Vervollständigungsagent
  • Azure OpenAI Chat-Vervollständigungsagent
  • Google Gemini API -Agent

Um die Agent Snaps besser nutzen zu können, werden wir auch einige unserer Funktionsgeneratoren um neue Funktionen erweitern. Hier ist die Liste der Funktionsgenerator-Snaps, die in Kürze geändert werden:

  • APIM -Funktionsgenerator-Snap
  • OpenAPI -Funktionsgenerator-Snap
  • MCP -Funktionsgenerator-Snap

Wir hoffen, Sie sind genauso begeistert wie wir.

Tim Fan Kopfbild
Software-Entwickler bei SnapLogic
Kategorie: Technik