Anleitung

Die Anweisungen für den Agenten enthalten eine detaillierte Anleitung für das Modell, was es tun soll. Diese Anweisungen werden in natürlicher Sprache gegeben.

Anweisungen schreiben

Anweisungen können Folgendes enthalten:

  • Gesamtziel
  • Verhaltensweise
  • Zu verwendende Persona
  • Eine Liste von Unteragenten, referenziert nach Anzeigename im Format: {@AGENT: Agent Name}
  • Eine Anweisung zur Verwendung eines bestimmten Tools, referenziert nach Anzeigename im Format: {@TOOL: tool_name}.
  • Verweis auf eine Variable, wobei der Variablenname in Snake Case in geschweifte Klammern gesetzt wird: {variable_name}.

Beispiel für einen Stammagenten:

CURRENT CUSTOMER: {username}

You are the main Weather Agent coordinating multiple agents.
Your primary responsibility is to provide weather information.
Use {@TOOL: get_weather} ONLY for specific weather requests 
(for example, 'weather in London').

If you know the user's name, always greet them by their name.

You have specialized sub-agents:
  1. Greeting Agent: Handles simple greetings like 'Hi', 'Hello'.
  2. Farewell Agent: Handles simple farewells like 'Bye', 'See you'.

Analyze the user's query. 
If it's a greeting, call {@AGENT: Greeting Agent} 
If it's a farewell, call {@AGENT: Farewell Agent} 
If it's a weather request, handle it yourself using {@TOOL: get_weather} 

For anything else, respond appropriately or state you cannot handle it.

Syntaxhervorhebung

Wenn in der Anleitung im Editor für Anweisungen mit der richtigen Syntax—{variable_name}, {@TOOL: tool_name}, oder {@AGENT: Agent Name}—auf eine Variable, ein Tool, oder einen Agenten verwiesen wird, wird sie mit einem farbigen Chip hervorgehoben, der angibt, dass die Syntax erkannt wird.

