Freigeben über


Syntax der Semantischen Kernel-Eingabeaufforderungsvorlage

Die Vorlagensprache des semantischen Kernels ist eine einfache Möglichkeit, KI-Funktionen mithilfe von einfachem Text zu definieren und zu verfassen. Sie können sie verwenden, um Eingabeaufforderungen für natürliche Sprachen zu erstellen, Antworten zu generieren, Informationen zu extrahieren, andere Eingabeaufforderungen aufzurufen oder eine andere Aufgabe auszuführen, die mit Text ausgedrückt werden kann.

Die Sprache unterstützt drei grundlegende Features, mit denen Sie 1) Variablen einschließen können, 2) externe Funktionen aufrufen und 3) Parameter an Funktionen übergeben.

Sie müssen keinen Code schreiben oder externe Bibliotheken importieren. Verwenden Sie einfach die geschweiften Klammern {{...}}, um Ausdrücke in Ihre Eingabeaufforderungen einzubetten. Der semantische Kernel analysiert Ihre Vorlage und führt die dahinter liegende Logik aus. Auf diese Weise können Sie KI mit minimalem Aufwand und maximaler Flexibilität einfach in Ihre Apps integrieren.

Trinkgeld

Wenn Sie weitere Funktionen benötigen, unterstützen wir auch: Handlebars und Liquid Vorlagen-Engines, mit denen Sie Schleifen, Bedingungen und andere erweiterte Funktionen verwenden können.

Variablen

Verwenden Sie die {{$variableName}} Syntax, um einen Variablenwert in die Eingabeaufforderung einzuschließen. Wenn Sie beispielsweise eine Variable namens name haben, die den Namen des Benutzers enthält, können Sie Folgendes schreiben:

Hello {{$name}}, welcome to Semantic Kernel!

Dadurch wird eine Begrüßung mit dem Namen des Benutzers erzeugt.

Leerzeichen werden ignoriert. Wenn Sie sie besser lesbar finden, können Sie auch schreiben:

Hello {{ $name }}, welcome to Semantic Kernel!

Funktionsaufrufe

Um eine externe Funktion aufzurufen und das Ergebnis in Ihre Eingabeaufforderung einzubetten, verwenden Sie die {{namespace.functionName}} Syntax. Wenn Sie beispielsweise eine Funktion namens weather.getForecast haben, die die Wettervorhersage für einen bestimmten Ort zurückgibt, können Sie Folgendes schreiben:

The weather today is {{weather.getForecast}}.

Dadurch wird ein Satz mit der Wettervorhersage für den Standardstandort erzeugt, der in der variablen input gespeichert ist. Die input Variable wird automatisch vom Kernel beim Aufrufen einer Funktion festgelegt. Der obige Code entspricht z. B. folgendem Code:

The weather today is {{weather.getForecast $input}}.

Funktionsparameter

Um eine externe Funktion aufzurufen und einen Parameter an ihn zu übergeben, verwenden Sie die Syntax {{namespace.functionName $varName}} und {{namespace.functionName "value"}}. Wenn Sie beispielsweise eine andere Eingabe an die Wettervorhersagefunktion übergeben möchten, können Sie Folgendes schreiben:

The weather today in {{$city}} is {{weather.getForecast $city}}.
The weather today in Schio is {{weather.getForecast "Schio"}}.

Dies erzeugt zwei Sätze mit der Wettervorhersage für zwei verschiedene Orte, wobei die stadt, die in der variablen city gespeichert ist, und die "Schio" Standortwert hartcodiert in der Eingabeaufforderungsvorlage.

Hinweise zu speziellen Zeichen

Vorlagen für semantische Funktionen sind Textdateien, sodass keine Sonderzeichen wie neue Zeilen und Registerkarten escapen müssen. Es gibt jedoch zwei Fälle, in denen eine spezielle Syntax erforderlich ist:

  1. Einschließen doppelter geschweifter Klammern in die Eingabeaufforderungsvorlagen
  2. Übergeben von hartcodierten Werten an Funktionen, die Anführungszeichen enthalten

