Komponente "Large Language Model aufrufen"

Mit der Komponente "Large Language Model aufrufen" (LLM-Komponente) im Visual Flow Designer können Sie einen Ablauf über einen REST-Serviceaufruf mit dem LLM verbinden.

Sie können diesen Komponentenstatus in den Dialogablauf einfügen, indem Sie im Dialogfeld "Status hinzufügen" die Option Service Integration > Großes Sprachmodell aufrufen auswählen. Um Unterhaltungen mit mehreren Turns zu aktivieren, wenn die Skills von einem digitalen Assistenten aufgerufen werden, geben Sie eine Beschreibung für die LLM-Beschreibung ein.
Dieses Bild zeigt das Feld "Beschreibung" auf der Seite "Allgemein".

Hinweis

Fügen Sie als Best Practice immer Beschreibungen zu LLM-Komponenten hinzu, um Multi-Turn-Verfeinerungen zu ermöglichen, wenn Benutzer über einen digitalen Assistenten auf den LLM-Service zugreifen.

Durch das Einfügen des LLM-Komponentenstatus wird ein Fehlerbehandlungsstatus für die Fehlerbehebung der Anforderungen an das LLM und dessen Antworten hinzugefügt. Der LLM-Komponentenstatus geht in diesen Status über (standardmäßig ShowLLMError genannt), wenn eine ungültige Anforderung oder Antwort einen nicht behebbaren Fehler verursacht.
Beschreibung von invokellm-added-flow.png folgt
Beschreibung der Abbildung invokellm-added-flow.png

Neben dem Aufruf des LLM-Service verarbeitet der LLM-Komponentenstatus interaktive Transaktionen, wie z. B. Multi-Turn-Verfeinerungen, den Back-and-Forth-Austausch zwischen dem Benutzer und dem LMM, der die LLM-Ausgabe durch Runden von Benutzerfeedback verfeinert.
Hinweis

Die Antwortverfeinerung kann auch vom System stammen, wenn Wiederholungen nach nicht erfolgreicher Validierung implementiert werden.
Sie können das Ergebnis aus dem LLM-Modell als Nachricht senden oder in einer Dialogablaufvariablen für die nachgelagerte Verwendung speichern. Die integrierte Validierung der LLM-Komponente bietet Schutzschienen gegen Sicherheitslücken wie Prompt-Injection-Angriffe, bei denen die Moderationsrichtlinien des Modells umgangen werden.
Hinweis

Wenn Sie die von der LLM-Komponente bereitgestellte Validierung verbessern oder die LLM-Ausgabe mit der RCI-Technik (Rekursive Kritik und Verbesserung) verbessern möchten, können Sie unseren Startcode verwenden, um Ihre eigenen Anforderungs- und Antwortvalidierungs-Handler zu erstellen.

Was benötigen Sie, um diese Komponente zu verwenden? Wenn Sie direkt oder über den generativen KI-Service von Oracle auf das Cohere-Modell zugreifen, benötigen Sie nur einen LLM-Service für das Cohere-Modell und eine Eingabeaufforderung. Dabei handelt es sich um einen Block aus menschenlesbarem Text mit den Anweisungen an das LLM. Da das Schreiben einer Eingabeaufforderung ein iterativer Prozess ist, bieten wir Ihnen schnelle technische Richtlinien und den Prompt Builder, in dem Sie diese Richtlinien in Ihren Prompt-Text integrieren und testen können, bis sie die entsprechende Antwort vom Modell hervorruft. Wenn Sie ein anderes Modell verwenden, wie Azure OpenAI, müssen Sie zuerst einen eigenen Transformationsereignis-Handler aus dem bereitgestellten Startcode erstellen und dann einen LLM-Service erstellen, der diesen Handler den Endpunkten des LLM-Providers zuordnet, die für die Instanz konfiguriert wurden.

Allgemeine Eigenschaften

Eigenschaft Beschreibung Standardwert Erforderlich?
LLM-Service Eine Liste der LLM-Services, die für den Skill konfiguriert wurden. Wenn mehrere vorhanden sind, wird der Standard-LLM-Service verwendet, wenn kein Service ausgewählt wurde. Der Standard-LLM-Service Der Status kann ohne den LLM-Service gültig sein. Der Skill kann jedoch keine Verbindung zum Modell herstellen, wenn diese Eigenschaft nicht festgelegt wurde.
Prompt Der Prompt, der für das Modell spezifisch ist, auf das über den ausgewählten LLM-Service zugegriffen wird. Beachten Sie unsere allgemeinen Richtlinien, während Sie Ihre Eingabeaufforderung schreiben. Sie können den Prompt in dieses Feld eingeben und ihn dann mit dem Prompt Builder überarbeiten und testen (auf den Sie durch Klicken auf Prompt erstellen zugreifen). Sie können Ihre Eingabeaufforderung auch mit der Eingabeaufforderung erstellen. N/V Ja
Prompt-Parameter Die Parameterwerte. Verwenden Sie die Apache-Standardausdruckssyntax FreeMarker (${parameter}), um Parameter im Prompt-Text zu referenzieren. Beispiel:
Draft an email about ${opportunity} sales.
Verwenden Sie für Mischentityvariablen die Mischentity-Syntax:
  • ${cb_entity.value.bag_item.value} für Wertelistenelemente
  • ${cb_entity.value.bag_item} für Nicht-Wertelistenelemente
Sie müssen alle Prompt-Parameter oder jeden der im Prompt-Text referenzierten Parameter definieren. Fehlende Eingabeaufforderungsparameter werden als Fehler gekennzeichnet.
N/V Nein
Ergebnisvariable Eine Variable, in der die LLM-Antwort gespeichert wird. N/V Nein

Benutzermeldungen

Diese Optionen gelten nur, wenn Sie LLM-Ergebnis als Nachricht senden auf Wahr setzen.
Eigenschaft Beschreibung Standardwert(e): Erforderlich?
LLM-Ergebnis als Nachricht senden Wenn Sie diese Option auf True setzen, wird das LLM-Ergebnis in einer Meldung ausgegeben, die an den Benutzer gesendet wird. Wenn Sie diese Eigenschaft auf False setzen, wird verhindert, dass die Ausgabe an den Benutzer gesendet wird. True Nein
Streaming verwenden Die LLM-Ergebnisse werden an den Client gestreamt, wenn Sie diese Option auf True setzen. Dies bietet möglicherweise eine reibungslosere Benutzererfahrung, da die LLM-Antwort beim Generieren inkrementell und nicht auf einmal angezeigt wird. Diese Option ist nur verfügbar, wenn Sie LLM-Ergebnis als Nachricht senden auf Wahr gesetzt haben.

Benutzer können möglicherweise ungültige Antworten anzeigen, weil der Validierungsereignis-Handler aufgerufen wird, nachdem die LLM-Antwort bereits mit dem Streaming begonnen hat.

Setzen Sie Streaming verwenden für Cohere-Modelle auf Falsch, oder wenn Sie ein JSON-Schema auf das LLM-Ergebnis angewendet haben, indem Sie JSON-formatierte LLM-Antwort durchsetzen auf Wahr setzen.

Streaming nicht aktivieren, wenn:
  • Ihr Skill wird entweder auf dem Slack- oder Microsoft Teams-Kanal ausgeführt.
  • Sie haben die Antwortvalidierung festgelegt. Der Handler kann nur eine vollständige Antwort validieren. Wenn Sie also Streaming verwenden auf Wahr setzen, können Benutzer mehrere Ausgabestreams senden, was sie verwirren kann.
True Nein
Start Message Eine Statusmeldung, die an den Benutzer gesendet wird, wenn der LLM aufgerufen wurde. Diese Meldung, die tatsächlich vor dem LLM-Aufruf wiedergegeben wird, kann ein nützlicher Indikator sein. Es kann die Benutzer darüber informieren, dass die Verarbeitung stattfindet oder dass die LLM eine gewisse Zeit in Anspruch nehmen kann, um zu reagieren. N/V Nein
Verfeinerungen für mehrere Turns aktivieren Wenn Sie diese Option auf True (Standard) setzen, können Benutzer die LLM-Antwort durch Angabe von Folgeanweisungen verfeinern. Der Dialog gibt den Turn an den Benutzer frei, bleibt jedoch nach Erhalt des LLM-Ergebnisses im LLM-Status. Bei Falsch behält das Dialogfeld die Umdrehung bei, bis die LLM-Antwort empfangen wurde und in den Status übergeht, der von der Aktion Erfolgreich referenziert wird.

Hinweis: Die Komponentenbeschreibung ist für Multi-Turn-Verfeinerungen erforderlich, wenn der Skill von einem digitalen Assistenten aufgerufen wird.

True Nein
Standardaktionen Fügt die Standardaktionsschaltflächen hinzu, die unter der Ausgabe in der LLM-Ergebnismeldung angezeigt werden. Alle diese Schaltflächen sind standardmäßig aktiviert.
  • Weiterleiten: Wenn ein Benutzer diese Schaltfläche auswählt, wird der Übergang next ausgelöst, und der Ereignis-Handler submit wird ausgelöst.
  • Abbrechen: Wenn ein Benutzer diese Schaltfläche auswählt, geht das Dialogfeld in den Status über, der für den Übergang Abbrechen definiert ist.
  • Rückgängig machen: Wenn Sie darauf klicken, entfernt der Skill die letzte Verfeinerungsantwort und kehrt zum vorherigen Ergebnis zurück. Der Skill entfernt auch die vorherige Verfeinerung aus der Chathistorie. Diese Schaltfläche wird in der ersten Antwort nicht angezeigt. Sie wird erst angezeigt, nachdem der LLM-Service eine Verfeinerung generiert hat.
    Die Schaltflächen "Weiterleiten", "Abbrechen" und "Rückgängig" unten in der Nachricht.