Um das Einfügen dieser Verweise zu erleichtern, bietet der Editor für Anweisungen zwei Tastenkombinationen:

  • Wenn Sie @ eingeben, wird ein Kontextmenü mit drei Optionen geöffnet: Agent, Tool oder Variable. Sie können in diesem Menü mit den Pfeiltasten und der Tab-Taste navigieren oder auf eine Option klicken. Wenn Sie eine Option auswählen, werden weitere Optionen angezeigt, bis der Verweis vollständig ist. Dann wird er zu einem Chip.
  • Wenn Sie { eingeben, wird ein Kontextmenü mit verfügbaren Variablen zum schnellen Einfügen geöffnet.

Sprachunterstützung

Verwenden Sie beim Entwerfen von Agent-Prompts und -Anweisungen immer Englisch, damit der Agent die Anweisungen bestmöglich versteht. Wenn Ihre Agenten mit Ihren Nutzern interagieren, können sie die Sprache der Eingabe des Endnutzers erkennen und automatisch in derselben Sprache antworten, sofern nicht anders angegeben.

Wenn Ihr Agent nur in bestimmten Sprachen sprechen soll (oder nicht sprechen soll), sollten Sie eine Anweisung hinzufügen, in der die Unterstützung beschrieben wird. Wenn Ihr Agent beispielsweise nur auf Italienisch antworten soll, können Sie in die Anweisungen „Du sprichst nur Italienisch und keine anderen Sprachen“ aufnehmen.

Eine Liste der unterstützten Sprachen finden Sie in der Sprachreferenz.

Anweisungen umstrukturieren

Sie können Anweisungen in natürlicher Sprache eingeben. Ihr Agent kann jedoch möglicherweise besser funktionieren, wenn Sie Anweisungen im XML-Format formatieren. So kann das Modell Anweisungen besser befolgen. Wir bieten eine standardmäßige XML-Struktur mit Tags, mit denen Sie Ihre Anweisungen strukturieren können. Nachdem Sie Anweisungen in natürlicher Sprache eingegeben haben, können Sie über dem Anweisungsfeld auf die Schaltfläche Anweisungen umstrukturieren klicken, um die Anweisungen in unsere empfohlene XML-Struktur zu formatieren.

In der folgenden Tabelle werden empfohlene XML-Tags und ihre Verwendung beschrieben:

Tag Beschreibung
role Definiert die Hauptfunktion oder -verantwortung des Agenten.
persona Beschreibt die Persönlichkeit, den Ton und die Verhaltensrichtlinien des Agenten.
primary_goal Gibt innerhalb von <persona> das Hauptziel des Agenten an.
constraints Listet Regeln oder Einschränkungen auf, die der Agent befolgen muss.
taskflow Beschreibt Unterhaltungsabläufe als eine Reihe von Unteraufgaben.
subtask Ein bestimmter Teil des Unterhaltungsablaufs innerhalb von <taskflow>, der einen oder mehrere Schritte enthält.
step Ein einzelner Schritt innerhalb von <subtask>, der einen Trigger und eine Aktion enthält.
trigger Die Bedingung oder Nutzereingabe innerhalb von <step>, die einen Schritt auslöst.
action Die Aktion innerhalb von <step>, die der Agent ausführen soll, wenn ein Schritt ausgelöst wird.
examples Enthält Few-Shot-Beispiele, um das Verhalten des Agenten für bestimmte Szenarien zu steuern.

Hier ist ein Beispiel für dieselben Anweisungen mit unserer empfohlenen XML-Struktur:

CURRENT CUSTOMER: {username}

<role>The main Weather Agent coordinating multiple agents.</role>

<persona>
    <primary_goal>To provide weather information.</primary_goal>
    How to handle prohibited topics and violations: Respond appropriately or
    state inability to handle the request.
    General guidelines: Follow the constraints and task flow precisely.
</persona>

<constraints>
    1. Use {@TOOL: get_weather} ONLY for specific weather requests 
      (for example, 'weather in London').
    2. If the user's name is known (from the 'CURRENT CUSTOMER' context), always
      greet them by their name.
</constraints>

<taskflow>
    These define the conversational subtasks that you can take. Each subtask
    has a sequence of steps that should be taken in order.
    <subtask name="Initial Greeting">
        <step name="Check for Username and Greet">
            <trigger>Start of conversation or new user interaction.</trigger>
            <action>If a username is provided in the 'CURRENT CUSTOMER' context,
              greet the user by their name. Otherwise, proceed without a 
              personalized greeting.
            </action>
        </step>
    </subtask>
    <subtask name="Query Analysis and Routing">
        <step name="Analyze User Query">
            <trigger>User provides a query.</trigger>
            <action>Determine the intent of the user's query 
              (greeting, farewell, weather request, or other).
            </action>
        </step>
        <step name="Handle Greeting">
            <trigger>User query is identified as a simple greeting
              (e.g., 'Hi', 'Hello').
            </trigger>
            <action>Call {@AGENT: Greeting Agent}.</action>
        </step>
        <step name="Handle Farewell">
            <trigger>User query is identified as a simple farewell
              (e.g., 'Bye', 'See you').
            </trigger>
            <action>Call {@AGENT: Farewell Agent}.</action>
        </step>
        <step name="Handle Weather Request">
            <trigger>User query is identified as a specific weather request
              (e.g., 'weather in London').
            </trigger>
            <action>Use {@TOOL: get_weather} to retrieve weather information and
              provide it to the user.
            </action>
        </step>
        <step name="Handle Other Queries">
            <trigger>User query does not fall into greeting, farewell, or
              specific weather request categories.
            </trigger>
            <action>Respond appropriately to the query or state that the request
              cannot be handled.
            </action>
        </step>
    </subtask>
</taskflow>
<examples>
</examples>

Inline-Few-Shot-Beispiele

Few-Shot-Prompting ist eine Technik, bei der ein Large Language Model (LLM) eine kleine Anzahl von Beispielen erhält, um sein Verhalten, seinen Ton oder seine Logik zu steuern. Im Kontext von Agenten bezieht sich „Inline-Few-Shot-Beispiele“ darauf, diese Beispiele direkt in die Anweisungen des Agenten einzufügen, anstatt sie in einem separaten UI-Bereich zu platzieren. Mit dieser Methode kann das Modell komplexe Anforderungen besser verstehen, indem es sie sieht, anstatt sie nur zu hören. So wird die Lücke zwischen abstrakten Anweisungen und konkreter Ausführung geschlossen.

Wann sollten Few-Shot-Beispiele verwendet werden?

Few-Shot-Beispiele sind ein leistungsstarkes Tool für die Kalibrierung, sollten aber strategisch eingesetzt werden. In den folgenden Szenarien sollten Sie sie hinzufügen:

  • Qualitätsprobleme beheben: Verwenden Sie Beispiele hauptsächlich, um bestimmte Fehler zu beheben, bei denen das Modell Anweisungen immer wieder falsch versteht.
  • Komplexe Formatierung: Wenn der Agent Daten in einem sehr spezifischen, nicht standardmäßigen Format ausgeben muss.
  • Nuancierte Logik: Wenn „Wenn-dann“-Anweisungen nicht ausreichen, um die Feinheiten eines Entscheidungsprozesses zu erfassen.

Best Practices und Warnungen

Few-Shot-Beispiele sind zwar effektiv, sollten aber sorgfältig ausgewählt werden, um die Leistung des Agenten nicht zu beeinträchtigen.

  • Sparsam verwenden: Wenn Sie zu viele Beispiele hinzufügen, kann es zu einem „Overfitting“ des Agenten kommen. Das bedeutet, dass er die Beispiele starr befolgt und seine Fähigkeit verliert, auf neue, unbekannte Nutzerabfragen zu verallgemeinern.
  • Beschreibend, nicht erschöpfend: Sie müssen nicht jede mögliche Nutzerabfrage auflisten. Beispiele sollen als Leitfaden für das Reasoning-Muster des Modells dienen, nicht als Nachschlagdatenbank.
  • Mit Anweisungen beginnen: Versuchen Sie immer zuerst, Verhaltensprobleme mit klaren, beschreibenden Anweisungen zu lösen. Fügen Sie nur Few-Shot-Beispiele hinzu, wenn Anweisungen allein nicht das gewünschte Ergebnis erzielen.

Komponenten eines Few-Shot-Beispiels

Ein standardmäßiges Few-Shot-Beispiel für Agenten besteht aus vier verschiedenen Komponenten, die eine Unterhaltungsrunde simulieren.

Komponente Tag / Syntax Beschreibung
Nutzer [user] Stellt die Eingabe oder Abfrage des Endnutzers dar.
Modell [model] Stellt die Textantwort oder den Denkprozess des Agenten dar.
Tool-Eingabe tool_code Zeigt, wie der Agent die Eingabe oder den „Aufruf“ an ein externes Tool oder eine externe Funktion strukturieren sollte (z.B. bestimmte Argumente/Syntax).
Tool-Ausgabe tool_outputs Simuliert die vom Tool zurückgegebenen Daten und zeigt dem Agenten, wie er diese Daten in seiner endgültigen Antwort interpretieren und verwenden kann.

Für Few-Shot-Beispiele sollte das folgende Format verwendet werden:

<examples>
  EXAMPLE 1:
  Begin example
  [user]
  What's the weather in London?
  [model]
  ```tool_code
  get_weather(location="London")
  ```
  ```tool_outputs
  {"temperature": "15 C", "condition": "Cloudy"}
  ```
  [model]
  The weather in London is 15 C and Cloudy.
  End example
</examples>

Anweisungen optimieren

Sie können einen Teil Ihrer Anweisungen auswählen. Dann wird die Schaltfläche Optimieren angezeigt. Wenn Sie auf diese Schaltfläche klicken, können Sie die ausgewählten Inhalte mit KI verbessern. Geben Sie im Feld Anforderungen Informationen dazu ein, wie Sie die ausgewählten Inhalte verbessern möchten.

Agent-Antworten formatieren

Sie können dem Agenten Anweisungen geben, wie er seine Textantworten formatieren soll, um die Lesbarkeit zu verbessern. Im Folgenden finden Sie Best Practices für Anweisungen zur Formatierung:

Chunking und Leerzeichen

  • Schreiben Sie niemals dichte Absätze. Nutzer überfliegen Texte, sie lesen sie nicht.
  • Beschränken Sie Textblöcke auf maximal ein bis zwei Sätze.
  • Fügen Sie zwischen jeder einzelnen Idee einen Zeilenumbruch ein, um Leerzeichen zu schaffen.

Strategische Fettschrift

  • Sie müssen die wichtigsten Datenpunkte fett formatieren, damit sie sofort ins Auge fallen.
  • Immer fett formatieren: Produktnamen, Preise, Daten, Bestellnummern und Fristen.
  • Beispiel: "Das klassische T-Shirt kostet 25,00$."

Listen statt Text

  • Wenn Sie mehr als zwei Elemente oder Schritte erwähnen, wandeln Sie sie automatisch in eine Aufzählungsliste oder nummerierte Liste um.
  • Verwenden Sie standardmäßige Aufzählungszeichen (-) für Optionen und nummerierte Listen (1.) für Anweisungen.

Globale Anweisungen

Neben der Definition von agentspezifischen Anweisungen, können Sie in den erweiterten Einstellungen der Agent-Anwendungauch globale Anweisungen definieren.

Jeder Agent in der Agent-Anwendung erbt die globalen Anweisungen. Sie werden dem Modell für jede Unterhaltungsrunde zusätzlich zu den agentspezifischen Anweisungen gesendet.

Globale Anweisungen eignen sich gut für allgemeine Informationen, die jeder Agent kennen muss. Beispiele: Markenton, allgemeine „DOs und DON'Ts“, global freigegebene Variablen und Kundenprofile.