Blog | Entwickler | | 9 Minuten Lesezeit

Wie Rewire einen Sprachassistenten entwickelt hat, der sich nach jeder falschen Antwort selbst neu programmiert

Wie Rewire einen Sprachassistenten entwickelt hat, der sich nach jeder falschen Antwort selbst neu programmiert

Wichtigste Erkenntnisse

  • Rewire erkennt Fehler bei Agenten, generiert alternative Lösungen und überprüft diese anhand früherer Anrufe, bevor der Live-Workflow aktualisiert wird.
  • Die Actian VectorAI DB speichert validierte Korrekturen als dauerhafte Fehlermuster, die über Sitzungen und Domänen hinweg abgerufen und wiederverwendet werden können.
  • Rewire erfasst Fehler anhand der Struktur statt anhand des Domänenvokabulars und erfasst dabei Details wie Fehlertyp, Knotenrolle, Werkzeuge und Verifizierungsverhalten.
  • Eine Korrektur der Preisgestaltung für Bremsen wurde später von einem Gesundheitsmakler abgerufen und dazu verwendet, eine fiktive Versicherungszuzahlung zu korrigieren, obwohl keinerlei gemeinsames Fachvokabular vorlag.
  • Die domänenübergreifende Selbstoptimierung hängt davon ab, dass wiederverwendbare Fehlersignaturen gespeichert werden und jede abgerufene Korrektur überprüft wird, bevor sie einen laufenden Workflow ändern kann.

Dieser Beitrag wurde ursprünglich beim „Self-Evolving Agents“-Hackathon eingereicht.

Der Sprachagent von Rewiregenerierte einen fiktiven Bremsenpreis, führte den Fehler auf den zuständigen Knoten zurück, erzeugte 33 konkurrierende Korrekturvorschläge, schloss 27 davon bei der Validierung aus und übertrug den verbleibenden Patch in den Speicher der Actian VectorAI-Datenbank. Ein von Rewire entwickelter Agent für das Gesundheitswesen rief diesen Patch später ab, ordnete ihn einem fiktiven Versicherungs-Eigenanteil zu und korrigierte den Fehler beim ersten Versuch – und das, obwohl es zwischen den beiden Domänen keinerlei gemeinsames Vokabular gab.

Diese Weiterleitung funktioniert, weil Rewire Fehlermuster anhand ihrer Struktur indexiert und nicht anhand der Sprache des Aufrufs, der sie verursacht hat. Die Einbettung erfasst die Art des Fehlers, die Rolle des Knotens, die verfügbaren Werkzeuge sowie die Information, ob der Agent einen Wert gesetzt hat, den er zuvor nicht verifiziert hatte.

Was aus diesem Prozess übrig bleibt, ist ein Fehlermuster, das präzise genug ist, damit die Suche auch dann zu einem Treffer führt, wenn die Domäne, der Aufrufer und die Frage alle unterschiedlich sind. Aayush Gupta, der Rewire entwickelt hat, beschrieb es so: „Wir haben die Fitnessfunktion geschrieben. Sie hat die Regeln geschrieben.“

Wenn Sie einen sich selbst weiterentwickelnden Agenten entwickeln, erfahren Sie unter case study , welche Fehlerdaten gespeichert werden sollten und wie Sie eine abgerufene Korrektur validieren können, bevor sie in einen Live-Workflow einfließt.

TL;DR

  • Rewire erkennt und behebt Agent-Fehler selbstständig. Es verfolgt den Fehler bis zum verantwortlichen Workflow-Knoten zurück, generiert verschiedene Lösungsvorschläge und überprüft diese anhand früherer Aufrufe.
  • VectorAI DB speichert diese Korrekturen im persistenten Speicher. Rewire speichert validierte Korrekturen als wiederverwendbare Fehlermuster.
  • Das Wissen wird domänenübergreifend weitergegeben. Ein Mitarbeiter im Gesundheitswesen griff auf eine Korrektur zurück, die ursprünglich aufgrund eines Fehlers bei der Preisberechnung für Bremsen erstellt worden war, und nutzte sie, um eine fiktive Zuzahlung zu korrigieren.

Warum „Prompt Engineering“ die falsche Lösung ist

Ein manuell vorgenommener Patch für die Eingabeaufforderung kann einen bekannten Fehler beheben, gilt jedoch nur für eine Instanz. Tritt derselbe Fehler in einem anderen Workflow auf, müssen Sie ihn ausfindig machen, die Eingabeaufforderung neu schreiben und hoffen, dass der nächste Aufruf nicht auf andere Weise fehlschlägt. Eine Aktualisierung der Eingabeaufforderung, die Rewire anweist, vor der Antwort den genehmigten Preis abzurufen, garantiert nicht, dass der Agent das Nachschlagewerk beim nächsten Mal aufruft.

