Zum Inhalt

Konversationen

Evaluieren Sie Multi-Turn-Dialoge und konversationsabhängige Prompts mit systematischem Kontextmanagement

Konversationen ermöglichen es Ihnen, Prompts zu testen, die einen Gesprächsverlauf oder Multi-Turn-Dialogkontext erfordern. Egal, ob Sie Chatbots, Kundensupport-Systeme oder eine beliebige LLM-Anwendung erstellen, die den Kontext über mehrere Interaktionen hinweg beibehält – mit der Konversationsfunktion können Sie systematisch evaluieren, wie Ihre Prompts mit unterschiedlichen Gesprächsverläufen umgehen.

Was sind Konversationen?

Konversationen in elluminate sind strukturierte Nachrichtenverläufe, die Kontext für die Prompt-Evaluierung bieten. Anstatt Prompts isoliert zu testen, ermöglichen Ihnen Konversationen Folgendes:

  • Testen von Multi-Turn-Dialogen – Evaluieren Sie, wie Ihr LLM und Ihr Prompt mit laufenden Gesprächen umgehen.
  • Bereitstellung des Gesprächsverlaufs – Geben Sie Ihrem LLM den Kontext früherer Nachrichten.
  • Evaluierung des Kontextbewusstseins – Überprüfen Sie, ob Ihr Prompt die Kohärenz über mehrere Gesprächsrunden hinweg beibehält.
  • Testen mit realistischen Szenarien – Verwenden Sie tatsächliche Gesprächsprotokolle aus Ihrem System.

Eine Konversation wird als spezielles Format in Ihrer Collection gespeichert, welches Folgendes enthält:

  • Messages – Der Gesprächsverlauf (System-, Benutzer-, Assistenten-, Tool-Nachrichten)
  • Tools (optional) – Tool-Definitionen, die während der Konversation verfügbar sind
  • Tool choice (optional) – Wie das Modell Tools verwenden soll
  • Response format (optional) – Anforderungen an die strukturierte Ausgabe
  • Metadata (optional) – Zusätzliche Konfigurationen wie Merge-Modi

Wie Konversationen funktionieren

Die Conversation-Spalte

Konversationen werden in einem speziellen Spaltentyp Conversation in Ihren Collections gespeichert. Diese Spalte:

  • Enthält strukturierte Konversations-Formate (keinen reinen Text)
  • Darf nur einmal pro Collection existieren
  • Kann nicht gleichzeitig mit "Direkte Eingabe"-Spalten existieren
  • Kann nach der Erstellung nicht umbenannt werden

Die Direkte Eingabe-Spalte

Direkte Eingaben stehen im Kontrast zu Konversationen und sind ein einzelner Prompt der an ein LLM gesendet wird. Sie ermöglichen es nicht Variablen zu verwenden und können nicht in Verbindung mit Konversationen genutzt werden.

Direkte Eingaben vereinfachen es spezifische Varianten von Prompts direkt gegen ein LLM zu testen.

Auf der technischen Ebene sind direkte Eingaben eine vereinfachte Form von Konversationen mit einer einzelnen Nutzer-Nachricht.

Nachrichtenfluss

Wenn Sie ein Experiment mit Konversationen durchführen, führt elluminate folgende Schritte aus:

  1. Fügt optional Ihr Template hinzu – Falls vorhanden, füllen wir Ihre Prompt Template-Platzhalter mit Werten aus der Collection.
  2. Hängt Konversationsnachrichten an – Fügt den Gesprächsverlauf nach dem Prompt Template hinzu.
  3. Sendet an das LLM – Das Modell sieht den vollständig konstruierten Nachrichtenverlauf.
  4. Evaluiert die Response – Wir bewerten basierend auf Criteria mit vollem Konversationskontext.

Beispiel für die Nachrichtenreihenfolge:

1. System-Nachricht aus dem Template
2. User-Nachricht aus dem Template (mit ausgefüllten Platzhaltern)
3. User-Nachricht aus dem Konversations-Format
4. Assistant-Nachricht aus dem Konversations-Format
5. User-Nachricht aus dem Konversations-Format
-> LLM generiert hier die Response

Einrichten von Konversationen

Schritt 1: Erstellen einer Collection mit einer Conversation-Spalte

