Zum Hauptinhalt springen

Eingabegenerierung

Standardmäßig verwendet jede Runde in einem Testfall eine feste Benutzereingabe – eine spezifische Nachricht, die jedes Mal, wenn der Test ausgeführt wird, an den Bot gesendet wird. Die Eingabegenerierung ist ein alternativer Modus, bei dem ein LLM die Benutzernachricht zur Laufzeit basierend auf Anweisungen in natürlicher Sprache generiert.

Warum generierte Eingaben verwenden

Feste Eingaben sind einfach und vollständig reproduzierbar, was sie zu einer guten Standardwahl macht. Aber sie haben eine Einschränkung: Sie testen genau eine Formulierung. Wenn Ihr Bot dasselbe Thema leicht unterschiedlich behandelt, je nachdem, wie der Benutzer es formuliert, deckt eine feste Eingabe nur einen Fall ab.

Generierte Eingaben beheben dies, indem sie natürliche Variationen simulieren. Anstatt die genaue Nachricht anzugeben, beschreiben Sie, was der Benutzer sagen soll – und das LLM generiert bei jedem Testlauf eine realistische Formulierung. Dies macht Tests weniger anfällig und besser darin, Regressionen in der Art und Weise zu erkennen, wie der Bot Benutzer versteht und darauf reagiert.

Generierte Eingaben funktionieren gut, wenn:

  • Sie überprüfen möchten, ob der Bot auf unterschiedliche Formulierungen korrekt reagiert
  • Sie das Bot-Verhalten testen, das robust gegenüber Variationen in der natürlichen Sprache sein sollte
  • Sie verschiedene Benutzerpersönlichkeiten oder Kommunikationsstile simulieren möchten

Feste Eingaben bleiben die bessere Wahl, wenn:

  • Sie 100% reproduzierbare Testläufe benötigen (z.B. zum Debuggen eines bestimmten Transkripts)
  • Sie die genaue Phrasenverarbeitung oder spezifische Befehle testen
  • Sie die Testausführungskosten und -latenz minimieren möchten

Wie es funktioniert

Wenn eine Runde so konfiguriert ist, dass sie die Eingabegenerierung verwendet, ruft das System einen Eingabegenerator (einen Globalen Agenten – siehe unten) auf, um die Benutzernachricht zu erzeugen, bevor sie an den Bot gesendet wird. Sie geben Generierungsanweisungen an, die beschreiben, was der Benutzer sagen soll, wie zum Beispiel:

"Fragen Sie nach dem Lieferstatus einer kürzlich aufgegebenen Bestellung"

Der Eingabegenerator verwendet diese Anweisungen, den bisherigen Gesprächsverlauf und sein konfiguriertes LLM, um eine realistische Benutzernachricht zu generieren. Die generierte Nachricht wird dann als tatsächliche Eingabe für diese Runde verwendet.

Wiederholungen

Bei der Verwendung generierter Eingaben können Sie eine maximale Anzahl von Wiederholungen für die Runde konfigurieren. Wenn die generierte Eingabe dazu führt, dass die Bedingungen der Runde fehlschlagen, generiert das System eine neue Eingabe und versucht es erneut – bis zum konfigurierten Limit. Dies ist nützlich, wenn gelegentliche Abweichungen aufgrund von Formulierungsvariationen erwartet werden und Sie möchten, dass der Test besteht, solange mindestens ein Versuch erfolgreich ist.

Wichtig ist, dass ein Wiederholungsversuch nicht das Gespräch von vorne beginnt. Jede wiederholte Eingabe wird als Fortsetzung des bestehenden Gesprächs gesendet, wobei alle vorherigen Runden und der Kontext erhalten bleiben. Das bedeutet, dass der Bot die gesamte Historie sieht, einschließlich des vorherigen (fehlgeschlagenen) Versuchs, wenn er die wiederholte Eingabe verarbeitet.

Jeder Versuch wird in den Ausführungsergebnissen aufgezeichnet, sodass Sie überprüfen können, welche Formulierung generiert wurde und wie der Bot reagiert hat.

Globale Agenten: Eingabegeneratoren