Prompts verändern das Verhalten eines Modells auf probabilistischer Basis. Ohne einen Mechanismus, der zwei Fehlerfälle miteinander verknüpft, lernt das Modell niemals, dass derselbe Fehler auch in einem anderen Bereich auftritt, beispielsweise bei einer Zuzahlung im Gesundheitswesen oder einem Versicherungsselbstbehalt. Ein anderes Gespräch würde denselben Fehlerfall aufdecken.

Retrieval-Augmented Generation (RAG) verbessert die von einem Agenten abgerufenen Informationen, während Rewire die Anweisung oder das Workflow-Verhalten modifiziert, das beim ersten Aufruf den Abruf nicht ausgelöst hat. Der Sprachagent verändert nach jedem Vorfall seine Ausführungsumgebung, während das semantische Gedächtnis wiederkehrende Fehlermuster als wiederverwendbaren Kontext speichert. Aayush beschreibt den Ansatz von Rewire bei Agentenfehlern wie folgt: „Unser Sprachagent findet seine eigenen Fehler und schreibt seinen eigenen Konversationsgraphen neu. Niemand greift in die Eingabeaufforderung ein.“

So funktioniert die sich selbst neu schreibende Schleife

Die sich selbst weiterentwickelnde Agenten-Schleife von Rewire wandelt Agentenausfälle in validierte Änderungen am Konversationsgraphen über fünf Komponenten hinweg um.

Dograh gibt den Gesprächsverlauf vor und passt ihn an, Pioneer unterstützt die Schlussfolgerungen des Agenten, und Senso wertet jede Antwort anhand verifizierter Kenntnisse aus und speichert die Eskalationsrichtlinie. Der Validator des Systems verfolgt Fehler bis zum Stammknoten zurück, generiert konkurrierende Patches, vergleicht diese lokal mit historischen Aufrufen und aktualisiert den Live-Graphen. Actian VectorAI DB speichert die domänenunabhängigen Fehlersignaturen und die Patch-Daten für die erfolgreichen Korrekturen.

Dieses Diagramm veranschaulicht, wie Rewire einen Fehler durch die Phasen Diagnose, Erarbeitung einer Lösung, Validierung und Speicherung im Arbeitsspeicher führt.

Selbstentwickelnde Architektur neu gestalten

Pioneer und Senso

Pioneer generiert das Verhalten des Agenten, und Senso liefert das verifizierte Wissen, anhand dessen dieses Verhalten bewertet wird.

Der OpenAI-kompatible Endpunkt von Pioneer stellt das Modell „gpt-5.4-mini“ bereit, das die Antworten des Agenten generiert. Bei jedem Aufruf werden Ausführungsdaten für den Workflow erzeugt, darunter der Knoten, Anweisungen, verfügbare Tools, Tool-Aufrufe und Übergänge. Rewire nutzt diese Ablaufverfolgungsdaten, um zu ermitteln, wie der Agent eine Antwort generiert hat und wo ein Fehler aufgetreten ist.

Senso liefert das Auswertungssignal. Sein Such-Endpunkt ruft die verifizierte Antwort und die dazugehörige Quellenangabe für die Frage des Anrufers ab. SensoOracle vergleicht die Antwort des Agenten mit diesen Belegen und gibt ein strukturiertes Urteil aus, das den Richtigkeitsgrad, die Fundiertheit, den Ground-Truth-Wert, die Fehlerart, die diagnostische Begründung und das Eskalationsergebnis enthält. Jede vorgeschlagene Korrektur wird anhand dieses Urteils bewertet, bevor Rewire sie freigeben kann.

Durch diese Trennung werden beide Seiten des Fehlers in den Regelkreis einbezogen. Pioneer zeigt, was der Agent getan hat, während Senso auf der Grundlage verifizierter Kenntnisse feststellt, was der Agent hätte tun sollen. Im Fall des Preisfehlers hatte der Agent Zugriff auf das Wissensdatenbank-Tool, hat dieses jedoch nicht aufgerufen. Senso lieferte den verifizierten Preis, sodass Rewire die falsche Antwort identifizieren und in den Evolutionskreislauf einspeisen konnte.

Knotenidentifizierung und Erzeugung konkurrierender Positionsbestimmungen