Über die UI

  1. Navigieren Sie zu den Collections Ihres Projects.
  2. Klicken Sie auf "Neue Collection" oder öffnen Sie eine bestehende Collection.
  3. Klicken Sie auf das Drei-Punkte-Menü und wählen Sie "Spalten verwalten".
  4. Klicken Sie auf "Spalte hinzufügen".
  5. Konfigurieren Sie die Spalte:
  6. Name: Wählen Sie einen beschreibenden Namen (z. B. conversation, chat_history).
  7. Type: Wählen Sie "Konversation".
  8. Default Value: Leer lassen (Konversations-Spalten verwenden derzeit keine Standardwerte).

Hinzufügen einer Collection-Spalte

Einschränkungen für Konversations-Spalten:

  • Nur eine Konversations-Spalte pro Collection.
  • Kann nicht gleichzeitig mit einer "Direkte Eingabe"-Spalte existieren.
  • Der Spaltenname kann nach der Erstellung nicht geändert werden.
  • Muss gültige Konversations-Formate enthalten.

Schritt 2: Konversationsdaten hinzufügen

Format der Konversationen

Konversationen verwenden das Messages-Schema:

"messages": [
    {"role": "user", "content": "Hallo!"},
    {"role": "assistant", "content": "Hi! Wie kann ich helfen?"},
    {"role": "user", "content": "Ich brauche Hilfe mit meinem Account."}
]

Oder das Unified Conversation Envelope (UCE) Schema (alles außer messages ist optional):

{
    "schema_version": "elluminate.uce/1",
    "input": {
        "messages": [
            {"role": "user", "content": "Hallo!"},
            {"role": "assistant", "content": "Hi! Wie kann ich helfen?"},
            {"role": "user", "content": "Ich brauche Hilfe mit meinem Account."}
        ],
        "tools": [...],
        "tool_choice": "auto",
        "response_format": {...},
        "metadata": {...}
    }
}

Rollen

Nachrichten unterstützen die folgenden Rollen:

  • system – Systemanweisungen oder Kontext
  • user – Benutzernachrichten
  • assistant – Antworten des LLMs
  • tool – Ergebnisse von Tool-Ausführungen

Hinzufügen von Konversationsdaten über die UI

  1. Öffnen Sie Ihre Collection.
  2. Klicken Sie auf "Variable hinzufügen".
  3. Fügen Sie für die Konversations-Spalte einen gültigen Wert ein.
  4. Optionalerweise, füllen Sie andere Spalten aus (z. B. Szenariobeschreibung).
  5. Klicken Sie auf den Haken rechts zum Speichern.

Konversationsdaten über UI hinzufügen

Massenimport via Datei-Upload

Bereiten Sie eine JSONL-Datei vor, in der jeder Wert der Konversations-Spalte dem UCE Format folgt:

{"conversation": {"schema_version": "elluminate.uce/1", "input": {"messages": [...]}}, "scenario": "password_reset", "category": "account"}
{"conversation": {"schema_version": "elluminate.uce/1", "input": {"messages": [...]}}, "scenario": "billing_inquiry", "category": "support"}

Laden Sie diese dann wie folgt hoch:

  1. Auf der Collections Seite die Collection öffnen.
  2. Klicken Sie auf "Variablen hochladen" und wählen Sie die JSONL-Datei aus.
  3. Bestätigen Sie den Upload.

Verwendung von Konversationen in Experimenten

Konversationen funktionieren sowohl mit als auch ohne Prompt Templates. Das Template liefert den anfänglichen Kontext und die Konversation liefert den Gesprächsverlauf.

Konversationen machen Prompt Templates optional

Erweiterte Funktionen

Kombination mit anderen Spalten

Sie können Conversation-Spalten mit regulären Textspalten mischen, um Metadaten hinzuzufügen:

Collection mit Metadaten

Metadaten im Sample Navigator

Tool Calling in Konversationen

Fügen Sie Tool-Definitionen in Ihr Konversations-Format ein:

{
    "schema_version": "elluminate.uce/1",
    "input": {
        "messages": [
            {"role": "user", "content": "Prüfe meinen Kontostand."}
        ],
        "tools": [
            {
                "type": "function",
                "function": {
                    "name": "get_account_balance",
                    "description": "Retrieves the current account balance",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "account_id": {"type": "string"}
                        },
                        "required": ["account_id"]
                    }
                }
            }
        ],
        "tool_choice": "auto"
    }
}

