Partager via


Syntaxe du modèle d’invite de noyau sémantique

Le langage de modèle d’invite de noyau sémantique est un moyen simple de définir et de composer des fonctions IA à l’aide de texte brut. Vous pouvez l’utiliser pour créer des invites en langage naturel, générer des réponses, extraire des informations, appeler d’autres invites ou effectuer toute autre tâche qui peut être exprimée avec du texte.

Le langage prend en charge trois fonctionnalités de base qui vous permettent d’inclure des variables, 2) appeler des fonctions externes et 3) transmettre des paramètres à des fonctions.

Vous n'avez pas besoin d'écrire de code ni d'importer de bibliothèques externes, utilisez simplement les accolades {{...}} pour intégrer des expressions dans vos commandes. Le noyau sémantique analyse votre modèle et exécute la logique derrière celle-ci. De cette façon, vous pouvez facilement intégrer l’IA dans vos applications avec un effort minimal et une flexibilité maximale.

Pourboire

Si vous avez besoin d’autres fonctionnalités, nous prenons également en charge : Handlebars et les moteurs de modèles Liquid , ce qui vous permet d’utiliser des boucles, des conditions et d’autres fonctionnalités avancées.

Variables

Pour inclure une valeur de variable dans votre invite, utilisez la syntaxe {{$variableName}}. Par exemple, si vous avez une variable appelée name qui contient le nom de l’utilisateur, vous pouvez écrire :

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

Cela génère un message d’accueil avec le nom de l’utilisateur.

Les espaces sont ignorés. Par conséquent, si vous le trouvez plus lisible, vous pouvez également écrire :

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

Appels de fonction

Pour appeler une fonction externe et incorporer le résultat dans votre invite, utilisez la syntaxe {{namespace.functionName}}. Par exemple, si vous avez une fonction appelée weather.getForecast qui retourne les prévisions météorologiques pour un emplacement donné, vous pouvez écrire :

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

Cela génère une phrase avec les prévisions météorologiques pour l’emplacement par défaut stocké dans la variable input. La variable input est définie automatiquement par le noyau lors de l’appel d’une fonction. Par exemple, le code ci-dessus équivaut à :

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

Paramètres de fonction

Pour appeler une fonction externe et lui transmettre un paramètre, utilisez la syntaxe {{namespace.functionName $varName}} et {{namespace.functionName "value"}}. Par exemple, si vous souhaitez passer une autre entrée à la fonction de prévision météorologique, vous pouvez écrire :

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

Cela génère deux phrases avec les prévisions météorologiques pour deux emplacements différents, en utilisant la ville stockée dans la variable city et la « Schio » valeur d’emplacement codée en dur dans le modèle d’invite.

Remarques sur les caractères spéciaux

Les modèles de fonction sémantique sont des fichiers texte. Il n’est donc pas nécessaire d’échapper des caractères spéciaux tels que de nouvelles lignes et onglets. Toutefois, il existe deux cas qui nécessitent une syntaxe spéciale :

  1. Inclure des accolades doubles dans les modèles d’invite
  2. Passage à des fonctions codées en dur qui incluent des guillemets

Instructions nécessitant des accolades doubles

Les accolades doubles ont un cas d’usage spécial, ils sont utilisés pour injecter des variables, des valeurs et des fonctions dans des modèles.

Si vous devez inclure les séquences {{ et }} dans vos invites, ce qui peut déclencher une logique de rendu spéciale, la meilleure solution consiste à utiliser des valeurs de chaîne entre guillemets, comme {{ "{{" }} et {{ "}}" }}

Par exemple:

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

s’affichera sur :

{{ and }} are special SK sequences.

Valeurs qui incluent des guillemets et des échappements

Les valeurs peuvent être placées entre guillemets simples et guillemets doubles.

Pour éviter la nécessité d’une syntaxe spéciale, lors de l’utilisation d’une valeur qui contient guillemets simples, nous vous recommandons d’encapsuler la valeur avec des guillemets doubles . De même, lors de l’utilisation d’une valeur qui contient guillemets doubles, encapsulez la valeur avec des guillemets simples .

Par exemple:

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

Dans les cas où la valeur contient à la fois des guillemets simples et doubles, vous devez échapper, en utilisant le symbole «\ » spécial.

Lorsque vous utilisez des guillemets doubles autour d’une valeur, utilisez «\"» pour inclure un symbole de guillemets doubles à l’intérieur de la valeur :

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

de même, lorsque vous utilisez des guillemets simples, utilisez «\'» pour inclure un guillemet unique dans la valeur :

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

Les deux sont rendus à :

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

Notez que, pour la cohérence, les séquences «\'» et «\"» se traduisent toujours par «'» et «"», même quand l'échappement pourrait ne pas être nécessaire.

Par exemple:

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

équivaut à :

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

et les deux sont interprétés comme :

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

Si vous devrez peut-être afficher une barre oblique inverse devant une citation, car «\» est un char spécial, vous devrez également l’échapper et utiliser les séquences spéciales «\\\'» et «\\\"».

Par exemple:

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

est rendu comme :

two special chars \' here

Comme pour les guillemets simples et doubles, le symbole «\» n’a pas toujours besoin d’être échappé. Toutefois, pour la cohérence, elle peut être échappée même si ce n’est pas nécessaire.

Par exemple:

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

équivaut à :

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

et les deux sont affichés comme :

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

Enfin, les barres obliques inverses ont une signification spéciale uniquement lorsqu'elles sont utilisées devant «'», «"» et «\».

Dans tous les autres cas, le caractère de barre oblique inverse n’a aucun impact et est rendu tel quel. Par exemple:

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

est rendu sur :

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

Étapes suivantes

Le noyau sémantique prend en charge d’autres formats de modèle populaires en plus de son propre format intégré. Dans les sections suivantes, nous allons examiner d’autres formats, Modèles Handlebars et Liquid.