Rewire ermittelt zunächst, welcher Knoten den Fehler verursacht hat, und generiert dann drei alternative Lösungen für diesen Knoten, anstatt sich auf eine einzige Lösung festzulegen.

Der Knoten, der die fehlerhafte Antwort erzeugt hat, kann sich von dem Knoten unterscheiden, der das zugrunde liegende Problem verursacht hat. Rewire nutzt Dograhs node_transition Ereignisse und den Ausführungsverlauf, um den Fehler bis zu seinem Stammknoten zurückzuverfolgen. Anschließend erstellt es aus der Fehlerstruktur eine Fehlersignatur und ermittelt anhand dieser, welcher der vier unten aufgeführten Mutationsoperatoren geeignet ist:

  • append_constraint fügt der bestehenden Anweisung des Knotens eine Verhaltensbeschränkung hinzu.
  • add_tool_requirement erfordert, dass der Knoten unter einer bestimmten Bedingung ein bestimmtes Tool aufruft.
  • rewrite_instruction ersetzt die bestehenden Anweisungen eines Knotens.
  • change_transition ändert die Routenführung des Graphen.

„Rewire“ ausgewählt add_tool_requirement wegen des Fehlers bei der Preisberechnung für die Bremse. Der Patch hat pricing_lookup vor der Bereitstellung konkreter Preisangaben eine Abfrage in der Wissensdatenbank zu verlangen.

Bevor Rewire diese Änderung auf den Live-Graphen anwenden kann, muss der von Guild gehostete Validator sie testen. Der Validator wendet jeden Patch auf eine lokale Kopie des Workflows an und spielt ihn anhand historischer Aufrufe nach. Rewire behält einen Kandidaten nur dann bei, wenn er den auslösenden Fehler behebt, ohne dabei zuvor korrektes Verhalten zu beeinträchtigen. Das System überträgt die verbleibende Korrektur mit dem höchsten Validierungsvertrauenswert in den Live-Graphen.

Die Actian-Speicherzuweisung

Die Actian VectorAI-Datenbank speichert validierte Korrekturen nach Fehlerart, sodass Rewire sie domänenübergreifend abrufen kann.

Rewire erstellt den Vektor anhand der Fehlersignatur. Die Signatur erfasst die Art des Fehlers, die Rolle des Knotens, die verfügbaren Tools, den Toolaufruf sowie die Angabe, ob der Agent einen bestimmten Wert gesetzt hat. Die Frage des Aufrufers und domänenspezifische Begriffe werden dabei ausgeschlossen, sodass sich die Suche ausschließlich auf die Struktur des Fehlers konzentriert.

Dieser Code-Block zeigt den genauen Zeitpunkt, zu dem ein validierter Patch in die VectorAI-Datenbank aufgenommen wird:

def store(self, patch: WorkflowPatch) -> str:
        """Embed the patch's failure signature, upsert with its flat payload.

        Returns the Actian point id (a uuid5 of `patch.patch_id`, so this is a
        true upsert — storing the same patch twice after validation flips it
        from candidate to promoted in place rather than duplicating it).
        """
        self._require_ready()
        vector = embed(patch.signature.to_embedding_text())
        pid = point_id_for(patch.patch_id)
        self.client.points.upsert(
            self.collection,
            [PointStruct(id=pid, vector=vector, payload=patch.to_actian_payload())],
        )
        return pid

Fehlermuster, das nach Form indexiert und nach erfolgreicher Wiederholung in die VectorAI-Datenbank übernommen wurde.

signature.to_embedding_text() erzeugt den Text, den Rewire zum Abruf einbettet. Der store() Die Methode wandelt die Fehlersignatur in einen 384-dimensionalen Vektor um, leitet aus der Patch-ID eine deterministische ID ab und fügt sowohl den Vektor als auch die Patch-Nutzdaten in die Sammlung ein (Upsert). Durch die Wiederverwendung derselben Patch-ID wird der bestehende Eintrag aktualisiert, anstatt ein Duplikat zu erstellen.

Für die domänenübergreifende Demo führte Aayush einen Gesundheitsagenten mit einem separaten Fehlerfall aus. Dieser erzeugte eine Versicherungszuzahlung von 40 $ gegenüber einem verifizierten Wert von 47 $ und rief anschließend den „Brake-Pricing“-Patch aus der VectorAI-Datenbank ab. Die Fehlersignatur enthielt keine Begriffe aus dem Gesundheitswesen, doch das gemeinsame Muster bestand darin, dass der Agent einen bestimmten Wert behauptete, ohne ein verfügbares Verifizierungswerkzeug zu nutzen. Wenn Rewire eingebettet die Frage des Anrufers oder domänenspezifische Schlüsselwörter einbezieht, hängt die Abfrage vom Vokabular ab.