Zusammenführen von Tools (Merging)

Wenn sowohl Ihr Template als auch Ihre Konversation Tools definieren, werden diese standardmäßig zusammengeführt. Steuern Sie dies mit merge_mode:

{
    "schema_version": "elluminate.uce/1",
    "input": {
        "messages": [...],
        "tools": [
            // Nur diese Tools werden verfügbar sein
        ],
        "metadata": {
            "merge_mode": {
                "tools": "replace"  // Oder alle Tools mit "merge" (Standard)
            }
        }
    }
}

Steuerung des Response-Formats

Geben Sie das Ausgabeformat pro Konversation mit einem JSON-Schema an:

{
    "schema_version": "elluminate.uce/1",
    "input": {
        "messages": [...],
        "response_format": {
            "json_schema": {
                "name": "customer_summary",
                "schema": {
                    "type": "object",
                    "properties": {
                        "issue": {
                            "type": "string"
                        },
                        "priority": {
                            "type": "string",
                            "enum": ["low", "medium"]
                        }
                    },
                    "required": ["issue", "priority"]
                }
            }
        }
    }
}

Praxisnahe SDK-Beispiele

Beispiel 1: Kundensupport-Chatbot

from elluminate import Client

client = Client()

# Collection erstellen
collection, _ = client.collections.get_or_create(
    name="Customer Support Scenarios",
    columns=[
        {"name": "conversation", "column_type": "conversation"},
        {"name": "scenario_type", "column_type": "category"}
    ]
)

# Eine Konversation zum Zurücksetzen des Passworts hinzufügen
password_reset_conversation = {
    "schema_version": "elluminate.uce/1",
    "input": {
        "messages": [
            {"role": "user", "content": "I can't log into my account."},
            {"role": "assistant", "content": "I can help you with that. Can you tell me your email address?"},
            {"role": "user", "content": "It's [email protected]"},
            {"role": "assistant", "content": "Thank you. I've found your account. Would you like me to send a password reset link?"},
            {"role": "user", "content": "Yes please."}
        ]
    }
}

client.template_variables.add_to_collection(
    template_variables={
        "conversation": password_reset_conversation,
        "scenario_type": "password_reset"
    },
    collection=collection
)

# Criteria erstellen
criteria = [
    "Does the assistant maintain a professional and helpful tone throughout?",
    "Does the assistant successfully guide the user to resolve their issue?",
    "Does the assistant ask appropriate follow-up questions?"
]

criterion_set, _ = client.criterion_sets.get_or_create(
    name="Customer Support Quality",
    criteria=criteria
)

# Template erstellen
prompt_template, _ = client.prompt_templates.get_or_create(
    user_prompt_template=[
        {"role": "system", "content": "You are a helpful customer support assistant. Continue the conversation naturally based on the history."}
    ],
    name="Support Assistant"
)

# Criteria mit Template verknüpfen
criterion_set = client.criterion_sets.add_prompt_template(
    criterion_set=criterion_set,
    prompt_template=prompt_template
)

# Experiment ausführen
experiment = client.experiments.create(
    name="Support Conversation Quality",
    prompt_template=prompt_template,
    collection=collection
)

# Responses generieren und bewerten
responses = client.responses.generate(experiment=experiment)
client.ratings.rate_many(responses)

# Ergebnisse anzeigen
experiment.print_results_summary()

Beispiel 2: Technischer Support über mehrere Runden

# Konversation zur technischen Fehlerbehebung
tech_support_conversation = {
    "schema_version": "elluminate.uce/1",
    "input": {
        "messages": [
            {"role": "user", "content": "My app keeps crashing."},
            {"role": "assistant", "content": "I'm sorry to hear that. What device are you using?"},
            {"role": "user", "content": "iPhone 14 with iOS 17."},
            {"role": "assistant", "content": "Thank you. Have you tried updating the app to the latest version?"},
            {"role": "user", "content": "Yes, it's already updated."},
            {"role": "assistant", "content": "Let's try clearing the app cache. Go to Settings > Apps > [App Name] > Clear Cache."},
            {"role": "user", "content": "Okay, I did that. Now what?"}
        ]
    }
}

