Zum Hauptinhalt springen

Workflows

Ein Workflow ist eine visuelle Karte dessen, was Ihr Agent Schritt für Schritt tun soll — wer zuerst spricht, was zu fragen ist, wann verzweigt wird, wann der Anruf weitergeleitet wird und wann der Anruf an einen anderen Agenten übergeben wird. Sie bauen ihn auf einer Leinwand, indem Sie Knoten platzieren und verbinden.

Verwenden Sie einen Workflow, wenn ein einzelnes Prompt nicht ausreicht — wenn der Anruf klare Phasen hat („zuerst qualifizieren, dann Daten erfassen, dann entweder buchen oder weiterleiten"), wenn Sie deterministisches Routing auf Basis der Antworten des Anrufers benötigen (nicht „die KI macht es meistens richtig") oder wenn ein Agent einen Teil der Arbeit an einen Spezialisten abgeben soll.

Prompt vs. Workflow

Ein Prompt ist eine lange Anweisung. Der Agent liest sie einmal und nutzt sie für das gesamte Gespräch. Ein Workflow besteht aus vielen kleinen Anweisungen, eine pro Knoten, mit expliziten Übergängen dazwischen. Der Graph steuert das Gespräch — der Agent auf jedem Knoten besitzt nur seinen Ausschnitt.

Wenn Ihr Agent bereits gut mit einem einzelnen Prompt funktioniert, brauchen Sie keinen Workflow. Greifen Sie zu Workflows, wenn Sie immer mehr „wenn X dann Y"-Regeln zum Prompt hinzufügen und sie nicht mehr zuverlässig funktionieren.


Der Editor

Der Workflow-Editor lebt in einem eigenen Tab auf der Agentenseite. Sie sehen eine Leinwand mit einem Start-Knoten und einem End-Knoten standardmäßig. Sie fügen Knoten aus der Werkzeugleiste hinzu, ziehen sie auf die Leinwand und verbinden sie mit Kanten.

Das rechte Panel wechselt je nach Auswahl:

  • Klick auf einen Knoten — öffnet sein Einstellungspanel (Prompt, Felder, Retrieval-Variablen usw.).
  • Klick auf eine Kante — öffnet ihre Trigger-Einstellungen (AI decides / Condition / Always).
  • Das Variables-Panel (Werkzeugleisten-Schaltfläche) listet jede Variable des Workflows mit Sprung zu dem Knoten, der sie setzt oder liest.

Führen Sie einen In-Browser-Test-Call direkt aus dem Editor aus — eine leuchtende „Glühwürmchen"-Markierung verfolgt die Live-Position, sodass Sie genau sehen können, welcher Knoten gerade aktiv ist.

Speichern & Status

Workflows haben drei Status:

  • Draft — bearbeitbar, noch nicht live. Verwenden Sie Test Call zum Ausprobieren.
  • Active — live für echte Anrufe. Der Agent verwendet diesen Workflow ab dem nächsten Anruf.
  • Template — wiederverwendbare Vorlage, nie direkt mit einem Agenten verbunden. Sie können sie auf mehrere Agenten instanziieren.

Knoten

Jeder Knoten ist ein Schritt im Gespräch. Verschiedene Knotentypen tun verschiedene Dinge — einige sprechen, einige hören zu, einige routen, einige führen Tools aus.

Agent

Der Agent-Knoten ist das Herz einer Workflow-Phase. Wenn der Graph einen Agent-Knoten erreicht, übernimmt dieser Agent das Wort und führt das Gespräch, bis ein Übergang ausgelöst wird.

Sie konfigurieren Persönlichkeit und Aufgabe des Agent-Knotens direkt auf der Leinwand (der Prompt-Tab öffnet sich beim Klick auf den Knoten) — dies ist der Prompt für diesen Ausschnitt des Gesprächs, nicht für den gesamten Anruf. Sie können auch Wissensdatenbanken und Tools pro Knoten anhängen.

Greeting — die Eröffnungszeile. Wenn dies der Einstiegsknoten ist (der erste Stopp nach Start), hört der Anrufer dies zuerst.

Graph-eigene Persona