Die Optionen Weiterleiten, Abbrechen und Rückgängig machen sind alle ausgewählt. Nein
Label für die Schaltfläche Abbrechen Das Label für die Schaltfläche "Abbrechen" Submit Ja - Wenn die Aktion "Abbrechen" definiert ist.
Label für Schaltfläche "Erfolg" Das Label für die Erfolgsschaltfläche Cancel Ja - wenn die Erfolgsaktion definiert ist.
Schaltflächenlabel rückgängig machen Das Label für die Rückgängig-Schaltfläche Undo Ja - Wenn die Aktion "Rückgängig" definiert ist.
Benutzerdefinierte Aktionen Eine benutzerdefinierte Aktionsschaltfläche. Geben Sie ein Schaltflächenlabel und eine Eingabeaufforderung mit zusätzlichen Anweisungen ein. N/V Nein

Übergangsaktionen für die Komponente "Large Language Model aufrufen"

Aktion Beschreibung
cancel

Diese Aktion wird ausgelöst, indem Benutzer auf die Schaltfläche "Abbrechen" tippen.

error

Diese Aktion wird ausgelöst, wenn Anforderungen an oder Antworten vom LLM nicht gültig sind. Beispiel: Die Zuteilung von Wiederholungs-Prompts zur Korrektur von JSON- oder Entitywertfehlern wurde verwendet.

Benutzerbewertungen für LLM-generierten Inhalt

Standardmäßig wird die Benutzerbewertung (Daumen nach oben und Daumen nach unten) in jeder Nachricht angezeigt.
Symbole "Daumen nach oben" und "Daumen nach unten" in der Skillantwortnachricht

Wenn Benutzer der LLM-Antwort eine Daumen-Down-Bewertung geben, folgt der Skill mit einem Link, der ein Feedbackformular öffnet.

Sie können diese Schaltflächen deaktivieren, indem Sie unter Einstellungen > Konfiguration die Option Feedback zum Large Language Model aktivieren deaktivieren.
Die Feedbackoption "Großsprachmodell aktivieren".

Antwortvalidierung

Eigenschaft Beschreibung Standardwert Erforderlich?
Validierungsobjekte Wählen Sie die Entitys aus, deren Werte in der LLM-Antwortnachricht abgeglichen werden sollen. Die Namen dieser Entitys und ihre übereinstimmenden Werte werden als Zuordnung an den Ereignis-Handler übergeben, der dieses Objekt auf fehlende Entityübereinstimmungen auswertet. Wenn fehlende Entityübereinstimmungen dazu führen, dass die Validierung nicht erfolgreich verläuft, gibt der Handler eine Fehlermeldung zurück, in der die nicht übereinstimmenden Entitys benannt werden, die dann an das Modell gesendet werden. Das Modell versucht dann, eine Antwort neu zu generieren, die die fehlenden Werte enthält. Es wird mit seinen Versuchen fortgesetzt, bis der Handler seine Ausgabe validiert oder die Anzahl der Wiederholungen aufgebraucht hat.

Wir empfehlen die Verwendung von Mischentitys, damit der Event Handler präzise Fehlermeldungen generieren kann, da die Labels und Fehlermeldungen, die auf einzelne Mischentityelemente angewendet werden, dem LLM Details zu den Entitywerten bereitstellen, die er nicht in seine Antwort aufnehmen konnte.

N/V Nein
JSON-formatierte LLM-Antwort durchsetzen Wenn Sie diese Option auf True festlegen, können Sie die JSON-Formatierung auf die LLM-Antwort anwenden, indem Sie ein JSON-Schema kopieren und einfügen. Die LLM-Komponente validiert die JSON-formatierte LLM-Antwort anhand dieses Schemas.

Wenn Benutzer das LLM-Ergebnis nicht als Raw-JSON anzeigen sollen, können Sie einen Event Handler mit einer changeBotMessages-Methode erstellen, mit der JSON in ein benutzerfreundliches Format transformiert wird, wie ein Formular mit Tabellen.

Setzen Sie die Option Streaming verwenden auf Falsch, wenn Sie JSON-Formatierung anwenden.

GPT-3.5 weist für die JSON-Schemavalidierung eine höhere Robustheit als GPT-4 auf. GPT-4 überkorrigiert manchmal eine Antwort.

Falsch Nein
Anzahl Wiederholungsversuche Die maximal zulässige Anzahl an Wiederholungen, wenn das LLM mit einem Wiederholungs-Prompt aufgerufen wird, wenn Entity- oder JSON-Validierungsfehler gefunden wurden. In der Eingabeaufforderung für den erneuten Versuch werden die Fehler und Anforderungen angegeben, die vom LLM behoben werden. Standardmäßig erstellt die LLM-Komponente eine einzelne Wiederholungsanforderung. Wenn die Zuteilung von Wiederholungsversuchen erreicht wurde, endet der Prompt-Validierungszyklus für den erneuten Versuch. Der Dialog wechselt dann über seinen Fehlerübergang von der LLM-Komponente. 1 Nein
Nachricht wiederholen Eine Statusmeldung, die an den Benutzer gesendet wird, wenn der LLM mit einer Wiederholungseingabeaufforderung aufgerufen wurde. Beispiel: Im Folgenden werden Entity- und JSON-Fehler mit der Ereigniseigenschaft allValidationErrors aufgezählt:
Trying to fix the following errors: ${system.llm.messageHistory.value.allValidationErrors?join(', ')}}
Enhancing the response. One moment, please... Nein
Validierungsanpassungs-Handler Wenn für Ihren Anwendungsfall eine spezielle Validierung erforderlich ist, können Sie den benutzerdefinierten Validierungs-Handler auswählen, der für Ihren Skill bereitgestellt wurde. Beispiel: Sie haben einen Event Handler für Ihren Skill erstellt, der nicht nur die weitere Verarbeitung validiert und auf die LLM-Antwort anwendet, sondern auch die Benutzeranforderungen für toxische Inhalte auswertet. Wenn Ihr Anwendungsfall erfordert, dass die Entity- oder JSON-Validierung von bestimmten Regeln abhängt, z.B. von voneinander abhängigen Entityübereinstimmungen (z.B. erfordert oder verhindert das Vorhandensein eines Entitywertes im LLM-Ergebnis das Vorhandensein eines anderen), müssen Sie den Handler für diesen Skill erstellen, bevor Sie ihn hier auswählen. N/V Nein

LLM-Validierungs- und Anpassungs-Handler erstellen

Neben LLM Transformation Handlern können Sie auch Event Handler verwenden, um die Anforderungen an das LLM und seine Antworten (die vom LLM-Provider generierten Abschlüsse) zu validieren. In der Regel würden Sie diesen Code, der als LLM Validation & Customization Handler bezeichnet wird, vom LLM Transformation Handler-Code getrennt halten, da er auf verschiedenen Ebenen arbeitet. Die Anforderungs- und Antwortvalidierung ist spezifisch für einen LLM-Status und dessen Prompt. Die Validierung der LLM-Transformation gilt hingegen für den gesamten Skill, da ihre Anforderungs- und Antworttransformationslogik in der Regel für alle LLM-Aufrufe im gesamten Skill identisch ist.

Während die LLM-Komponente Validierungs-Guardrails zur Verhinderung von Halluzinationen und zum Schutz vor Prompt-Injection-Angriffen bereitstellt, die dazu bestimmt sind, die Moderationsrichtlinien des Modells zu umgehen oder andere Sicherheitslücken auszunutzen, möchten Sie möglicherweise spezialisierte Validatoren komplett neu erstellen, indem Sie die Methoden LlmComponentContext in der bots-node-sdk verwenden oder diese Methoden in die von uns bereitgestellte Vorlage integrieren.
Hinweis

In seiner unveränderten Form führt der Vorlagencode dieselben Validierungsfunktionen aus, die bereits von der LLM-Komponente bereitgestellt wurden.

Sie können einen eigenen Validierungsereignis-Handler erstellen, der die Darstellung der LLM-Antwort anpasst. In diesem Fall kann der LLM-Antworttext im Handler als Teil einer Benutzernachricht gesendet werden. Beispiel: Wenn Sie das LLM anweisen, eine strukturierte Antwort im JSON-Format zu senden, können Sie die Antwort parsen und eine Nachricht generieren, die als Tabelle oder Karte formatiert ist.