client.template_variables.add_to_collection(
    template_variables={
        "conversation": tech_support_conversation,
        "scenario_type": "technical_troubleshooting",
        "difficulty": "medium"
    },
    collection=collection
)

Beste Praktiken

Strukturierung von Konversationsdaten

Halten Sie Konversationen fokussiert

  • Jede Konversation sollte ein spezifisches Szenario oder einen Anwendungsfall testen.
  • Beschränken Sie die Länge der Konversation auf den relevanten Kontext (typischerweise 3–10 Nachrichten).
  • Entfernen Sie irrelevanten Smalltalk oder Begrüßungen, außer wenn diese spezifisch getestet werden sollen.

Verwenden Sie realistische Gesprächsmuster

  • Fügen Sie typische Benutzernachrichten hinzu (Tippfehler, unvollständige Sätze, unterschiedliche Formulierungen).
  • Fügen Sie Assistentenantworten hinzu, die das tatsächliche Verhalten Ihres Systems widerspiegeln.
  • Beziehen Sie Randfälle ein (unklare Anfragen, Fragen außerhalb des Themas).

Balancieren Sie Ihre Testszenarien

  • Happy Paths (60–70 %) – Normale Konversationen, die gut funktionieren sollten.
  • Edge Cases (20–30 %) – Ungewöhnliche, aber gültige Gesprächsverläufe.
  • Adversarial Cases (10–20 %) – Versuche, das System zu verwirren oder zu stören.

Evaluierungsstrategie

Entwerfen Sie konversationsbewusste Kriterien

Gute Kriterien beziehen sich auf den Gesprächsverlauf:

  • ✅ "Bleibt der Assistent konsistent mit den vorher in der Konversation gegebenen Informationen?"
  • ✅ "Antwortet der Assistent angemessen im Rahmen der Konversation auf die Folgefrage des Nutzers?"
  • ❌ "Ist die Antwort hilfreich?" (zu allgemein)

Testen Sie den inkrementellen Aufbau von Konversationen

Anstatt einer langen Konversation sollten Sie die Progression testen:

  1. Konversation 1: Anfängliche Anfrage
  2. Konversation 2: Anfängliche Anfrage + eine Folgefrage
  3. Konversation 3: Anfängliche Anfrage + zwei Folgefragen

Dies hilft zu isolieren, wo das Kontextbewusstsein zusammenbricht.

FAQ

Kann ich das Konversationsformat nach dem Hinzufügen bearbeiten?

Ja, klicken Sie auf das Bearbeitungssymbol in der Variablen-Tabellenzeile. Achten Sie darauf, eine gültige JSON-Struktur beizubehalten.

Was passiert, wenn mein Konversationsformat ungültig ist?

elluminate validiert das Format beim Speichern. Sie sehen eine Fehlermeldung, die angibt, was falsch ist (z. B. "Missing required field 'messages'", "Invalid tool definition").

Kann ich Konversationen mit Batch-Verarbeitung verwenden?

Ja, Konversationen funktionieren mit allen Experiment-Funktionen, einschließlich Batch-Operationen und asynchronen SDK-Methoden.

Wie unterscheiden sich Konversationen von Direkten Eingabe-Spalten?

  • Konversationen: Strukturierte Nachrichtenverläufe mit optionalen Tools/Metadaten. Können mit Templates kombiniert werden.
  • Direkte Eingabe: Einzelne Benutzernachricht, kann nicht mit Templates kombiniert werden. Für einfache Tests ohne Templates.

Kann ich mehrere Konversations-Spalten haben?

Nein, nur eine Konversations-Spalte pro Collection. Dies sorgt für Klarheit darüber, welche Eingabe den Konversationskontext liefert.

Zählen Konversationsnachrichten zu den Token-Limits?

Ja, alle Nachrichten (Template + Konversation) werden an das LLM gesendet und zählen zum Kontextfenster des Modells.

Kann ich in Kriterien auf Konversationsdaten verweisen?

Das Rating Model sieht bei der Evaluierung die gesamte Konversation, sodass sich Ihre Kriterien auf "früher in der Konversation" oder "den Gesprächsverlauf" beziehen können.