Wenn ein Graph einen Anruf steuert, wird das Haupt-Prompt des Agenten (das aus dem Model-Tab) ersetzt durch das Prompt des aktiven Knotens. Das ist absichtlich — der Graph besitzt Persönlichkeit und Aufgabe pro Phase, nicht ein einzelnes festes Prompt, das damit konkurriert.

Subagent

Ein Subagent ist ein Helfer, der inline läuft — er übernimmt das Gespräch für eine fokussierte Aufgabe und gibt das Ergebnis dann an den Auftraggeber zurück.

Subagenten eignen sich, wenn ein Arbeitsschritt wiederverwendbar oder klar abgegrenzt ist: „Identität des Anrufers verifizieren", „Lieferadresse erfassen", „Lead mit SPIN-Methode qualifizieren". Der Eltern-Agent ruft den Subagenten auf, der Subagent erledigt seine Aufgabe und meldet ein Ergebnis, der Eltern-Agent macht weiter.

Subagent-Knoten haben dieselben Tabs wie ein Agent-Knoten (Prompt, Knowledge, Tools, Actions) — der Editor erstellt automatisch einen versteckten Backing-Agenten für Sie. Sie sehen diesen versteckten Agenten nicht in Ihrer Hauptliste, und er zählt nicht gegen das Agenten-Limit Ihres Plans.

Return variable — das Feld zum Speichern des Subagent-Ergebnisses (z. B. identity_verified, lead_score).

Message (Say)