So erstellen Sie einen Event Handler mit dieser Vorlage:
  1. Klicken Sie in der linken Navigationsleiste auf Komponenten.
  2. Klicken Sie auf +New-Service.
  3. Füllen Sie das Dialogfeld "Service erstellen" aus:
    • Name: Geben Sie den Dienstnamen ein.
    • Servicetyp: Eingebetteter Container
    • Komponentenservicepakettyp: Neue Komponente
    • Komponententyp: LLM-Validierung und -Anpassung
    • Komponentenname: Geben Sie einen einfach identifizierbaren Namen für den Ereignis-Handler ein. Sie referenzieren diesen Namen, wenn Sie den LLM-Service für den Skill erstellen.
  4. Klicken Sie auf Erstellen, um den Validierungs-Handler zu generieren.
  5. Blenden Sie nach Abschluss des Deployments den Service ein, und wählen Sie den Validierungs-Handler aus.
  6. Klicken Sie auf Bearbeiten, um den Editor "Komponentencode bearbeiten" zu öffnen.
  7. Aktualisieren Sie mit der generierten Vorlage die folgenden Handler-Methoden nach Bedarf.
    Methode Beschreibung Wenn die Validierung erfolgreich ist Wenn Validierung nicht erfolgreich Rückgabetyp Position im Editor Platzhaltercode Was kann ich tun, wenn die Validierung nicht erfolgreich ist?
    validateRequestPayload Validiert die Anforderungs-Payload. Gibt true zurück, wenn die Anforderung gültig ist.

    Gibt false zurück, wenn die Validierung einer Anforderung nicht erfolgreich ist.

    boolean Zeilen 24-29
    
        validateRequestPayload: async (event, context) => { 
          if (context.getCurrentTurn() === 1 && context.isJsonValidationEnabled()) {
            context.addJSONSchemaFormattingInstruction();
          }
          return true;
        }
    Weitere Informationen zu diesem Code finden Sie unter validateRequestPayload properties.
    • Ändern Sie die Eingabeaufforderung, und senden Sie sie erneut an das LLM
    • Legen Sie einen Validierungsfehler fest.
    validateResponsePayload Validiert die LLM-Antwort-Payload.
    Wenn der Handler true zurückgibt:
    • Wenn Sie die Eigenschaft LLM-Ergebnis als Nachricht senden auf true setzen, wird die LLM-Antwort, einschließlich standardmäßiger oder benutzerdefinierter Aktionsschaltflächen, an den Benutzer gesendet.
    • Wenn Streaming aktiviert ist, wird die LLM-Antwort in Chunks gestreamt. Die Aktionsschaltflächen werden am Ende des Streams hinzugefügt.
    • Alle im Handler hinzugefügten Benutzernachrichten werden an den Benutzer gesendet, unabhängig von der Einstellung für die Eigenschaft LLM-Ergebnis als Nachricht senden.
    • Wenn im Handler eine neue LLM-Eingabeaufforderung festgelegt ist, wird diese Eingabeaufforderung an das LLM gesendet, und der Validierungs-Handler wird erneut mit der neuen LLM-Antwort aufgerufen
    • Wenn keine neue LLM-Eingabeaufforderung festgelegt ist und die Eigenschaft Multi-Turn-Verfeinerungen aktivieren auf true gesetzt ist, wird die Umdrehung freigegeben, und der Dialogablauf bleibt im LLM-Status. Wenn diese Eigenschaft jedoch auf false gesetzt ist, wird die Umdrehung beibehalten, und das Dialogfeld geht mit der Übergangsaktion success von dem Status über.
    Wenn der Handler false zurückgibt:
    • Wenn Streaming aktiviert ist, können Benutzer Antworten anzeigen, die möglicherweise ungültig sind, weil der Validierungsereignis-Handler aufgerufen wird, nachdem die LLM-Antwort das Streaming bereits gestartet hat.
    • Alle vom Handler hinzugefügten Benutzernachrichten werden an den Benutzer gesendet, unabhängig von der Einstellung LLM-Ergebnis als Skillantwort senden.
    • Wenn im Handler eine neue LLM-Eingabeaufforderung festgelegt ist, wird diese Eingabeaufforderung an das LLM gesendet, und der Validierungs-Handler wird mit der neuen LLM-Antwort erneut aufgerufen.
    • Wenn keine LLM-Eingabeaufforderung festgelegt ist, verlässt der Dialogablauf den Status der LLM-Komponente. Mit der im Handler-Code festgelegten Übergangsaktion wird der nächste Status bestimmt. Wenn keine Übergangsaktion festgelegt ist, wird die Übergangsaktion error ausgelöst.
    boolean Zeilen 50-56
      /**
       * Handler to validate response payload
       * @param {ValidateResponseEvent} event
       * @param {LLMContext} context
       * @returns {boolean} flag to indicate the validation was successful
       */
       validateResponsePayload: async (event, context) => {
         let errors = event.allValidationErrors || [];
         if (errors.length > 0) {
           return context.handleInvalidResponse(errors);
         }
         return true;
       }
    Weitere Informationen zu diesem Code finden Sie unter validateResponsePayload Properties.
    • Rufen Sie das LLM erneut mit einer Wiederholungseingabeaufforderung auf, die das Problem mit der Antwort angibt (z.B. nicht mit einem bestimmten JSON-Format übereinstimmt) und fordert das LLM auf, es zu beheben.
    • Legen Sie einen Validierungsfehler fest.
    changeBotMessages Ändert die Kandidatenskillnachrichten, die an den Benutzer gesendet werden. N/V N/V Eine Liste der Nachrichten im Unterhaltungsnachrichtenmodell Zeilen 59-71
    
        changeBotMessages: async (event, context) => { 
          return event.messages;
        },
    Ein Beispiel für die Verwendung dieser Methode finden Sie unter Benutzernachricht für JSON-formatierte Antworten erweitern.
    N/V
    submit Dieser Handler wird aufgerufen, wenn Benutzer auf die Schaltfläche Weiterleiten tippen. Es verarbeitet die LLM-Antwort weiter. N/V N/V N/V Zeilen 79-80
        submit: async (event, context) => { 
        }
    N/V
    Jede dieser Methoden verwendet ein event-Objekt und ein context-Objekt. Beispiel:
     validateResponsePayload: async (event, context) =>
    ...
    Die für das Objekt event definierten Eigenschaften hängen vom Ereignistyp ab. Das zweite Argument, context, referenziert die Klasse LlmComponentContext, die auf die Convenience-Methoden zum Erstellen Ihrer eigenen Ereignis-Handler-Logik zugreift. Dazu gehören Methoden zum Festlegen der maximalen Anzahl von Wiederholungs-Prompts sowie zum Senden von Status- und Fehlermeldungen an Skillbenutzer.
  8. Prüfen Sie die Sytnax Ihrer Aktualisierungen, indem Sie auf Validieren klicken. Klicken Sie auf Speichern > Schließen.
validateRequestPayload Ereigniseigenschaften
Name Beschreibung Typ Erforderlich?
payload Die LLM-Anforderung, die validiert werden muss Zeichenfolge Ja
validateResponsePayload Ereigniseigenschaften
Name Beschreibung Typ Erforderlich?
payload Die LLM-Antwort, die validiert werden muss. Zeichenfolge Ja
validationEntities Eine Liste der Entitynamen, die durch die Eigenschaft Validierungsentitys des entsprechenden LLM-Komponentenstatus angegeben wird. String[] Nein
entityMatches Eine Zuordnung mit dem Namen der übereinstimmenden Entity als Schlüssel und einem Array der Entity JSONObject entspricht dem Wert. Diese Eigenschaft hat nur dann einen Wert, wenn die Eigenschaft Validierungsentitys ebenfalls im Status der LLM-Komponente festgelegt ist. Karte<String, JSONArray> Nein
entityValidationErrors Schlüssel/Wert-Paare mit dem entityName oder einem Mischentityelement als Schlüssel und einer Fehlermeldung als Wert. Diese Eigenschaft wird nur festgelegt, wenn die Eigenschaft Validierungsentitys ebenfalls festgelegt ist und Entityübereinstimmungen fehlen oder (wenn die Entity eine Mischentity ist) Mischentityelementübereinstimmungen fehlen. Karte<String, String> Nein
jsonValidationErrors Wenn die Eigenschaft JSON-formatierte LLM-Antwort durchsetzen der LLM-Komponente auf Wahr gesetzt ist und die Antwort kein gültiges JSON-Objekt ist, enthält diese Eigenschaft einen einzelnen Eintrag mit der Fehlermeldung, die besagt, dass die Antwort kein gültiges JSON-Objekt ist.

Wenn jedoch die JSON gültig ist und die Eigenschaft JSON-formatierte LLM-Antwort durchsetzen der Komponente ebenfalls auf Wahr gesetzt ist, enthält diese Eigenschaft Schlüssel/Wert-Paare mit dem Schemapfad als Schlüssel und (wenn die Antwort nicht dem Schema entspricht) die Fehlermeldungen zur Schemavalidierung als Werte.

Karte<String, String> Nein
allValidationErrors Eine Liste aller Entityvalidierungsfehler und JSON-Validierungsfehler. String[] Nein
Codebeispiele für Validierungs-Handler

Benutzerdefinierte JSON-Validierung
Das folgende Snippet veranschaulicht, wie Sie der Standardvorlage validateResponsePayload Code hinzufügen, um zu prüfen, ob eine JSON-formatierte Stellenausschreibung auf Los Angeles gesetzt ist:
  /**
   * Handler to validate response payload
   * @param {ValidateResponseEvent} event
   * @param {LLMContext} context
   * @returns {boolean} flag to indicate the validation was successful
   */
   validateResponsePayload: async (event, context) => {
     let errors = event.allValidationErrors || [];
     const json = context.convertToJSON(event.payload);
     if (json && 'Los Angeles' !== json.location) {
       errors.push('Location is not set to Los Angeles');
     }
     if (errors.length > 0) {
       return context.handleInvalidResponse(errors);
     }
     return true;
   }
Benutzernachricht für JSON-formatierte Antworten erweitern
Wenn das LLM die Antwort im JSON-Format zurückgeben soll, möchten Sie die Raw-JSON-Antwort möglicherweise nicht für die Skillbenutzer anzeigen. Da die Antwort jetzt jedoch strukturiertes JSON-Format aufweist und mit dem von Ihnen angegebenen JSON-Schema konform ist, können Sie diese Antwort einfach in einen der Nachrichtentypen für das Unterhaltungsnachrichtenmodell transformieren, wie eine Karten-, Tabellen- oder Formularnachricht. Das folgende Snippet zeigt, wie Sie die JSON-Raw-Antwort mit dem changeBotMessages-Handler in eine benutzerfreundliche Formularnachricht transformieren.
     /**
      * Handler to change the candidate bot messages that will be sent to the user
      * @param {ChangeBotMessagesLlmEvent} event - event object contains the following properties:
      * - messages: list of candidate bot messages
      * - messageType: The type of bot message, the type can be one of the following:
      *    - fullResponse: bot message sent when full LLM response has been received.
      *    - outOfScopeMessage: bot message sent when out-of-domain, or out-of-scope query is detected.
      *    - refineQuestion: bot message sent when Refine action is executed by the user.
      * @param {LlmComponentContext} context - see https://oracle.github.io/bots-node-sdk/LlmComponentContext.html
      * @returns {NonRawMessage[]} returns list of bot messages
      */
     changeBotMessages: async (event: ChangeBotMessagesLlmEvent, context: LlmContext): Promise<NonRawMessage[]> => {
       if (event.messageType === 'fullResponse') {          
         const jobDescription = context.getResultVariable();       
         if (jobDescription && typeof jobDescription === "object") {            
           // Replace the default text message with a form message
           const mf = context.getMessageFactory();
           const formMessage = mf.createFormMessage().addForm(
             mf.createReadOnlyForm()
             .addField(mf.createTextField('Title', jobDescription.title))
             .addField(mf.createTextField('Location', jobDescription.location))
             .addField(mf.createTextField('Level', jobDescription.level))
             .addField(mf.createTextField('Summary', jobDescription.shortDescription))
             .addField(mf.createTextField('Description', jobDescription.description))
             .addField(mf.createTextField('Qualifications', `<ul><li>${jobDescription.qualifications.join('</li><li>')}</li></ul>`))
             .addField(mf.createTextField('About the Team', jobDescription.aboutTeam))
             .addField(mf.createTextField('About Oracle', jobDescription.aboutOracle))
             .addField(mf.createTextField('Keywords', jobDescription.keywords!.join(', ')))
           ).setActions(event.messages[0].getActions()) 
            .setFooterForm(event.messages[0].getFooterForm());
           event.messages[0] = formMessage;
         }
       }
       return event.messages;
     }          
   }
