Sintaxe do modelo de prompt do Kernel Semântico

A linguagem de modelos de prompt do Kernel Semântico é uma forma simples de definir e compor funções de IA em texto simples. Pode usá-lo para criar prompts em linguagem natural, gerar respostas, extrair informação, invocar outros prompts ou realizar qualquer outra tarefa que possa ser expressa por texto.

A linguagem suporta três funcionalidades básicas que permitem 1) incluir variáveis, 2) chamar funções externas e 3) passar parâmetros para funções.

Não precisas de escrever código nem importar bibliotecas externas, basta usar as colchetes {{...}} curvas para incorporar expressões nos teus prompts. O Kernel Semântico analisa o teu template e executa a lógica por trás dele. Desta forma, pode integrar facilmente IA nas suas aplicações com esforço mínimo e máxima flexibilidade.

Tip

Se precisar de mais funcionalidades, também suportamos os motores de modelos Handlebars e Liquid, que lhe permitem utilizar ciclos, condicionais e outras funcionalidades avançadas.

Variáveis

Para incluir o valor de uma variável no seu prompt, utilize a sintaxe {{$variableName}}. Por exemplo, se tiver uma variável chamada name que contém o nome do utilizador, pode escrever:

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

Isto produzirá uma saudação com o nome do utilizador.

Os espaços são ignorados, por isso, se achar mais legível, também pode escrever:

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

Chamadas de função

Para chamar uma função externa e inserir o resultado no seu prompt, use a sintaxe {{namespace.functionName}}. Por exemplo, se tiver uma função chamada weather.getForecast que devolve a previsão meteorológica para uma determinada localização, pode escrever:

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

Isto produzirá uma frase com a previsão meteorológica para a localização padrão armazenada na input variável. A input variável é definida automaticamente pelo kernel ao invocar uma função. Por exemplo, o código acima é equivalente a:

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

Parâmetros de função

Para chamar uma função externa e passar-lhe um parâmetro, use a sintaxe {{namespace.functionName $varName}} e {{namespace.functionName "value"}}. Por exemplo, se quiser passar uma entrada diferente para a função de previsão meteorológica, pode escrever:

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

Isto produzirá duas frases com a previsão meteorológica para dois locais diferentes, usando a cidade armazenada na city variável e o valor da localização "Schio" codificado fixamente no modelo de prompt.

Notas sobre personagens especiais

Os modelos de funções semânticas são ficheiros de texto, por isso não há necessidade de escapar de caracteres especiais como novas linhas e tabuladores. No entanto, existem dois casos que requerem uma sintaxe especial:

  1. Incluir chavetas duplas nos modelos de prompt
  2. Passar para funções valores codificados de forma fixa que incluem aspas

Instruções que requerem chavetas duplas

As chavetas duplas têm uma utilização específica: são usadas para injetar variáveis, valores e funções em modelos.

Se precisares de incluir as {{ sequências e }} nos teus prompts, o que pode desencadear uma lógica de renderização especial, a melhor solução é usar valores de cadeia incluídos entre aspas, como {{ "{{" }} e {{ "}}" }}

Por exemplo:

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

irá renderizar para:

{{ and }} are special SK sequences.

Valores que incluem aspas e caracteres de escape

Os valores podem ser incluídos usando aspas simples e duplas.

Para evitar a necessidade de sintaxe especial, ao trabalhar com um valor que contém aspas simples, recomendamos envolver o valor com aspas duplas. De forma semelhante, ao usar um valor que contenha aspas duplas, envolva o valor com aspas simples.

Por exemplo:

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

Para os casos em que o valor contém aspas simples e aspas duplas, será necessário usar caracteres de escape, recorrendo ao símbolo especial «\».

Ao usar aspas duplas em torno de um valor, use «\"» para incluir um símbolo de aspas duplas dentro do valor:

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

E de forma semelhante, ao usar aspas simples, use «\'» para incluir uma única citação dentro do valor:

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

Ambos são renderizados para:

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

Note-se que, para maior consistência, as sequências «\'» e «\"» são sempre renderizadas para «'» e «"», mesmo quando pode não ser necessário escapar.

Por exemplo:

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

é equivalente a:

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

e ambos são processados como:

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

Caso precises de renderizar uma barra diagonal à frente de uma citação, já que «\» é um personagem especial, também terás de escapar e usar as sequências especiais «\\\'» e «\\\"».

Por exemplo:

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

é renderizado como:

two special chars \' here

De forma semelhante às aspas simples e duplas, o símbolo «\» nem sempre precisa de ser evitado. No entanto, para maior consistência, pode ser evitado mesmo quando não é necessário.

Por exemplo:

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

é equivalente a:

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

e ambos são renderizados para:

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

Por fim, as barras invertidas têm um significado especial apenas quando usadas antes de «'», «"» e «\».

Em todos os outros casos, o carácter de barra invertida não tem qualquer efeito e é representado como está. Por exemplo:

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

é renderizado como:

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

Passos seguintes

O Kernel Semântico suporta outros formatos de templates populares, além do seu próprio formato incorporado. Nas secções seguintes, vamos analisar formatos adicionais, guiadores e modelos líquidos .