Das domänenübergreifende Ergebnis und was es für Ihren Agenten bedeutet

Der Fehler im Bereich Gesundheitswesen funktionierte, weil Rewire die Struktur des Fehlers und nicht dessen Fachgebiet indexiert hatte. Die Signatur umfasste die Eigenschaften, die beide Fehler gemeinsam hatten, sodass VectorAI DB die Korrektur für die Bremsenpreisberechnung abrufen konnte, obwohl der Fehler im Bereich Gesundheitswesen keine Begriffe aus dem Automobilbereich enthielt.

Aayush beschrieb dieses Ergebnis als unerwarteten Effekt des Systems: „Dann kam der Teil, auf den wir nicht vorbereitet waren: Die Regel, die das System bezüglich der Preisgestaltung für Bremsen gelernt hatte, wurde von einem Agenten aus dem Gesundheitswesen aus Actian abgerufen – ein anderer Fachbereich, kein gemeinsames Vokabular, eine Übereinstimmung ausschließlich aufgrund der Art des Fehlers – und behebte auf Anhieb eine fiktive Zuzahlung bei einer Versicherung.“

Wenn Sie in Ihrem eigenen, sich selbst weiterentwickelnden Agenten eine domänenübergreifende Abfrage ermöglichen möchten, sollten Sie einbetten nur die Fehlerdarstellung verwenden, die das System wiederverwenden soll. Durch die Indizierung der gesamten Konversation fließt domänenspezifische Sprache in das Abfragesignal ein, was dazu führen kann, dass nur bestimmte Fehler als Übereinstimmungen erkannt werden. Rewire behält diese Darstellung auf der Ebene der Fehlersignatur bei. Die Abfrage liefert einen Lösungsvorschlag, doch Rewire validiert diesen Vorschlag, bevor er den Graphen ändern darf. Ein in einem Workflow generierter Patch kann erst dann in einen anderen gelangen, nachdem er denselben Bewertungsprozess durchlaufen hat.

Die folgende Tabelle zeigt drei Muster aus dem Rewire-Design, die Sie bereits heute in Ihrer Agentenarchitektur umsetzen können.

Muster Was Rewire getan hat Was Sie umsetzen 
Verzeichnis nach Form Die Fehlersignaturen wurden anhand struktureller Eigenschaften kodiert und ohne domänenbezogene Inhalte in der VectorAI-Datenbank gespeichert. Definieren Sie ein normalisiertes Fehlerschema, das erfasst, wie der Agent ausgefallen ist, und „ einbetten “ diese Darstellung anschließend für den Abruf.
Durch Wiederholung ausschließen Die generierten und abgerufenen Korrekturen wurden anhand des auslösenden Fehlers und früherer Aufrufe getestet; Rewire hat nur solche Korrekturen weiterverarbeitet, die den Fehler behoben haben, ohne Regressionen zu verursachen Jede vorgeschlagene Korrektur auf den aktuellen Workflow anwenden, repräsentative Fälle aus der Vergangenheit nachstellen und erst dann freigeben, wenn sie die Regressionstests bestanden hat
Der Makler soll die Regeln festlegen  Dem Agenten wurde ermöglicht, Graphaktualisierungen innerhalb einer begrenzten Menge von Mutationsoperatoren vorzuschlagen; anschließend wurde der daraus resultierende Workflow validiert Geben Sie dem Agenten die Kontrolle über die von ihm vorgeschlagene Verhaltensregel, schränken Sie die verfügbaren Mutationsoperatoren ein und lassen Sie die ausführungsbasierte Validierung entscheiden, welche Regeln bestehen bleiben

Die domänenübergreifende Wiederverwendung hängt von der im Speicher abgelegten Fehlerdarstellung und der vor der Wiederverwendung durchgeführten Validierung ab. VectorAI DB stellte Rewire einen persistenten Speicher für validierte Fehlermuster zur Verfügung, sodass eine in einer Sitzung erlernte Korrektur verfügbar wird, wenn ein anderer Agent auf dieselbe Fehlerstruktur stößt.

Probieren Sie die VectorAI DB Community Edition auf Ihrem lokalen Rechner mit dem Befehl „docker pull“ aus.

Dieser Build wurde ursprünglich beim „Self-Evolving Agents“-Hackathon eingereicht. Das Rewire-Projekt auf GitHub ansehen.