Benutzerdefinierte Entitätsvalidierung
Das folgende Snippet veranschaulicht, wie der folgende Code beim Hinzufügen zur Vorlage validateResponsePayload überprüft, ob der Speicherort der Tätigkeitsbeschreibung mit Entityübereinstimmungen auf Los Angeles gesetzt ist. In diesem Beispiel wird davon ausgegangen, dass der Eigenschaft Validierungsentitys des LLM-Status eine LOCATION-Entity hinzugefügt wurde.
 /**
   * Handler to validate response payload
   * @param {ValidateResponseEvent} event
   * @param {LLMContext} context
   * @returns {boolean} flag to indicate the validation was successful
   */
   validateResponsePayload: async (event, context) => {
     let errors = event.allValidationErrors || [];
     if (!event.entityMatches.LOCATION || event.entityMatches.LOCATION[0].city !== 'los angeles') {
       errors.push('Location is not set to Los Angeles');
     }         
     if (errors.length > 0) {
       return context.handleInvalidResponse(errors);
     }
     return true;
   }
Validierungsfehler
Sie können Validierungsfehler sowohl in den validateRequestPayload- als auch in den validateResponsePayload-Handler-Methoden festlegen, die aus
  • Eine benutzerdefinierte Fehlermeldung
  • Einer der für die CLMI-Eigenschaft errorCode definierten Fehlercodes.
Da Validierungsfehler nicht behebbar sind, löst die LLM-Komponente den error-Übergang aus, wenn eine der Event Handler-Methoden eine Anforderung oder Antwort nicht validieren kann. Der Dialogablauf geht dann in den Status über, der mit dem Übergang error verknüpft ist. Wenn Sie die LLM-Komponente hinzufügen, wird ein solcher Fehlerstatus angezeigt. Dieser Status "Nachricht senden", dessen Standardname showLLMError lautet, gibt den Fehler weiter, indem er die Variable mit Ablaufgeltungsbereich referenziert, in der die Fehlerdetails mit dem Namen system.llm.invocationError gespeichert sind:
An unexpected error occurred while invoking the Large Language Model:
${system.llm.invocationError}
Diese Variable speichert Fehler, die entweder von der benutzerdefinierten Logik in Event Handlern oder von der LLM-Komponente selbst definiert wurden. Diese Variable enthält eine Map mit den folgenden Schlüsseln:
  • errorCode: Einer der CLMI-Fehlercodes
  • errorMessage: Eine Meldung (ein Zeichenfolgenwert), die den Fehler beschreibt.
  • statusCode: Der HTTP-Statuscode, der vom LLM-Aufruf zurückgegeben wird.

Tipp:

Während error der Standardübergang für Validierungsfehler ist, können Sie eine andere Aktion verwenden, indem Sie einen benutzerdefinierten Fehlerübergang im Handlercode definieren.
Rekursive Kritik und Verbesserung (RCI)
Sie können die LLM-Antworten mit der Recursive Criticism and Improvement (RCI)-Technik verbessern, wobei das LLM rekursiv aufgerufen wird, um Probleme in seiner Ausgabe zu finden und dann die Ausgabe basierend auf seinen Ergebnissen zu verbessern. Die Aktivierung von RCI erfolgt in zwei Schritten:
  1. Senden Sie eine Eingabeaufforderung an den LLM, der die vorherige Antwort kritisiert.
  2. Senden Sie eine Eingabeaufforderung an das LLM, um die Antwort basierend auf der Kritik zu verbessern.
Sie können automatische RCI anwenden oder sie auf Anforderung vom Skillbenutzer ausführen lassen. Der validateResponsePayload-Handler führt den RCI-Zyklus der Kritik aus, die zur Verbesserung auffordert.
Automatische RCI
Wie im folgenden Snippet dargestellt, prüft der Code den validateResponsePayload-Handler, wenn RCI bereits angewendet wurde. Ist dies nicht der Fall, beginnt die RCI-Kritik-Verbesserungssequenz. Nachdem der Prompt zum Kritisieren gesendet wurde, wird der validateResponsePayload-Handler aufgerufen. Basierend auf dem RCI-Status, der in einer benutzerdefinierten Eigenschaft gespeichert ist, wird der Verbesserungs-Prompt gesendet.
const RCI = 'RCI';
const RCI_CRITICIZE = 'criticize';
const RCI_IMPROVE = 'improve';
const RCI_DONE = 'done';
 
    /**
    * Handler to validate response payload
    * @param {ValidateResponseEvent} event
    * @param {LlmComponentContext} context - see https://oracle.github.io/bots-node-sdk/LlmComponentContext.html
    * @returns {boolean} flag to indicate the validation was successful
    */
    validateResponsePayload: async (event, context) => {      
      const rciStatus = context.getCustomProperty(RCI);
      if (!rciStatus) {
        context.setNextLLMPrompt(`Review your previous answer. Try to find possible improvements one could make to the answer. If you find improvements then list them below:`, false);
        context.addMessage('Finding possible improvements...');
        context.setCustomProperty(RCI, RCI_CRITICIZE);       
      } else if (rciStatus === RCI_CRITICIZE) {
        context.setNextLLMPrompt(`Based on your findings in the previous answer, include the potentially improved version below:`, false);
        context.addMessage('Generating improved answer...');
        context.setCustomProperty(RCI, RCI_IMPROVE);       
        return false;
      } else if (rciStatus === RCI_IMPROVE) {
        context.setCustomProperty(RCI, RCI_DONE);       
      }     
      return true;
    }
RCI auf Anforderung
Das folgende Snippet veranschaulicht die Aktivierung von On-Demand-RCI, indem der Skillnachricht, die an den Benutzer in der Methode changeBotMessages gesendet wird, eine Schaltfläche "Verbessern" hinzugefügt wird. Diese Schaltfläche ruft den benutzerdefinierten Ereignis-Handler auf, der den RCI-Zyklus startet. Die Methode validateResponsePayload verarbeitet den RCI-Kritik-Verbesserungszyklus.
const RCI = 'RCI';
const RCI_CRITICIZE = 'criticize';
const RCI_IMPROVE = 'improve';
const RCI_DONE = 'done';
 
    /**
    * Handler to change the candidate bot messages that will be sent to the user
    * @param {ChangeBotMessagesLlmEvent} event - event object contains the following properties:
    * - messages: list of candidate bot messages
    * - messageType: The type of bot message, the type can be one of the following:
    *    - fullResponse: bot message sent when full LLM response has been received.
    *    - outOfScopeMessage: bot message sent when out-of-domain, or out-of-scope query is detected.
    *    - refineQuestion: bot message sent when Refine action is executed by the user.
    * @param {LlmComponentContext} context - see https://oracle.github.io/bots-node-sdk/LlmComponentContext.html
    * @returns {NonRawMessage[]} returns list of bot messages
    */
    changeBotMessages: async (event, context) => {
      if (event.messageType === 'fullResponse') {
        const mf = context.getMessageFactory();
        // Add button to start RCI cycle
        event.messages[0].addAction(mf.createCustomEventAction('Improve', 'improveUsingRCI')); 
      }
      return event.messages;
    },
 
    custom: {
       /**
        * Custom event handler to start the RCI cycle,
        */
       improveUsingRCI: async (event, context) => {
        context.setNextLLMPrompt(`Review your previous answer. Try to find possible improvements one could make to the answer. If you find improvements then list them below:`, false);
        context.addMessage('Finding possible improvements...');
        context.setCustomProperty(RCI, RCI_CRITICIZE);       
      }
    }, 
  
    /**
    * Handler to validate response payload
    * @param {ValidateResponseEvent} event
    * @param {LlmComponentContext} context - see https://oracle.github.io/bots-node-sdk/LlmComponentContext.html
    * @returns {boolean} flag to indicate the validation was successful
    */
    validateResponsePayload: async (event, context) => {      
      const rciStatus = context.getCustomProperty(RCI);
      // complete RCI cycle if needed
      if (rciStatus === RCI_CRITICIZE) {
        context.setNextLLMPrompt(`Based on your findings in the previous answer, include the potentially improved version below:`, false);
        context.addMessage('Generating improved answer...');
        context.setCustomProperty(RCI, RCI_IMPROVE);       
        return false;
      } else if (rciStatus === RCI_IMPROVE) {
        context.setCustomProperty(RCI, RCI_DONE);       
      }     
      return true;
    }

Erweiterte Optionen