Eingabeaufforderungen, die doppelte geschweifte Klammern benötigen

Doppelte geschweifte Klammern haben eine spezielle Verwendung: Sie werden genutzt, um Variablen, Werte und Funktionen in Vorlagen einzufügen.

Wenn Sie die {{- und }}-Sequenzen in die Eingabeaufforderungen einschließen müssen, da sie spezielle Renderinglogik auslösen könnten, besteht die beste Lösung darin, Zeichenfolgenwerte in Anführungszeichen wie {{ "{{" }} und {{ "}}" }} zu verwenden.

Zum Beispiel:

{{ "{{" }} and {{ "}}" }} are special SK sequences.

wird dargestellt als:

{{ and }} are special SK sequences.

Werte, die Anführungszeichen und Escape-Sequenzen enthalten

Werte können mit einfachen Anführungszeichen und doppelte Anführungszeicheneingeschlossen werden.

Um die Notwendigkeit einer speziellen Syntax zu vermeiden, empfehlen wir beim Arbeiten mit einem Wert, der einzelnen Anführungszeichenenthält, den Wert mit doppelten Anführungszeichenumzuschließen. Ebenso werden bei Verwendung eines Werts, der doppelte Anführungszeichenenthält, der Wert mit einzelnen Anführungszeicheneingeschlossen.

Zum Beispiel:

...text... {{ functionName "one 'quoted' word" }} ...text...
...text... {{ functionName 'one "quoted" word' }} ...text...

Für Fälle, in denen der Wert sowohl einfache als auch doppelte Anführungszeichen enthält, benötigen Sie Escapen, wobei das spezielle \» Symbol verwendet wird.

Wenn Sie doppelte Anführungszeichen um einen Wert verwenden, verwenden Sie «\"», um ein doppeltes Anführungszeichen innerhalb des Werts einzuschließen:

... {{ "quotes' \"escaping\" example" }} ...

und verwenden Sie bei Verwendung einzelner Anführungszeichen «\'», um ein einzelnes Anführungszeichen in den Wert einzuschließen:

... {{ 'quotes\' "escaping" example' }} ...

Beide werden gerendert in:

... quotes' "escaping" example ...

Beachten Sie, dass die Sequenzen «\'» und «\"» immer zu «'» und «"»dargestellt werden, auch wenn das Escapen nicht erforderlich sein könnte.

Zum Beispiel:

... {{ 'no need to \"escape" ' }} ...

entspricht:

... {{ 'no need to "escape" ' }} ...

und beide rendern in:

... no need to "escape" ...

Falls Sie einen umgekehrten Schrägstrich vor einem Zitat rendern müssen, da «\» ein besonderes Zeichen ist, müssen Sie es auch entkommen und die speziellen Sequenzen «\\\'» » und «\\\"»verwenden .

Zum Beispiel:

{{ 'two special chars \\\' here' }}

wird dargestellt als:

two special chars \' here

Ähnlich wie einfache und doppelte Anführungszeichen muss das Symbol «\» nicht immer maskiert werden. Aus Gründen der Konsistenz kann es jedoch auch dann maskiert werden, wenn es nicht erforderlich ist.

Zum Beispiel:

... {{ 'c:\\documents\\ai' }} ...

entspricht:

... {{ 'c:\documents\ai' }} ...

und beide werden wie folgt gerendert:

... c:\documents\ai ...

Schließlich haben Rückstriche nur eine spezielle Bedeutung, wenn sie vor «'», «"» und «\»verwendet werden.

In allen anderen Fällen hat der umgekehrte Schrägstrich keine Auswirkungen und wird unverändert dargestellt. Zum Beispiel:

{{ "nothing special about these sequences: \0 \n \t \r \foo" }}

wird gerendert als:

nothing special about these sequences: \0 \n \t \r \foo

Nächste Schritte

Der semantische Kernel unterstützt neben seinem eigenen integrierten Format auch andere gängige Vorlagenformate. In den nächsten Abschnitten befassen wir uns mit zusätzlichen Formaten, Handlebars und Liquid Vorlagen.