Der Say-Knoten spricht eine feste Zeile, kein KI-Turn, keine Improvisation. Verwenden Sie ihn für Übergänge („Einen Moment, ich leite Sie jetzt weiter…"), gesetzlich erforderliche Hinweise oder vorformulierte Bestätigungen, bei denen der Wortlaut zählt.

Text — was zu sprechen ist. Unterstützt {{variable}}-Tokens zum Einfügen erfasster Werte, z. B. "Danke {{first_name}}, ich habe Sie für {{appointment_time}} eingebucht."

Ein Say-Knoten verbraucht den Turn — der Agent fügt nichts darüber hinaus hinzu.

Gather Input

Ein Gather Input-Knoten stellt eine Frage und erfasst die Antwort des Anrufers in eine Variable.

Prompt — die zu stellende Frage. Unterstützt {{tokens}}. Variable — der Name des Feldes, in dem die Antwort gespeichert wird.

Verwenden Sie ihn, wann immer Sie einen bestimmten Wert vor dem Weitermachen brauchen — E-Mail, Kontonummer, Personenzahl, Problemkategorie. Der nächste Turn des Anrufers wird zum Wert; Sie können direkt danach mit einer Condition-Kante darauf verzweigen.

Update State

Ein Update State-Knoten schreibt einen oder mehrere Werte in die Variablen des Workflows, ohne zu sprechen oder zu fragen. Verwenden Sie ihn, um Standardwerte voreinzustellen, Fortschritts-Flags zu markieren oder Werte aus vorherigen Schritten zu komponieren.

Variable / Value — ein Schlüssel-Wert-Paar. More variables (optional) — zusätzliche Schlüssel-Wert-Paare.

Sowohl Schlüssel als auch Werte unterstützen {{tokens}}, sodass Sie neue Werte aus bestehenden zusammensetzen können.

Condition

Der Condition-Knoten ist ein reiner Routing-Knoten — er spricht nicht, fragt nicht, sondern leitet den Anruf einfach den passenden ausgehenden Zweig entlang.

Die Bedingung selbst liegt auf jeder ausgehenden Kante, nicht auf dem Knoten — siehe Condition-Kanten unten.

Verwenden Sie einen Condition-Knoten, wenn Sie einen klaren „Fan-out"-Punkt in Ihrem Graph wollen: viele Zweige, die vom Wert einer Variable abhängen. Im Vergleich zum Anbringen von Bedingungen an Agent-Knoten-Kanten macht ein dedizierter Condition-Knoten die Routing-Logik visuell offensichtlich.

Tool

Der Tool-Knoten führt eines der verbundenen Tools des Agenten als Graph-Schritt aus — ohne dass die KI mitentscheidet, ob es aufgerufen wird. Verwenden Sie ihn, wenn Sie einen Fakt wollen, kein Gespräch: „diesen Kunden nachschlagen", „Bestand prüfen", „aktuelles Wetter per GET abrufen".

Sie können entweder:

  • Eines der bestehenden Tools des Agenten wählen (Kalenderabfrage, Wissensdatenbank-Suche, eine spezifische Integrations-Aktion) oder
  • Einen Inline-HTTP-Aufruf direkt auf dem Knoten konfigurieren (URL, Methode, Header, Parameter, Body).

Die Antwort des Tools wird für alle nachgelagerten Knoten verfügbar. Wenn die Antwort ein JSON-Objekt ist, wird jedes Top-Level-Feld zu einer eigenen Variable — eine Antwort wie {"is_known": true, "tier": "gold"} schreibt sowohl is_known als auch tier, auf die Sie verzweigen können.

Tool-Tokens

Jedes Textfeld am Tool-Knoten — URL, Header-Werte, Body — unterstützt {{tokens}}. Ziehen Sie eine Variable in einen URL-Pfad, einen Header oder einen Request-Body, ohne Code zu schreiben.

Wenn ein Tool-Aufruf fehlschlägt (HTTP-Fehler, Timeout, Netzwerk), wird der Fehler geloggt und der Graph läuft weiter — ohne die Daten. Planen Sie Ihre nachgelagerten Bedingungen so, dass sie den „kein Wert"-Fall behandeln.

Integration

Der Integration-Knoten ist eine fokussierte Variante von Tool für verbundene externe Dienste — Google Calendar, Outlook, HubSpot. Sie wählen den Provider und die spezifische Aktion (z. B. check_availability, create_event), setzen die Parameter, und der Knoten ruft die Integration deterministisch auf.

Wenn die Integration auf diesem Agenten nicht verbunden ist, läuft der Knoten ohne etwas zu tun durch — Ihr Graph macht weiter. Prüfen Sie nachgelagerte Bedingungen auf den „nicht gelaufen"-Fall.

Phone Transfer

Der Phone Transfer-Knoten leitet den Anruf an eine externe Telefonnummer weiter (warm transfer). Nach erfolgreicher Weiterleitung hat der Anruf Ihren Workflow verlassen — Ihr Agent ist nicht mehr in der Leitung.

Number — Ziel im internationalen Format mit führendem + (z. B. +15551234567). Unterstützt {{tokens}}, sodass das Ziel aus einem früheren Schritt stammen kann (z. B. die Antwort auf „mit welchem Büro sollen wir Sie verbinden?").

Wenn die Weiterleitung nicht zustande kommt (ungültige Nummer, keine Antwort, Telefonanbindung nicht eingerichtet), rollt der Graph zurück und der aktuelle Agent bleibt in der Leitung. Das Gespräch läuft normal weiter — der Agent kann sich entschuldigen und einen anderen Weg versuchen.

End Call

Der End Call-Knoten schließt ab — der Agent spricht den konfigurierten Abschiedstext und legt dann auf. Verwenden Sie ihn als sauberen Abschluss für „alles erledigt"-Zweige oder für den „wir können leider nicht helfen"-Zweig aus einer schwer behandelbaren Condition.

Keine Konfiguration nötig außer einer eingehenden Kante.

Workflow wiederverwenden (Sub-workflow)

Ein Sub-workflow-Knoten ist für das Einbetten eines anderen Workflows als Sub-Graph reserviert. Dieser Knoten ist im Editor, aber noch nicht vollständig verdrahtet — der Graph läuft hindurch, ohne etwas zu tun. Verlassen Sie sich für Produktionsanrufe noch nicht darauf. Wir schalten ihn ein, sobald wiederverwendbare Sub-Graphen released sind.


Kanten (Verbindungen)

Sie verbinden einen Knoten mit dem nächsten über eine Kante. Der Trigger der Kante entscheidet, wann der Übergang ausgelöst wird.

Es gibt drei Trigger:

TriggerWer entscheidetWann er auslöst
AI decidesDie KIWenn das Gespräch es zum natürlichen nächsten Schritt macht. Die KI bekommt ein „Übergangs-Tool" zum Aufrufen.
ConditionDie LaufzeitWenn eine Variable einer von Ihnen geschriebenen Regel entspricht. Wird vor der KI-Antwort ausgewertet.
AlwaysDie LaufzeitBedingungslos — sobald der Quell-Knoten fertig ist. Kein Anrufer-Input, keine KI-Beteiligung.

AI decides (intent-basiert)

Verwenden Sie AI decides, wenn nur die KI weiß, wann gewechselt werden muss — „wenn der Anrufer nach Preisen fragt, an den Vertriebs-Agenten weiterleiten", „wenn es nach Beschwerde klingt, den Entschuldigungs-Subagenten ausführen".

Sie schreiben eine kurze Intent-Beschreibung auf der Kante (z. B. „Anrufer fragt nach Preisen oder will upgraden"). Die KI sieht es als ein mit diesem Intent beschriftetes Tool und entscheidet basierend auf dem Gespräch, ob sie es aufruft. Bei mehreren AI-decides-Kanten wählt die KI höchstens eine pro Turn.

Condition (deterministische Verzweigung)

Verwenden Sie Condition, wenn der Graph — nicht die KI — basierend auf einem bekannten Fakt entscheiden soll: „wenn lead_score > 7, zum Abschluss-Agenten; sonst, höflich beenden".

Bedingungen werden vor der KI-Antwort ausgewertet, also gewinnen sie immer gegen die KI auf diesem Turn. Die KI darf eine matchende Bedingung nicht überstimmen.

Sie können eine Bedingung aus diesen Operatoren bauen:

OperatorBedeutungBeispiel
equalsexakte Übereinstimmung (case-insensitive bei Text)intent equals "billing"
not equalsstimmt nicht übereinstatus not equals "active"
containsSubstring-Match (case-insensitive)feedback contains "broken"
greater thannumerisch >lead_score greater than 7
less thannumerisch <wait_minutes less than 5

Sie können Klauseln auch mit All (jede Klausel muss matchen — UND) oder Any (mindestens eine muss matchen — ODER) kombinieren und verschachteln. Eine Regel wie „der Anrufer ist bekannt und sein Tier ist gold oder premium" wird zu:

All:
- is_known equals true
- Any:
- tier equals gold
- tier equals premium
Fehlende Variablen matchen nie

Wenn Sie eine noch nicht gesetzte Variable referenzieren (z. B. die KI hat sie nie erfasst), schlagen Bedingungen darauf immer fehl — sie werfen keinen Fehler, sie matchen einfach nicht. So gibt loyalty_tier equals "gold" false zurück, wenn loyalty_tier nie gesetzt wurde. Bauen Sie Ihre Zweige so, dass sie das behandeln — meist mit einem Else-Zweig (siehe unten).

Else-Zweig — wenn keine Bedingung matcht

Wenn Sie mehrere Condition-Kanten von einem Knoten haben und keine matcht, fällt der Anruf auf die niedrigst-priorisierte Nicht-Condition-Kante zurück (Always oder eine AI-decides-Kante). Wenn es überhaupt keinen Fallback gibt, übernimmt die KI wieder die Kontrolle.

Übliches Muster: mehrere Conditions für die bekannten Pfade plus eine Always-Kante zu einem Catch-all (Say etwas, dann End Call oder weiterleiten).

Always (Auto-Advance)

Verwenden Sie Always, wenn der nächste Schritt bedingungslos ist — keine Entscheidung, kein Anrufer-Input. Zwei natürliche Anwendungen:

  • Schritte verketten: SAY → UPDATE_STATE → SAY → TOOL → Condition. Jeder Schritt endet und die Always-Kante macht sofort weiter.
  • Auto-Advance nachdem der Agent fertig gesprochen hat: ein Agent-Knoten mit einer Always-Ausgangskante bedeutet „sobald die KI aufhört zu sprechen, mach weiter" — kein Anrufer-Input nötig. Nützlich für Monolog-Flows wie ein Präsentations-Agent, der etwas liefert und dann zum nächsten Abschnitt übergeht.
Priorität zwischen Triggern

Condition und Always (die deterministischen) gewinnen immer gegen AI decides. Wenn eine Condition matcht, werden die Übergangs-Tools der KI für diesen Turn ignoriert. Das erlaubt Ihnen, Regeln zu schreiben, die die KI nicht umgehen kann.


Variablen

Variablen sind das Gedächtnis des Workflows. Die meisten Dinge in einem Workflow drehen sich darum, eine Variable zu setzen oder eine zu lesen.

Variablen deklarieren

Das Variables-Panel (Werkzeugleisten-Schaltfläche) zeigt jede Variable des Workflows mit den Schritten, die sie setzen oder lesen. Klicken Sie auf eine Variable, um zum Setter zu springen; das ist der schnellste Weg zu finden, wo etwas schief geht.

Sie können eine Variable mit einem Standardwert deklarieren im Panel — nützlich für Flags wie escalated=false, die von Anfang an existieren müssen, damit Ihre Bedingungen nicht heimlich auf „fehlt" fehlschlagen.

Wie Variablen gesetzt werden

QuelleBeispiel
Standardwerte (im Variables-Panel deklariert)escalated = false gesetzt vor Anrufbeginn
Gather InputDie gesprochene Antwort des Anrufers wird in die Variable des Knotens erfasst
Update StateSie schreiben einen Wert direkt (Literal oder mit {{tokens}} zusammengesetzt)
Tool / Integration-ErgebnisDie gesamte Antwort wird unter dem Namen des Knotens gespeichert; ist die Antwort ein JSON-Objekt, wird jedes Top-Level-Feld zu einer eigenen Variable
Subagent-RückgabeWas auch immer der Subagent als Ergebnis liefert, wird in der Return-Variable des Subagent-Knotens gespeichert

Variablen lesen — {{tokens}}

Überall, wo Sie auf einem Knoten Text eingeben können — Agent-Prompt, Say-Text, Gather-Prompt, Tool-URL/Body/Header, Phone-Transfer-Nummer, Update-State-Value, Condition-Werte — können Sie {{variable}} einfügen und es wird zur Laufzeit ersetzt.

Auch Pfade mit Punkt-Notation funktionieren für verschachtelte Daten — z. B. wenn eine Tool-Antwort {"customer": {"name": "Anna", "tier": "gold"}} war, können Sie {{customer.name}} oder {{customer.tier}} lesen.

Unbekannte Tokens bleiben sichtbar

Wenn ein Token eine nicht existierende Variable referenziert, bleibt der wörtliche {{name}}-Text stehen (er wird nicht ausgeblendet). Das ist beabsichtigt — so sind kaputte Templates in einem Test-Call leicht zu erkennen, statt sie still zu verschlucken.


Häufige Muster

Qualifizieren → Verzweigen → Routen

Start
└─ Agent (greeting + qualify)
└─ Gather Input (intent)
└─ Condition: intent == "sales" → Agent (sales)
└─ Condition: intent == "support" → Subagent (triage)
└─ Always (catch-all) → Say "Let me connect you" → Phone Transfer

Nachschlagen → Personalisieren

Start
└─ Tool (CRM lookup, writes is_known, name, tier)
└─ Condition: is_known == true → Agent (warm greeting with {{name}})
└─ Always (else) → Agent (cold greeting)

Wiederverwendbarer Helfer (Subagent side-trip)

Agent (main conversation)
└─ AI decides: "Caller mentions an address" → Subagent (address collector)
└─ on finish: result = full_address
└─ Agent continues with {{full_address}}

Was während eines Workflow-Anrufs gesperrt ist

Einige Defaults ändern sich, wenn ein Graph den Anruf steuert:

  • Die Sprache ist gesperrt auf die Sprache des ersten Agenten des Workflows. Die KI kann während des Anrufs nicht die Sprache wechseln. Das verhindert, dass das Modell bei einem lauten Turn in die falsche Sprache abdriftet.
  • Das Haupt-Prompt des Agenten wird ersetzt durch das Prompt des aktiven Knotens. Das ist die „Graph besitzt die Persona"-Regel — siehe Warnung unter Agent.
  • Die erste Nachricht kommt vom Greeting des Einstiegsknotens, nicht vom Feld „Begin Message" des Agenten.

Loop-Schutz — Schritt-Budget

Jeder Workflow hat eine maximale Anzahl an Übergängen pro Anruf (Standard 25). Jedes Mal, wenn der Graph zu einem neuen Knoten wechselt, sinkt der Zähler um eins. Wenn er null erreicht, hört der Workflow auf, zwischen Knoten zu springen, um Endlosschleifen zu verhindern.

Sie können einen Fallback-Knoten für diesen Fall festlegen (typischerweise ein Phone Transfer oder End Call) — der Anruf wird dorthin umgeleitet, sobald das Budget aufgebraucht ist. Andernfalls übernimmt die KI wieder die Kontrolle und der Graph friert effektiv für den Rest des Anrufs ein.

Sie müssen sehr selten darüber nachdenken — es ist ein Sicherheitsnetz für Graphen, die versehentlich loopen. Wenn Sie es im normalen Gebrauch treffen, haben Sie wahrscheinlich irgendwo einen Zyklus.


Testen

Die Test Call-Schaltfläche im Editor öffnet einen In-Browser-Anruf mit dem aktuellen Workflow-Entwurf. Während der Anruf läuft, bewegt sich ein leuchtendes Glühwürmchen zwischen den Knoten auf der Leinwand, sodass Sie genau sehen, wo der Anruf ist. Der Editor ist während eines Test-Calls gesperrt, um zu verhindern, dass Bearbeitungen den Live-Zustand desynchronisieren.

Verwenden Sie Test Call zur Überprüfung:

  • Ihre Bedingungen matchen die Werte, die Sie erwarten (sehen Sie zu, ob das Glühwürmchen einen Zweig überspringt, von dem Sie dachten, er würde auslösen).
  • Ihre Tokens werden korrekt ersetzt (achten Sie auf hängende {{name}}, falls ein Wert noch nicht gesetzt war).
  • Tool-Fehler degradieren graceful (Ihr Fallback-Pfad löst tatsächlich aus).

Wichtige Fehlerfälle

SituationWas passiert
Tool / Integration-Aufruf schlägt fehlDer Graph läuft ohne die Daten weiter. Ihre nachgelagerten Bedingungen sollten die fehlende Variable behandeln.
Phone Transfer schlägt fehl (ungültige Nummer, keine Antwort, fehlende Telefonanbindung)Der Graph rollt zurück, der aktuelle Agent bleibt in der Leitung, und das Gespräch läuft normal weiter.
Subagent startet nichtDer Abstecher wird abgebrochen, der Eltern-Agent bleibt, und eine kurze Fehlerzeile wird gesprochen.
{{missing_variable}} im TextBleibt wörtlich im Output — bei Test-Calls leicht zu erkennen.
Sub-workflow-KnotenLäuft derzeit hindurch, ohne etwas zu tun. Verlassen Sie sich noch nicht darauf.
Schritt-Budget aufgebrauchtLeitet zum Fallback-Knoten um, falls einer gesetzt ist, sonst übernimmt die KI wieder.

Wann KEIN Workflow zu verwenden

Workflows sind mächtig, aber nicht die richtige Antwort für jeden Agenten. Bleiben Sie bei einem einzelnen Prompt, wenn:

  • Das Gespräch ergebnisoffen ist („Fragen des Anrufers zu unseren Produkten beantworten").
  • Sie keine klare Verzweigungslogik haben — die meisten Entscheidungen sind Ermessensfragen, die die KI gut handhabt.
  • Sie nur einen Agent-Knoten und einen End-Call schreiben würden — das ist nur ein Prompt mit zusätzlichen Schritten.

Greifen Sie zu einem Workflow, wenn:

  • Sie den Anruf als Flussdiagramm mit drei oder mehr klaren Phasen skizzieren können.
  • Sie mindestens eine deterministische Verzweigung auf eine Variable brauchen (eine Condition).
  • Sie einen Gesprächsausschnitt über mehrere Agenten wiederverwenden wollen (einen Subagent).
  • Sie bereits „wenn der Anrufer X sagt, mache Y"-Regeln in einem Prompt stapeln und sie unzuverlässig sind.