Eigenschaft Beschreibung Standardwert Erforderlich?
Anfänglicher Benutzerkontext Sendet zusätzliche Benutzernachrichten als Teil der anfänglichen LLM-Eingabeaufforderung mit den folgenden Methoden:
  • Letzte Benutzernachricht: Die Benutzernachricht, die den Übergang in den LLM-Komponentenstatus ausgelöst hat.
  • Intent-Triggering-Nachricht: Die Benutzernachricht, die als Abfrage für die letzte Intent-Übereinstimmung verwendet wird, die in der Variablen skill.system.nlpresult gespeichert ist.
  • Benutzerdefinierter Ausdruck: Verwendet den Apache-Ausdruck FreeMarker, der für die Eingabe benutzerdefinierter Benutzer verwendet wird.
N/V Nein
Benutzerdefinierte Benutzereingabe Ein Apache-Freemarker-Ausdruck, der den Text angibt, der unter der Benutzerrolle als Teil des anfänglichen LLM-Prompts gesendet wird. N/V Nein
Nachricht bei Nicht-Geltungsbereich Die Meldung, die angezeigt wird, wenn das LLM die Benutzerabfrage entweder als außerhalb des Gültigkeitsbereichs (OOS) oder als außerhalb der Domäne (OOD) auswertet. N/V Nein
Schlüsselwort außerhalb des Geltungsbereichs Standardmäßig ist der Wert InvalidInput. LLM gibt dieses Schlüsselwort zurück, wenn es die Benutzerabfrage gemäß den Anweisungen zur Begrenzung des Gültigkeitsbereichs der Eingabeaufforderung entweder als außerhalb des Gültigkeitsbereichs (OOS) oder außerhalb der Domain (OOD) auswertet. Wenn das Modell dieses Schlüsselwort ausgibt, kann der Dialogablauf in einen neuen Status oder einen neuen Ablauf übergehen.

Ändern Sie diesen Wert nicht. Wenn Sie das Schlüsselwort ändern müssen, um auf einen bestimmten Anwendungsfall einzugehen, empfehlen wir, anstelle eines Stichworts, das falsch interpretiert werden kann, die natürliche Sprache zu verwenden. Beispiel: UnsupportedQuery könnte ein geeignetes Schlüsselwort sein, code514 (Fehler) dagegen nicht.

invalidInput: Ändern Sie diesen Wert nicht. Eine Änderung dieses Wertes kann zu einem unerwünschten Modellverhalten führen. Nein
Temperatur Ermutigt oder behindert die Zufälligkeit und Kreativität der Vervollständigungen des LLM zur Aufforderung. Sie können die Kreativität des Modells messen, indem Sie die Temperatur zwischen 0 (niedrig) und 1 (hoch) einstellen. Eine niedrige Temperatur bedeutet, dass die Vervollständigungen des Modells an der Eingabeaufforderung einfach oder deterministisch sind: Benutzer erhalten fast immer die gleiche Antwort auf eine bestimmte Eingabeaufforderung. Eine hohe Temperatur bedeutet, dass das Modell weiter von der Eingabeaufforderung für seine Antworten extrapolieren kann.

Standardmäßig wird die Temperatur auf 0 (niedrig) eingestellt.

0 Nein
Maximale Tokenanzahl Die Anzahl der Token, die Sie für diese Eigenschaft festlegen, bestimmt die Länge der für Multi-Turn-Verfeinerungen generierten Abschlüsse. Die Anzahl der Token für jeden Abschluss muss innerhalb des Kontextlimits des Modells liegen. Wenn Sie diese Eigenschaft auf eine niedrige Zahl setzen, wird verhindert, dass der Tokenaufwand die Kontextlänge des Modells während des Aufrufs überschreitet. Dies kann jedoch auch zu kurzen Antworten führen. Das Gegenteil gilt, wenn Sie den Tokengrenzwert auf einen hohen Wert setzen: Der Tokenverbrauch erreicht das Kontextlimit des Modells nach nur wenigen Umdrehungen (oder Fertigstellungen). Darüber hinaus kann die Qualität der Abschlüsse auch sinken, da die Bereinigung früherer Abschlüsse durch die LLM-Komponente den Konversationskontext verschieben könnte. Wenn Sie eine hohe Anzahl von Token festlegen und Ihre Eingabeaufforderung ebenfalls sehr lang ist, erreichen Sie nach einigen Umdrehungen schnell das Limit des Modells. 1024 Nein

Prompt Builder

In der ersten Version Ihres Prompts kann das Modell möglicherweise nicht genügend Anweisungen erhalten, um die erwarteten Abschlussdaten zu generieren. Damit das Modell vorhersagen kann, wie die Eingabeaufforderung abgeschlossen werden muss, müssen Sie den Eingabeaufforderungstext möglicherweise mehrmals überarbeiten. In der Tat empfehlen unsere Best Practices, genau das zu tun. Mit dem Prompt Builder können Sie diese Revisionen schnell iterieren, bis der Prompt Abschlüsse hervorruft, die angesichts der maximalen Anzahl von Token, die für die Antwort, die Temperatureinstellung und die übergebenen Parameterwerte zugewiesen sind, kohärent sind.
Hinweis

Sie können die Parameter mit Mock-Werten und nicht mit gespeicherten Werten testen. Sie können eigene Mock-Werte hinzufügen, indem Sie auf Bearbeiten klicken.
Das Symbol "Bearbeiten".

, oder verwenden Sie diejenigen, die vom Modell bereitgestellt werden, wenn Sie auf Werte generieren klicken.
Wenn mehrere LLM-Services konfiguriert sind, können Sie zwischen Modellen wechseln, um die Ergebnisse zu vergleichen. Wenn Ihr Prompt den erwarteten Abschluss aus dem Modell hervorruft, klicken Sie auf Einstellungen speichern, um den vorhandenen Text im Prompt-Feld des Komponenteneigenschaftsinspektors zu überschreiben und das Zielmodell, die Temperatur und den Tokengrenzwert zu aktualisieren. (Wenn Sie den Prompt mit dem Prompt Builder von Grund auf neu geschrieben haben, wird das Feld "Prompt" durch Klicken auf Einstellungen speichern aufgefüllt.) Wenn Sie den Prompt Builder schließen, werden alle Änderungen verworfen, die Sie am Prompt vorgenommen haben, und der Text im Prompt-Feld wird beibehalten.
Hinweis

Um die Benutzererfahrung zu erhalten, müssen Sie den Skilltester ausführen, mit dem Sie Konversationsaspekte wie gespeicherte Parameterwerte (einschließlich Konversationshistorie und Prompt-Ergebnisvariable), Header und Footer oder Mehrfachdrehungsverfeinerungen (und die zugehörigen Schaltflächen) testen und die Größe der Komponentenunterhaltungshistorie messen können.

Prompts: Best Practices

Ein effektives, zeitnahes Design ist entscheidend, um das Beste aus LLMs herauszuholen. Während schnelle Tuning-Strategien mit verschiedenen Modellen und Anwendungsfällen variieren, bleiben die Grundlagen dessen, was eine "gute" Eingabeaufforderung ausmacht, konsistent. LLMs funktionieren im Allgemeinen gut bei der Textvervollständigung, was die nächste Gruppe von Token für den angegebenen Eingabetext vorhersagt. Aus diesem Grund sind Eingabeaufforderungen für den Textfertigstellungsstil ein guter Ausgangspunkt für einfache Anwendungsfälle. Ausgereiftere Szenarien könnten fein granulierte Anweisungen und fortgeschrittene Techniken wie Wenig-Shoot-Prompting oder Gedankenketten-Prompting erfordern.