Ein Eingabegenerator ist ein wiederverwendbarer Globaler Agent, der steuert, wie Benutzereingaben generiert werden. Er definiert:

  • LLM-Konfiguration — welcher Anbieter und welches Modell verwendet werden soll, Temperatur und wie viel Gesprächsverlauf als Kontext einbezogen werden soll
  • Generierungsaufforderung — die Systemaufforderungsvorlage, die das LLM anweist, wie Eingaben zu erzeugen sind, geschrieben in Jinja2; hat Zugriff auf {{ user_provided_instructions }}, {{ conversation_history }} und alle benutzerdefinierten Variablen
  • Standardgenerierungsanweisungen — optionale Standardanweisungen, die das Anweisungsfeld pro Runde vorausfüllen; können pro Runde überschrieben werden
  • Benutzerdefinierte Variablen — parametrisierte Werte, die in der Generierungsaufforderung referenziert und pro Runde überschrieben werden können
  • Agent — der Python-Agent, der die Generierungsanfrage verarbeitet; der eingebaute Standardagent behandelt die meisten Szenarien, aber ein benutzerdefinierter Python-Agent kann für erweiterte Steuerung verwendet werden

Jeder Bot wird mit einem Standard-Eingabegenerator geliefert, der mit sinnvollen Einstellungen sofort einsatzbereit ist. Für die meisten Anwendungsfälle müssen Sie nur die Generierungsanweisungen pro Runde angeben und den Generator auf seinem Standard belassen.

Benutzerdefinierte Variablen für Wiederverwendbarkeit

Benutzerdefinierte Variablen auf einem Eingabegenerator ermöglichen es, einen einzigen Generator in verschiedenen Testszenarien wiederzuverwenden. Beispielsweise könnte ein „Persona-Simulator“-Generator eine persona-Variable definieren:

Standard: "neugieriger Kunde"

Verschiedene Runden können dann persona überschreiben, um verschiedene Benutzertypen zu simulieren:

  • "frustrierter Kunde" — zum Testen der Empathieverarbeitung
  • "technischer Benutzer" — zum Testen fortgeschrittener Support-Flows
  • "neuer Benutzer, der mit dem Produkt nicht vertraut ist" — zum Testen des Onboardings

Dies vermeidet die Erstellung eines separaten Generators für jede Persona.

Benutzerdefinierte Agenten

Für erweiterte Szenarien kann der Python-Agent, der die Generierung verarbeitet, durch eine benutzerdefinierte Implementierung ersetzt werden. Ein benutzerdefinierter Agent erhält die Benutzeranweisungen, den Gesprächsverlauf und die Variablen und kann beliebige Logik anwenden, um die generierte Eingabe zu erzeugen – zum Beispiel, um domänenspezifische Einschränkungen durchzusetzen oder sich mit externen Datenquellen zu integrieren.

Benutzerdefinierte Agenten werden im Skriptbereich Ihres Bots definiert und in der Eingabegeneratorkonfiguration ausgewählt.

Beste Praktiken

Schreiben Sie klare Generierungsanweisungen. Je spezifischer Ihre Anweisungen sind, desto zuverlässiger generiert das LLM relevante Eingaben. Beschreiben Sie Absicht und Kontext, nicht die genaue Wortwahl.

Verwenden Sie eine niedrigere Temperatur für mehr Konsistenz. Eine Temperatur von 0,5–0,7 bietet gute Variation, bleibt aber beim Thema. Sehr hohe Temperaturen können zu themenfremden oder unrealistischen Eingaben führen.

Kombinieren Sie mit Verhaltensbedingungen. Da die genaue Formulierung unvorhersehbar ist, vermeiden Sie Bedingungen wie „Genau“ oder „Enthält“ bei der Verwendung generierter Eingaben. Verlassen Sie sich stattdessen auf Tool-Call-Bedingungen (zur Überprüfung der Weiterleitung), Slot-Bedingungen (zur Überprüfung der Extraktion) und LLM-Judge-Bedingungen (zur Bewertung der Antwortqualität).

Verwenden Sie feste Eingaben zum Debuggen. Wenn ein Test fehlschlägt und Sie ihn konsistent reproduzieren müssen, wechseln Sie zu einer festen Eingabe, um das Problem zu isolieren. Generierte Eingaben erschweren das Debuggen, da jeder Lauf unterschiedlich ist.