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 :
- Inclure des accolades doubles dans les modèles d’invite
- 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.