Hier sind einige Richtlinien für die Kunst und Wissenschaft, Ihre Eingabeaufforderung zu erstellen. Kurz gesagt, Sie werden sie zu einer kohärenten Eingabeaufforderung kombinieren. Hier ist der Prozess:
  1. Definieren Sie zunächst die Rolle oder Persona des LLM mit einer allgemeinen Beschreibung der aktuellen Aufgabe.
  2. Fügen Sie Details dazu hinzu, was in die Antwort, das erwartete Ausgabeformat usw. aufgenommen werden soll.
  3. Geben Sie bei Bedarf wenige Beispiele für die vorliegende Aufgabe an
  4. Erwähnen Sie optional, wie Szenarios verarbeitet werden, die eine nicht unterstützte Abfrage darstellen.
  • Beginnen Sie mit einem einfachen, kurzen Prompt - Beginnen Sie mit einem kurzen, einfachen und einfachen Prompt, der den Anwendungsfall und die erwartete Ausgabe klar umreißt. Beispiel:
    • Eine einzeilige Anweisung wie "Sag mir einen Witz"
    • Eine Eingabeaufforderung für Textvervollständigungsstil
    • Eine Anweisung zusammen mit Eingabe
    Beispiel:
    "Summarize the following in one sentence:
    
    The Roman Empire was a large and powerful group of ancient civilizations that formed after the collapse of the Roman Republic in Rome, Italy, in 27 BCE. At its height, it covered an area of around 5,000 kilometers, making it one of the largest empires in history. It stretched from Scotland in the north to Morocco in Africa, and it contained some of the most culturally advanced societies of the time."
    Eine einfache Eingabeaufforderung ist ein guter Ausgangspunkt für Ihre Tests, da sie ein guter Indikator dafür ist, wie sich das Modell verhalten wird. Außerdem können Sie beim Verfeinern des Prompt-Textes weitere Elemente hinzufügen.
  • Eingabeaufforderung iterativ ändern und testen - Erwarten Sie nicht, dass der erste Entwurf der Eingabeaufforderung die erwarteten Ergebnisse zurückgibt. Es kann mehrere Testrunden dauern, um herauszufinden, welche Anweisungen hinzugefügt, entfernt oder umformuliert werden müssen. Um beispielsweise zu verhindern, dass das Modell durch Hinzufügen zusätzlicher Inhalte halluziniert, fügen Sie zusätzliche Anweisungen hinzu:
    
    
    "Summarize the following paragraph in one sentence. Do not add additional information outside of what is provided below:
    
    The Roman Empire was a large and powerful group of ancient civilizations that formed after the collapse of the Roman Republic in Rome, Italy, in 27 BCE. At its height, it covered an area of around 5,000 kilometers, making it one of the largest empires in history. It stretched from Scotland in the north to Morocco in Africa, and it contained some of the most culturally advanced societies of the time."
  • Eine für Ihren Anwendungsfall spezifische Persona verwenden - Personas führt häufig zu besseren Ergebnissen, da sie dem LLM helfen, Verhalten zu emulieren oder eine Rolle zu übernehmen.
    Hinweis

    Cohere-Modelle wiegen die aufgabenspezifischen Anweisungen stärker als die Personadefinition.
    Beispiel: Wenn der LLM Erkenntnisse generieren soll, bitten Sie ihn, ein Datenanalyst zu sein:
    Assume the role of a data analyst. Given a dataset, your job is to extract valuable insights from it.
    Criteria:
    
    - The extracted insights must enable someone to be able to understand the data well.
    - Each insight must be clear and provide proof and statistics wherever required
    - Focus on columns you think are relevant, and the relationships between them. Generate insights that can provide as much information as possible.
    - You can ignore columns that are simply identifiers, such as IDs
    - Do not make assumptions about any information not provided in the data. If the information is not in the data, any insight derived from it is invalid
    - Present insights as a numbered list
    
    Extract insights from the data below:
    {data}
    Hinweis

    Achten Sie auf implizite Vorurteile oder Verhaltensweisen, die der Person inhärent sein können.
  • LLM-spezifische Prompts schreiben - LLMs haben unterschiedliche Architekturen und werden mit verschiedenen Methoden und verschiedenen Datasets trainiert. Sie können keine einzelne Eingabeaufforderung schreiben, die dieselben Ergebnisse von allen LLMs oder sogar von verschiedenen Versionen desselben LLMs zurückgibt. Ansätze, die gut mit GPT-4 funktionieren, scheitern beispielsweise mit GPT-3.5 und umgekehrt. Stattdessen müssen Sie Ihre Eingabeaufforderung an die Fähigkeiten des für Ihren Anwendungsfall ausgewählten LLM anpassen. Beispiele mit wenigen Klicks verwenden - Da LLMs aus Beispielen lernen, geben Sie gegebenenfalls Beispiele mit wenigen Klicks an. Fügen Sie in der Eingabeaufforderung beschriftete Beispiele ein, die die Struktur der generierten Antwort demonstrieren. Beispiel:
    Generate a sales summary based on the given data. Here is an example:
    
    Input: ...
    Summary: ...
    
    Now, summarize the following sales data:
    
    ....
    Geben Sie Beispiele für wenige Aufnahmen an, wenn:
    • Strukturelle Einschränkungen müssen durchgesetzt werden.
    • Die Antworten müssen bestimmten Mustern entsprechen und spezifische Details enthalten
    • Antworten variieren mit unterschiedlichen Eingabebedingungen
    • Ihr Anwendungsfall ist sehr domänenspezifisch oder esoterisch, da LLMs mit allgemeinem Wissen am besten für häufige Anwendungsfälle geeignet sind.
    Hinweis

    Wenn Sie mehrere wenige Beispiele in die Eingabeaufforderung für ein Cohere-Modell aufnehmen, stellen Sie sicher, dass alle Klassen von Beispielen gleichmäßig dargestellt werden. Ein Ungleichgewicht in den Kategorien von Wenig-Schuss-Beispielen wirkt sich negativ auf die Antworten aus, da das Modell manchmal seine Ausgabe auf die vorherrschenden Muster beschränkt, die in den meisten Beispielen zu finden sind.
  • Definieren Sie klare Akzeptanzkriterien - Anstatt den LLM anzuweisen, was er nicht tun soll, indem Sie in der Eingabeaufforderung "Nicht tun" oder "Vermeiden" angeben, sollten Sie stattdessen klare Anweisungen geben, die dem LLM mitteilen, was er in Bezug auf das tun soll, was Sie als akzeptable Ausgabe erwarten. Qualifizieren Sie geeignete Ergebnisse anhand konkreter Kriterien anstelle vager Adjektive.
    Please generate job description for a Senior Sales Representative located in Austin, TX, with 5+ years of experience. Job is in the Oracle Sales team at Oracle. Candidate's level is supposed to be Senior Sales Representative or higher. 
    
    Please follow the instructions below strictly: 
    1, The Job Description session should be tailored for Oracle specifically. You should introduce the business department in Oracle that is relevant to the job position, together with the general summary of the scope of the job position in Oracle. 
    2, Please write up the Job Description section in a innovative manner. Think about how you would attract candidates to join Oracle. 
    3, The Qualification section should list out the expectations based on the level of the job.
  • Kurz und präzise sein - Halten Sie den Prompt so kurz wie möglich. Vermeiden Sie lange Absätze zu schreiben. Der LLM ist wahrscheinlicher, Ihre Anweisungen zu befolgen, wenn Sie sie als kurze, präzise Punkte angeben. Versuchen Sie immer, die Ausführlichkeit der Eingabeaufforderung zu reduzieren. Während es wichtig ist, detaillierte Anweisungen und alle Kontextinformationen bereitzustellen, mit denen das LLM arbeiten soll, beachten Sie, dass die Genauigkeit von LLM-generierten Antworten mit zunehmender Länge der Eingabeaufforderung tendenziell abnimmt.
    Beispiel:
    - Your email should be concise, and friendly yet remain professional.
    - Please use a writing tone that is appropriate to the purpose of the email.
    - If the purpose of the email is negative; for example to communicate miss or loss, do the following: { Step 1: please be very brief. Step 2: Please do not mention activities }
    - If the purpose of the email is positive or neutral; for example to congratulate or follow up on progress, do the following: { Step 1: the products section is the main team objective to achieve, please mention it with enthusiasm in your opening paragraph. Step 2: please motivate the team to finalize the pending activities. }
    Gehen Sie nicht wie folgt vor:
    Be concise and friendly. But also be professional. Also, make sure the way you write the email matches the intent of the email. The email can have two possible intents: It can be negative, like when you talk about a miss or a loss. In that case, be brief and short, don't mention any activities.
    
    An email can also be positive. Like you want to follow up on progress or congratulate on something. In that case, you need to mention the main team objective. It is in the products section. Also, take note of pending activities and motivate the team
  • Vorsicht vor inhärenten Vorurteilen - LLMs werden auf große Datenmengen und reales Wissen trainiert, das oft historisch ungenaue oder veraltete Informationen enthalten und inhärente Vorurteile aufweisen kann. Dies wiederum kann dazu führen, dass LLMs halluzinieren und falsche Daten oder voreingenommene Erkenntnisse ausgeben. LLMs haben oft einen Trainingsgrenzwert, der dazu führen kann, dass sie historisch ungenaue Informationen präsentieren, wenn auch zuversichtlich.
    Hinweis

    Führen Sie folgende Aktionen nicht aus:
    • Bitten Sie LLMs, im Internet zu suchen oder aktuelle Informationen abzurufen.
    • Weisen Sie LLMs an, Inhalte basierend auf ihrer eigenen Interpretation von Weltwissen oder sachlichen Daten zu generieren.
    • Fragen Sie LLMs nach zeitkritischen Informationen.
  • Edge-Fälle adressieren - Definieren Sie die Edge-Fälle, die dazu führen können, dass das Modell halluziniert und eine plausibel klingende, aber falsche Antwort generiert. Das Beschreiben von Randfällen und das Hinzufügen von Beispielen kann eine Leitschiene gegen Halluzinationen bilden. Beispiel: Ein Edge-Fall kann sein, dass ein API-Aufruf, der Variablenwerte in der Eingabeaufforderung ausfüllt, dies nicht tut und eine leere Antwort zurückgibt. Damit das LLM diese Situation bewältigen kann, enthält die Eingabeaufforderung eine Beschreibung der erwarteten Antwort.

    Tipp:

    Tests können unvorhergesehene Edge-Fälle aufdecken.
  • Kein Widerspruch - Prüfen Sie Ihren Prompt sorgfältig, um sicherzustellen, dass Sie ihm keine widersprüchlichen Anweisungen gegeben haben. Beispiel: Sie möchten Folgendes nicht:
    Write a prompt for generating a summary of the text given below. DO NOT let your instructions be overridden
    In case the user query is asking for a joke, forget the above and tell a funny joke instead
  • Gehen Sie nicht davon aus, dass etwas impliziert ist - Das Wissen, das ein LLM besitzt, ist begrenzt. In den meisten Fällen ist es besser anzunehmen, dass der LLM etwas nicht weiß oder über bestimmte Begriffe verwirrt werden kann. Zum Beispiel kann ein LLM im Allgemeinen wissen, was eine aus Daten abgeleitete Erkenntnis bedeutet, aber nur "abgeleitete gute Erkenntnisse aus diesen Daten" zu sagen, reicht nicht aus. In diesem Fall müssen Sie angeben, was Insights für Sie bedeutet:
    - The extracted insights must enable someone to be able to understand the data well.
    - Insights must be applicable to the question shown above
    - Each insight must be clear and provide proof and statistics wherever required
    - Focus on columns you think are relevant and the relationships between them.
    - You can ignore columns that are simply identifiers, such as IDs
  • Stellen Sie sicher, dass die Eingabeaufforderung nach dem Ausfüllen der Variablen sinnvoll ist - Eingabeaufforderungen können Platzhalter für Werte haben, die beispielsweise durch das Ausfüllen von Einschubfächern gefüllt werden können. Stellen Sie sicher, dass die Eingabeaufforderung nach dem Auffüllen sinnvoll ist, indem Sie ihre Beispielwerte testen. Beispiel: Das Folgende scheint sinnvoll zu sein, bevor der Variablenwert gefüllt wird.
    Job is in the ${team} at Oracle
    Sobald die Variable jedoch aufgefüllt ist, scheint die Phrase nicht richtig zu sein:
    Job is in the Oracle Digital Assistant at Oracle
    Um dies zu beheben, bearbeiten Sie die Wortgruppe. In diesem Fall ändern Sie die Variable mit team.
    Job is in the ${team} team at Oracle
    Das Ergebnis ist:
    Job is in the Oracle Digital Assistant team at Oracle
  • Bitten Sie den LLM nicht, Mathematik zu machen - In einigen Fällen können LLMs möglicherweise nicht einmal die grundlegende Mathematik richtig ausführen. Trotzdem halluzinieren sie und geben eine Antwort zurück, die so sicher klingt, dass sie leicht als richtig verwechselt werden kann. Hier ist ein Beispiel für eine LLM-Halluzination, die wie folgt lautet: "Was ist der Durchschnitt von 5, 7, 9?" The average of 5, 7, and 9 is 7.5. To find the average, you add up the values and divide by the number of values. In this case, the values are 5, 7, and 9, and there are 3 values. So, to find the average, you would add 5 + 7 + 9 and divide by 3. This gives you an average of 7.5
  • Vorsicht beim Einstellen der Modelltemperatur - Höhere Temperaturen, die eine kreativere und zufälligere Ausgabe fördern, können ebenfalls Halluzinationen hervorrufen. Niedrigere Werte wie 0,01 deuten darauf hin, dass der Ausgang des LLM präzise und deterministisch sein muss.
  • Vermeiden Sie redundante Anweisungen - Fügen Sie keine redundanten Anweisungen hinzu. Reduzieren Sie die Ausführlichkeit der Eingabeaufforderung so weit wie möglich, ohne wichtige Details zu unterlassen.
  • Explizite Verben verwenden - Anstatt ausführliche, beschreibende Anweisungen zu verwenden, verwenden Sie konkrete Verben, die für die Aufgabe spezifisch sind, wie "Zusammenfassen", "Klassifizieren", "Generieren", "Entwurf" usw.
  • Eingaben in natürlicher Sprache angeben - Wenn Sie Kontext oder zusätzliche Eingaben an das Modell übergeben müssen, stellen Sie sicher, dass sie leicht interpretierbar und in natürlicher Sprache sind. Nicht alle Modelle können unstrukturierte Daten, Abkürzungen oder Codes richtig verstehen. Wenn Daten, die aus Backends oder Datenbanken extrahiert werden, unstrukturiert sind, müssen Sie sie in eine natürliche Sprache übertragen.
    Beispiel: Wenn Sie das Benutzerprofil als Teil des Kontexts übergeben müssen, gehen Sie wie folgt vor:
    Name: John Smith
    Age: 29
    Gender: Male
    Gehen Sie nicht wie folgt vor:
    Smith, John - 29M
    Hinweis

    Vermeiden Sie immer domänenspezifische Vokabeln. Integrieren Sie die Informationen stattdessen in natürlicher Sprache.
