Delen via


Syntaxis van Semantische kernelpromptsjabloon

De semantische kernel prompt-sjabloon-taal is een eenvoudige manier om AI-functies te definiëren en samenstellen met platte tekst. U kunt deze gebruiken om prompts in natuurlijke taal te maken, antwoorden te genereren, informatie te extraheren, andere prompts aan te roepen of andere taken uit te voeren die met tekst kunnen worden uitgedrukt.

De taal ondersteunt drie basisfuncties waarmee u 1) variabelen kunt opnemen, 2) externe functies aanroepen en 3) parameters doorgeven aan functies.

U hoeft geen code te schrijven of externe bibliotheken te importeren. Gebruik gewoon de accolades {{...}} om expressies in te sluiten in uw prompts. Semantische kernel parseert uw sjabloon en voert de logica erachter uit. Op deze manier kunt u AI eenvoudig integreren in uw apps met minimale inspanning en maximale flexibiliteit.

Tip

Als u extra mogelijkheden nodig heeft, bieden we ook ondersteuning voor: Handlebars en Liquid sjablonen, waarmee u lussen, voorwaardelijke controlestructuren en andere geavanceerde functies kunt gebruiken.

Variabelen

Als u een variabelewaarde wilt opnemen in uw prompt, gebruikt u de {{$variableName}} syntaxis. Als u bijvoorbeeld een variabele hebt met de naam name die de naam van de gebruiker bevat, kunt u het volgende schrijven:

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

Hiermee wordt een begroeting met de naam van de gebruiker geproduceerd.

Spaties worden genegeerd, dus als u deze beter leesbaar vindt, kunt u ook schrijven:

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

Functieaanroepen

Als u een externe functie wilt aanroepen en het resultaat in de prompt wilt insluiten, gebruikt u de syntaxis van de {{namespace.functionName}}. Als u bijvoorbeeld een functie hebt met de naam weather.getForecast die de weersvoorspelling voor een bepaalde locatie retourneert, kunt u het volgende schrijven:

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

Hiermee wordt een zin geproduceerd met de weersvoorspelling voor de standaardlocatie die is opgeslagen in de variabele input. De input variabele wordt automatisch door de kernel ingesteld bij het aanroepen van een functie. De bovenstaande code is bijvoorbeeld gelijk aan:

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

Functieparameters

Als u een externe functie wilt aanroepen en er een parameter aan wilt doorgeven, gebruikt u de {{namespace.functionName $varName}} en {{namespace.functionName "value"}} syntaxis. Als u bijvoorbeeld een andere invoer wilt doorgeven aan de functie voor weersvoorspelling, kunt u het volgende schrijven:

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

Dit produceert twee zinnen met de weersvoorspelling voor twee verschillende locaties, met behulp van de plaats die is opgeslagen in de city variabele en de 'Schio' locatiewaarde vastgelegd in de promptsjabloon.

Opmerkingen over speciale tekens

Semantische functiesjablonen zijn tekstbestanden, dus u hoeft speciale tekens zoals regelovergangen en tabulaties niet te ontsnappen. Er zijn echter twee gevallen waarvoor een speciale syntaxis is vereist:

  1. Dubbele accolades opnemen in de promptsjablonen
  2. Doorgeven aan functies vastgelegde waarden die aanhalingstekens bevatten

Prompts die dubbele accolades nodig hebben

Dubbele accolades hebben een speciaal gebruiksvoorbeeld, ze worden gebruikt voor het injecteren van variabelen, waarden en functies in sjablonen.

Als u de {{- en }} reeksen in uw prompts moet opnemen, waardoor speciale renderinglogica kan worden geactiveerd, kunt u het beste tekenreekswaarden tussen aanhalingstekens gebruiken, zoals {{ "{{" }} en {{ "}}" }}

Bijvoorbeeld:

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

wordt weergegeven in:

{{ and }} are special SK sequences.

Waarden met aanhalingstekens en escapen

Waarden kunnen worden ingesloten met enkele aanhalingstekens en dubbele aanhalingstekens.

Om de noodzaak van speciale syntaxis te voorkomen, raden we u aan om bij het werken met een waarde die enkele aanhalingstekensbevat, de waarde te verpakken met dubbele aanhalingstekens. Als u een waarde gebruikt die dubbele aanhalingstekensbevat, dient u de waarde te omringen met enkele aanhalingstekens.

Bijvoorbeeld:

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

Voor gevallen waarin de waarde zowel enkele als dubbele aanhalingstekens bevat, hebt u nodig met behulp van het speciale «\» symbool.

Wanneer u dubbele aanhalingstekens rond een waarde gebruikt, gebruikt u «\"» om een dubbel aanhalingsteken in de waarde op te nemen:

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

en wanneer u enkele aanhalingstekens gebruikt, gebruikt u «\'» om een enkel aanhalingsteken binnen de waarde op te nemen:

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

Beide worden weergegeven als:

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

Houd er rekening mee dat voor consistentie de reeksen «\'» en «\"» altijd worden weergegeven in «'» en «"», zelfs wanneer ontsnappen niet nodig is.

Bijvoorbeeld:

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

is gelijk aan:

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

en beide renderen naar:

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

Als u mogelijk een backslash vóór een aanhalingsteken moet plaatsen, dient u deze ook te escaperen, omdat «\» een speciaal teken is. U moet dan de speciale reeksen «\\\'» en «\\\"»gebruiken.

Bijvoorbeeld:

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

wordt weergegeven tot:

two special chars \' here

Net zoals bij enkele en dubbele aanhalingstekens hoeft het symbool «\» niet altijd te worden geëscaped. Voor de consistentie kan het echter worden geëscaped, zelfs wanneer het niet nodig is.

Bijvoorbeeld:

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

is gelijk aan:

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

en beide worden weergegeven voor:

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

Ten slotte hebben backslashes alleen een speciale betekenis wanneer ze worden gebruikt voor «'», «"» en «\».

In alle andere gevallen heeft het backslash-teken geen invloed en wordt het weergegeven zoals is. Bijvoorbeeld:

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

wordt weergegeven als:

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

Volgende stappen

Semantic Kernel biedt ondersteuning voor andere populaire sjabloonindelingen naast zijn eigen ingebouwde indeling. In de volgende secties kijken we naar aanvullende indelingen, handlebars en Liquid-sjablonen.