VoiceBooker

Prompts / Anweisungen

Prompts sagen dem LLM im Allgemeinen, was es als Nächstes tun soll. Zum Beispiel den Benutzer nach bestimmten Informationen zu fragen, etwa nach Name, Versicherungsnummer, Adresse/Kontaktdaten usw.

Prompts können entweder statisch oder dynamisch erzeugt werden.

Statische/Klartext-Prompts

Beispiel:

Begrüße den Anrufer und frage nach seinem Namen.

In statischen Prompts können Sie auf alle Variables des State/Zustands zugriffen mittels {{variableName}}.

Beispiel: Im Zustand ist folgende Information gespeichert:

{
    companyName: "claiverly GmbH"
}

Prompt der diese Information nutzt

Begrüße den Anrufer mit folgendem Satz: "Willkommen bei der {{companyName}}".

Dynamische/Programmgesteuerte Prompts

Manchmal ist es notwendig, dynamische Informationen in den Prompt einzubauen, die aus einer externen Quelle stammen oder im State/Zustands liegen und nicht statisch sind.

Beispiel: Ihre Anwendung benötigt das aktuelle Datum und die aktuelle Uhrzeit. LLMs wurden bis zu einem bestimmten Zeitpunkt trainiert und sind textbasiert, daher kennen sie das aktuelle Datum und die Uhrzeit nicht. Wenn die Anwendung Zeitinformationen benötigt, z. B. um Termine zu planen, kann das LLM über das aktuelle Datum und die Uhrzeit informiert werden.

Beispiel, wie man dem LLM das aktuelle Datum und die Uhrzeit mitteilt:

function prompt(params) {
    return ({ "prompt": "Heute ist " + new Date().toLocaleString() });
}

Beispiel, wie man die aktuelle Temperatur von Berlin Alexanderplatz via Webhook Abfrage in den Prompt einbindet:

function prompt(params) {
    const temperature = webhook("https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m", {}, {method: "get"});
    return ({ "prompt": `The temperature in Berlin is right now: ${JSON.stringify(temperature)}`});
}

Gute Prompts schreiben

Ein guter Prompt beschreibt Ziel, Grenzen und gewünschtes Verhalten des Assistenten eindeutig. Beginnen Sie mit dem gewünschten Ergebnis und ergänzen Sie nur den notwendigen Kontext und die dafür erforderlichen Regeln. Prompting ist ein iterativer Prozess: Testen Sie den ersten Entwurf mit realistischen Gesprächen, prüfen Sie das Ergebnis und überarbeiten Sie die Anweisung, die das unerwünschte Verhalten verursacht hat.

Prompt strukturieren

Teilen Sie den Prompt in kurze, klar benannte Abschnitte auf. Dadurch lassen sich Prompts leichter pflegen und das LLM kann Rolle, Informationen und Regeln besser unterscheiden.

## Rolle
Sie sind die freundliche Rezeption einer Zahnarztpraxis.

## Ziel
Unterstützen Sie Anrufer beim Buchen, Ändern oder Absagen eines Termins.

## Gesprächsregeln
- Begrüßen Sie den Anrufer und fragen Sie, wie Sie helfen können.
- Stellen Sie immer nur eine Frage auf einmal.
- Verwenden Sie kurze, natürliche Sprache für ein Telefongespräch.
- Wiederholen Sie Datum und Uhrzeit und fragen Sie vor der Buchung nach Bestätigung.

## Grenzen
- Erfinden Sie niemals freie Termine, Preise oder Patientendaten.
- Wenn eine Information fehlt, sagen Sie das und bieten Sie eine Weiterleitung an.

## Tool-Nutzung
- Rufen Sie `find_appointments` erst nach Erfassung der erforderlichen Daten auf.
- Rufen Sie `book_appointment` erst nach ausdrücklicher Bestätigung auf.

Sinnvolle Abschnitte sind Rolle, Ziel, Kontext, Gesprächsregeln, Tools, Grenzen, Fallbacks und Beispiele. Halten Sie bei Multi-Stage-Bots jede Stage auf einen Gesprächszustand fokussiert und beschreiben Sie klar, wann zur nächsten Stage gewechselt wird.