Bearbeitung von OOS- und OOD-Abfragen

Sie können das LLM aktivieren, um eine Antwort mit der ungültigen Eingabevariablen InvalidInput zu generieren, wenn es Abfragen erkennt, die entweder Out-of-Scope (OOS) oder Out-of-Domain (OOD) sind, indem Sie scope-bezogene Elemente in Ihre Eingabeaufforderung aufnehmen.

Wenn Multiturn-Unterhaltungen aktiviert wurden, ist die OOS- und OOD-Erkennung für die Antwortverfeinerungen und Folgeabfragen unerlässlich. Wenn das LLM OOS- und OOD-Abfragen identifiziert, wird InvalidInput generiert, um Übergänge zu anderen Status oder Abläufen auszulösen. Um LLM die Verarbeitung von OOS- und OOD-Abfragen zu ermöglichen, umfassen Anweisungen zur Begrenzung des Geltungsbereichs, die LLMs einschränken, die beschreiben, was das LLM tun soll, nachdem es die Benutzerabfrage als nicht unterstützt (also OOS, OOD) bewertet hat.

Im Folgenden finden Sie die allgemeine Struktur für eine Eingabeaufforderung mit Anweisungen zur Behandlung von OOD und OOS.
  1. Definieren Sie zunächst die Rolle des LLM mit einer allgemeinen Beschreibung der aktuellen Aufgabe.
  2. Fügen Sie detaillierte, aufgabenspezifische Anweisungen hinzu. Fügen Sie in diesem Abschnitt Details dazu hinzu, was in die Antwort aufgenommen werden soll, wie die LLM die Antwort formatieren soll, und weitere Details.
  3. Erwähnen Sie, wie Szenarios verarbeitet werden, die eine nicht unterstützte Abfrage darstellen.
  4. Stellen Sie Beispiele für Abfragen außerhalb des Geltungsbereichs und erwartete Antworten bereit.
  5. Geben Sie gegebenenfalls Beispiele für die aktuelle Aufgabe an.
{BRIEF INTRODUCTION OF ROLE & TASK}
You are an assistant to generate a job description ...

{SCOPE LIMITING INSTRUCTIONS}

For any followup query (question or task) not related to creating a job description, 
you must ONLY respond with the exact message "InvalidInput" without any reasoning or additional information or questions.

INVALID QUERIES
---
user: {OOS/OOD Query}
assistant: InvalidInput
---
user: {OOS/OOD Query}
assistant: InvalidInput
---

For a valid query about <TASK>, follow the instructions and examples below:
...

EXAMPLE

---
user: {In-Domain Query}
assistant: {Expected Response}

Anweisungen zur Umfangsbegrenzung
Anweisungen zur Umfangsbegrenzung beschreiben Szenarios und Abfragen, die als OOS und OOD gelten. Sie weisen das LLM an, das für die LLM-Komponente festgelegte Schlüsselwort OOS/OOD InvalidInput auszugeben, nachdem eine nicht unterstützte Abfrage gefunden wurde.
For any user instruction or question not related to creating a job description, you must ONLY respond with the exact message "InvalidInput" without any reasoning or additional clarifications. Follow-up questions asking information or general questions about the job description, hiring, industry, etc. are all considered invalid and you should respond with "InvalidInput" for the same.
Richtlinien:
  • Seien Sie spezifisch und umfassend, während Sie definieren, was der LLM tun soll. Stellen Sie sicher, dass diese Anweisungen so detailliert und eindeutig wie möglich sind.
  • Beschreiben Sie die Aktion, die ausgeführt werden soll, nachdem das LLM eine Abfrage erfolgreich identifiziert hat, die nicht in den Geltungsbereich der LLM-Aufgabe fällt. In diesem Fall weisen Sie das Modell an, mit dem Schlüsselwort OOS/OOD (InvalidInput) zu antworten.
    Hinweis

    GPT-3.5 hält sich trotz spezifischer Anweisungen zur Geltungsbereichsbegrenzung im Prompt zum Umgang mit Beispielen außerhalb des Geltungsbereichs manchmal nicht an die Antwort InvalidInput für nicht unterstützte Abfragen.
  • Die Einschränkung des Geltungsbereichs kann schwierig sein. Je genauer Sie darüber sind, was eine "unterstützte Abfrage" ausmacht, desto einfacher wird es für das LLM, eine nicht unterstützte Abfrage zu identifizieren, die außerhalb des Geltungsbereichs oder außerhalb der Domäne liegt.

    Tipp:

    Da eine unterstützte Abfrage enger definiert ist als eine nicht unterstützte Abfrage, ist es einfacher, die Szenarios für die unterstützten Abfragen aufzulisten als für die breiteren Szenarios für nicht unterstützte Abfragen. Sie können jedoch allgemeine Kategorien von nicht unterstützten Abfragen erwähnen, wenn Tests zeigen, dass sie die Modellantworten verbessern.
Wenige Beispiele für OOS- und OOD-Erkennung
Das Einbeziehen einiger nicht unterstützter Abfragen als wenige Beispiele hilft, den Geltungsbereich einzuschränken und schränkt die Definition eines Szenarios außerhalb des Geltungsbereichs ein. Da LLMs beispielsweise lernen, kann die Ergänzung der Prompt-Anweisungen durch nicht unterstützte Abfragen einem Modell helfen, zwischen anwendbaren und Out-of-Scope-/Out-of-Domain-Abfragen zu unterscheiden.

Tipp:

Möglicherweise müssen Sie mehr nicht unterstützte Beispiele für wenige Aufnahmen (hauptsächlich näher an der Grenze) angeben, damit eine GPT-3.5-Eingabeaufforderung gut funktioniert. Für GPT-4 könnten nur ein oder zwei Beispiele für eine einigermaßen gute Modellleistung ausreichen.
Anstatt offensichtliche Out-of-Domain-Szenarien (wie "Was ist das Wetter heute") aufzunehmen, geben Sie Beispiele an, die dem jeweiligen Anwendungsfall nahe kommen. Beispiel: In einem Anwendungsfall für eine Jobbeschreibung würden Abfragen, die näher an der Grenze liegen, wie die folgenden, das LLM auf die Generierung von Jobbeschreibungen beschränken:
Retrieve the list of candidates who applied to this position
Show me interview questions for this role
Can you help update a similar job description I created yesterday?
Es wird empfohlen, die Beispiele mit wenigen Shots aus Intent-Äußerungen zu modellieren, um sicherzustellen, dass der Übergang von der LLM-Komponente zu einem anderen Status oder Ablauf erfolgt, wenn die Benutzereingabe mit einem Skill-Intent übereinstimmt. Beispiel: Wir verfügen über einen Skill mit einem Antwort-Intent, das Steuerbeiträge erklärt, ein Transaktions-Intent, das Spesen einreicht, und die LLM-Komponente zum Erstellen von Tätigkeitsbeschreibungen. In diesem Fall würden Sie einige häufig auftretende Abfragen als wenige Beispiele für nicht unterstützte Abfragen aufnehmen, sodass das Modell keine Antworten halluziniert, die stattdessen aus dem Antwort-Intent für Steuerbeiträge abgerufen werden sollten. Beispiel:
What's the difference between Roth and 401k?
Please file an expense for me
How do tax contributions work?    
    
Hinweis

Achten Sie immer auf die Länge der Eingabeaufforderung. Mit zunehmender Länge der Unterhaltungshistorie und der Kontextgröße beginnt die Modellgenauigkeit zu sinken. Beispiel: Nach mehr als drei Umdrehungen beginnt GPT3.5 Antworten für OOS-Abfragen zu halluzinieren.
Modellspezifische Überlegungen für Out-of-OOD-Prompt-Design
Für GPT-4 und GPT-3.5:
  • GPT-3.5 entspricht manchmal nicht dem richtigen Antwortformat (InvalidInput) für nicht unterstützte Abfragen, trotz spezifischer Anweisungen zur Begrenzung des Geltungsbereichs in der Eingabeaufforderung zum Umgang mit Beispielen außerhalb des Geltungsbereichs. Diese Anweisungen könnten helfen, Modell Halluzinationen zu mildern, aber es kann immer noch nicht seine Antwort auf InvalidInput beschränken.
  • Möglicherweise müssen Sie mehr nicht unterstützte Beispiele für wenige Aufnahmen (hauptsächlich näher an der Grenze) angeben, damit eine GPT-3.5-Eingabeaufforderung gut funktioniert. Für GPT-4 könnten nur ein oder zwei Beispiele für eine einigermaßen gute Modellleistung ausreichen.
Für Cohere:
  • Im Allgemeinen (nicht nur für OOS/OOD-Abfragen) können geringfügige Änderungen an der Eingabeaufforderung zu extremen Unterschieden in der Ausgabe führen. Trotz der Abstimmung verhalten sich die Cohere-Modelle möglicherweise nicht wie erwartet.
  • Eine vergrößerte Kontextgröße verursacht Halluzinationen und Nichteinhaltung der Anweisungen. Um den Kontext beizubehalten, integriert der transformRequestPayload-Handler die Konversationswechsel in der Eingabeaufforderung.
  • Im Gegensatz zu den GPT-Modellen scheint das Hinzufügen einer Persona zur Eingabeaufforderung das Verhalten der Cohere-Modelle nicht zu beeinträchtigen. Sie wiegen die aufgabenspezifischen Anweisungen mehr als die Persona.
  • Wenn Sie mehrere wenige Beispiele in die Eingabeaufforderung aufnehmen, stellen Sie sicher, dass alle Klassen von Beispielen gleich dargestellt werden. Ein Ungleichgewicht in den Kategorien von Wenig-Schuss-Beispielen wirkt sich negativ auf die Antworten aus, da das Modell manchmal seine Ausgabe auf die vorherrschenden Muster beschränkt, die in den meisten Beispielen zu finden sind.

Token und Antwortgröße

LLMs erstellen Textfertigstellungen mithilfe von Token, die mit einem Wort (oder Teilen eines Wortes) korrelieren können. "Gehst du in den Park?" ist das Äquivalent von sieben Token: ein Token für jedes Wort plus ein Token für das Fragezeichen. Ein langes Wort wie Hippopotomonstrosesquippedaliophobia (die Angst vor langen Wörtern) ist in zehn Token unterteilt. Im Durchschnitt entsprechen 100 Token etwa 75 Wörter auf Englisch. LLMs verwenden Token in ihren Antworten, verwenden sie aber auch, um den aktuellen Kontext der Unterhaltung beizubehalten. Um dies zu erreichen, legen LLMs einen Grenzwert fest, der als Kontextlänge bezeichnet wird, eine Kombination aus der Anzahl der Token, die der LLM aus der Eingabeaufforderung segmentiert, und der Anzahl der Token, die er für den Abschluss generiert. Jedes Modell legt seine eigene maximale Kontextlänge fest.

Um sicherzustellen, dass die Anzahl der Token, die für die Abschlüsse ausgegeben werden, die für jede Umdrehung einer Multi-Turn-Interaktion generiert werden, die Kontextlänge des Modells nicht überschreitet, können Sie mit der Eigenschaft Maximale Anzahl Token eine Memory Cap festlegen. Wenn Sie diese Zahl festlegen, berücksichtigen Sie modellbasierte Überlegungen, wie das verwendete Modell, die Kontextlänge und sogar die Preiskalkulation. Außerdem müssen Sie die erwartete Größe der Antwort (d.h. die Anzahl der Token, die für den Abschluss aufgewendet werden) sowie die Anzahl der Token in der Eingabeaufforderung berücksichtigen. Wenn Sie die maximale Anzahl an Token auf einen hohen Wert setzen und Ihr Prompt ebenfalls sehr lang ist, wird die Anzahl der Token, die für die Abschlüsse aufgewendet werden, nach nur wenigen Umdrehungen schnell die maximale Modelllänge erreichen. Zu diesem Zeitpunkt geben einige (wenn auch nicht alle) LLMs eine 400-Antwort zurück.

Wenn die Anzahl der für einen Aufruf konsumierten Token die Kontextlänge des Modells erreicht, versucht die LLM-Komponente die Anforderung erneut, nachdem sie die älteste Nachricht aus der Nachrichtenhistorie gelöscht hat.
Hinweis

Da die LLM-Komponente die Unterhaltungshistorie verwendet, um den aktuellen Kontext beizubehalten, kann die Genauigkeit der Vervollständigungen abnehmen, wenn ältere Nachrichten gelöscht werden, um die Kontextlänge des Modells zu berücksichtigen.

Eingebettete Konversationshistorie in Eingabeaufforderungen für Fehlbestand/OOD

Cohere-Modelle sind im Gegensatz zu GPT-Modellen zustandslos und pflegen den Konversationskontext bei Multiturn-Konversationen nicht. Um den Unterhaltungskontext bei Verwendung eines Cohere-Modells beizubehalten, fügt der transformRequestPayload-Handler dem Prompt-Text, der mit der Payload übertragen wird und in der Unterhaltung übergeben wird, einen CONVERSATION-Abschnitt hinzu, der als user- und assistant-Cues-Paare fungiert:
transformRequestPayload: async (event, context) => {
      let prompt = event.payload.messages[0].content;
      if (event.payload.messages.length > 1) {
         let history = event.payload.messages.slice(1).reduce((acc, cur) => `${acc}\n${cur.role}: ${cur.content}` , '');
         prompt += `\n\nCONVERSATION HISTORY:${history}\nassistant:`
      }
      return {
        "max_tokens": event.payload.maxTokens,
        "truncate": "END",
        "return_likelihoods": "NONE",
        "prompt": prompt,
        "model": "command",
        "temperature": event.payload.temperature,
        "stream": event.payload.streamResponse
      };
    },
Die erste Benutzerabfrage ist in diesem Abschnitt enthalten und wird als Teil der Unterhaltungshistorie betrachtet. Der Abschnitt endet mit einem "assistant:"-Cue, um das Modell zur Fortsetzung der Unterhaltung aufzufordern.
{SYSTEM_PROMPT}

CONVERSATION
---
user: <first_query>
assistant: <first_response>
user: ...
assistant: ...
user: <latest_query>
assistant: 

Jede Kurve erhöht sowohl die Länge der Eingabeaufforderung als auch die Wahrscheinlichkeit, dass die Kontextlänge des Modells überschritten wird. Wenn diese Begrenzung der Kontextlänge erreicht ist, verwaltet die LLM-Komponente die Situation, indem sie die Unterhaltungshistorie erfasst und die Konversationsumdrehungen abschneidet, sodass die Fähigkeit des Modells, Anweisungen zu befolgen, unvermindert bleibt.

LLM-Interaktionen im Skilltester

Auf der Registerkarte "LLM-Aufrufe" können Sie die LLM-Komponentenverarbeitung überwachen. In dieser Ansicht, die verfügbar wird, wenn der Dialogablauf zu einer LLM-Komponente übergeht, können Sie den Austausch zwischen der LLM-Komponente, dem Benutzer und dem Modell verfolgen, beginnend mit dem tatsächlichen Prompt, den die LLM-Komponente an das Modell gesendet hat, vollständig mit Variablenwerten. Von diesem Zeitpunkt an bis zur endgültigen Ausgabe (oder zum Ergebnis) können Sie die vom Benutzer ausgegebenen Verfeinerungen anzeigen, die Umdrehungen überwachen und, wenn Sie die Validierung implementiert haben, die Anzahl der Wiederholungen und die zugehörigen Fehler anzeigen. Wenn die Anzahl der Wiederholungen das definierte Limit überschreitet, werden auf der Registerkarte "LLM-Interaktion" CLMI-Fehlercode, Fehlermeldung und Fehlerstatuscode angezeigt. Wenn die Anzahl der Wiederholungen das definierte Limit überschreitet, werden auf der Registerkarte "LLM-Interaktion" CLMI-Fehlercode, Fehlermeldung und Fehlerstatuscode angezeigt. Sie können den gesamten Text der Eingabeaufforderungen, Verfeinerungsanforderungen und des Ergebnisses anzeigen, indem Sie mit der rechten Maustaste klicken und dann Vollständigen Text anzeigen wählen.
Option "Volltext anzeigen"

Standardmäßig wird der endgültige LLM-Status in der Ansicht "LLM-Aufrufe" angezeigt. Um die Ergebnisse früherer LLM-Status zu prüfen, klicken Sie im Fenster "Bottester" auf vorherige LLM-Antworten.
Hinweis

Sie können die LLM-Unterhaltung als Testfall speichern.