Gewünschtes Verhalten konkret beschreiben

Vermeiden Sie unklare Vorgaben wie „Seien Sie hilfreich“. Beschreiben Sie, was der Assistent wann tun und sagen soll:

Wenn der Anrufer einen Termin absagen möchte:
1. Fragen Sie nach Datum und Namen.
2. Suchen Sie den passenden Termin.
3. Lesen Sie die Termindaten vor.
4. Fragen Sie: „Soll ich diesen Termin absagen?“
5. Rufen Sie `cancel_appointment` erst nach Bestätigung auf.

Definieren Sie wichtige Verzweigungen ausdrücklich. Legen Sie auch fest, was bei fehlenden Angaben, einem erfolglosen Tool-Aufruf, einer Ablehnung oder einem Anliegen außerhalb des Zuständigkeitsbereichs geschieht.

Für gesprochene Gespräche schreiben

  • Halten Sie Antworten kurz und stellen Sie eine Frage nach der anderen.
  • Verwenden Sie kurze Sätze und vermeiden Sie lange Listen, URLs und Fachbegriffe.
  • Bestätigen Sie wichtige Namen, Daten, Uhrzeiten, Adressen und Beträge.
  • Legen Sie fest, wie Zahlen, Datumsangaben und E-Mail-Adressen vorgelesen werden.
  • Beschreiben Sie den Umgang mit Unterbrechungen und unklaren Antworten.
  • Geben Sie Sprache, Tonalität, Förmlichkeit und bevorzugte Begriffe vor.
Sprechen Sie in formellem Deutsch und verwenden Sie „Sie“. Verwenden Sie die 24-Stunden-
Schreibweise. Wenn Sie eine Telefonnummer erhalten, wiederholen Sie jede Ziffer und bitten
Sie um Bestätigung. Raten Sie niemals; stellen Sie bei Unklarheit eine kurze Rückfrage.

Tool-Aufrufe eindeutig steuern

Beschreiben Sie Zweck und Zeitpunkt jedes Tools sowie Voraussetzungen, Bestätigungen und das Verhalten nach Erfolg oder Fehler. Prompt und Tool-Beschreibung dürfen sich nicht widersprechen. Bei Single- und Multi-Stage-Bots sollten Bedingungen für Statuswechsel, Nachrichten, Buchungen und Weiterleitungen ausdrücklich formuliert werden. Siehe Tools und Funktionen.

Kontext und Beispiele verwenden

Relevante Fakten können direkt im Prompt, über State, eine Wissensbasis oder einen dynamischen Prompt bereitgestellt werden. Geben Sie an, welcher Quelle zu vertrauen ist und was bei fehlenden Informationen geschieht. Fügen Sie niemals Geheimnisse oder Zugangsdaten in Prompts ein.

Beispiele helfen bei einheitlicher Formatierung und Wortwahl. Halten Sie sie kurz, realistisch und abwechslungsreich; widersprüchliche Beispiele führen zu widersprüchlichem Verhalten.

Häufige Probleme vermeiden

  • Entfernen oder korrigieren Sie widersprüchliche Anweisungen.
  • Teilen Sie nicht zusammengehörige Aufgaben auf mehrere Stages oder Assistenten auf.
  • Definieren Sie Fallbacks für fehlende Daten, Tool-Fehler, Stille und Übergaben.
  • Entfernen Sie Regeln, die das gewünschte Ergebnis nicht beeinflussen.
  • Legen Sie Länge, Format, Sprache und Ton fest.
  • Weisen Sie den Assistenten an, bei Unsicherheit nachzufragen statt zu raten.

Systematisch testen und verbessern

Definieren Sie zuerst, wann der Prompt als erfolgreich gilt. Testen Sie Erfolgsfälle, Unterbrechungen, unklare Antworten, fehlende Daten, Tool-Fehler und Übergaben. Prüfen Sie Transkripte und Funktionsaufrufe und ändern Sie jeweils nur einen Teil. Testen Sie bestehende Szenarien nach jeder Änderung erneut. Die Debugging-Dokumentation erklärt die Prüfung von State, Stacks, Funktionen und Webhook-Ergebnissen.

Auf dieser Seite