Sintaxis de plantilla de instrucción de kernel semántico
El lenguaje de plantillas del Kernel Semántico es una manera sencilla de definir y componer funciones de IA utilizando texto sin formato. Puede usarlo para crear mensajes de lenguaje natural, generar respuestas, extraer información, invocar otras indicaciones o realizar cualquier otra tarea que se pueda expresar con texto.
El lenguaje admite tres características básicas que permiten incluir variables, 2) llamar a funciones externas y 3) pasar parámetros a funciones.
No es necesario escribir ningún código ni importar ninguna biblioteca externa, solo tiene que usar las llaves {{...}}
para insertar expresiones en los mensajes.
El kernel semántico analizará la plantilla y ejecutará la lógica detrás de ella.
De este modo, puede integrar fácilmente la inteligencia artificial en las aplicaciones con un esfuerzo mínimo y una máxima flexibilidad.
Consejo (if the meaning of "Tip" is advice or suggestion)
Si necesita más funcionalidades, también admitimos: Handlebars y motores de plantillas Liquid , lo que le permite usar bucles, condicionales y otras características avanzadas.
Variables
Para incluir un valor de variable en tu solicitud, utiliza la sintaxis {{$variableName}}
.
Por ejemplo, si tiene una variable denominada name
que contiene el nombre del usuario, puede escribir:
Hello {{$name}}, welcome to Semantic Kernel!
Esto generará un saludo con el nombre del usuario.
Los espacios se omiten, por lo que si lo encuentra más legible, también puede escribir:
Hello {{ $name }}, welcome to Semantic Kernel!
Llamadas de función
Para llamar a una función externa e insertar el resultado en el prompt, use la sintaxis {{namespace.functionName}}
.
Por ejemplo, si tiene una función denominada weather.getForecast
que devuelve la previsión meteorológica de una ubicación determinada, puede escribir:
The weather today is {{weather.getForecast}}.
Esto generará una frase con la previsión meteorológica de la ubicación predeterminada almacenada en la variable input
.
El kernel establece automáticamente la variable input
al invocar una función.
Por ejemplo, el código anterior es equivalente a:
The weather today is {{weather.getForecast $input}}.
Parámetros de función
Para llamar a una función externa y pasarle un parámetro, use la sintaxis {{namespace.functionName $varName}}
y {{namespace.functionName "value"}}
.
Por ejemplo, si desea pasar una entrada diferente a la función de previsión meteorológica, puede escribir:
The weather today in {{$city}} is {{weather.getForecast $city}}.
The weather today in Schio is {{weather.getForecast "Schio"}}.
Esto generará dos oraciones con la previsión meteorológica de dos ubicaciones diferentes, usando la ciudad almacenada en la variable city
y el "Schio" valor de ubicación codificado de forma codificada en la plantilla del aviso.
Notas sobre caracteres especiales
Las plantillas de función semántica son archivos de texto, por lo que no es necesario escapar caracteres especiales como nuevas líneas y pestañas. Sin embargo, hay dos casos que requieren una sintaxis especial:
- Inclusión de llaves dobles en las plantillas de aviso
- Pasar a funciones codificadas de forma rígida que incluyen comillas
Indicaciones que necesitan corchetes rizados
Las llaves dobles tienen un uso específico: se utilizan para insertar variables, valores y funciones en plantillas.
Si necesita incluir las secuencias de {{
y }}
en las indicaciones, lo que podría desencadenar una lógica de representación especial, la mejor solución es usar valores de cadena entre comillas, como {{ "{{" }}
y {{ "}}" }}
Por ejemplo:
{{ "{{" }} and {{ "}}" }} are special SK sequences.
se representará en:
{{ and }} are special SK sequences.
Valores que incluyen comillas y escape
Los valores se pueden incluir utilizando comillas simples y comillas dobles.
Para evitar la necesidad de una sintaxis especial, cuando se trabaja con un valor que contiene comillas simples, se recomienda envolver el valor con comillas dobles. Del mismo modo, cuando se usa un valor que contiene comillas dobles, envuelva el valor con comillas simples.
Por ejemplo:
...text... {{ functionName "one 'quoted' word" }} ...text...
...text... {{ functionName 'one "quoted" word' }} ...text...
Para aquellos casos en los que el valor contiene comillas simples y dobles, necesitará escape, utilizando el símbolo especial «\
».
Al usar comillas dobles alrededor de un valor, use «\"
» para incluir un símbolo de comilla doble dentro del valor:
... {{ "quotes' \"escaping\" example" }} ...
y de forma similar, al usar comillas simples, use «\'
» para incluir una sola comilla dentro del valor:
... {{ 'quotes\' "escaping" example' }} ...
Ambos se muestran como:
... quotes' "escaping" example ...
Tenga en cuenta que, para la coherencia, las secuencias «\'
» y «\"
» siempre se representan en «'
» y «"
», incluso cuando no es necesario el escape.
Por ejemplo:
... {{ 'no need to \"escape" ' }} ...
es equivalente a:
... {{ 'no need to "escape" ' }} ...
y ambos se muestran como:
... no need to "escape" ...
En caso de que tenga que representar una barra diagonal inversa delante de una comilla, ya que «\
» es un carácter especial, tendrá que escapar también y usar las secuencias especiales «\\\'
» y «\\\"
».
Por ejemplo:
{{ 'two special chars \\\' here' }}
se muestra como:
two special chars \' here
De forma similar a las comillas simples y dobles, el símbolo «\
» no siempre necesita ser escapado. Sin embargo, para mantener la coherencia, se puede escapar incluso cuando no es necesario.
Por ejemplo:
... {{ 'c:\\documents\\ai' }} ...
es equivalente a:
... {{ 'c:\documents\ai' }} ...
y ambos se representan en:
... c:\documents\ai ...
Por último, las barras diagonales inversas solo tienen un significado especial cuando se usan delante de «'
», «"
» y «\
».
En todos los demás casos, el carácter de barra diagonal inversa no tiene ningún impacto y se representa tal como está. Por ejemplo:
{{ "nothing special about these sequences: \0 \n \t \r \foo" }}
se representa en:
nothing special about these sequences: \0 \n \t \r \foo
Pasos siguientes
El kernel semántico admite otros formatos de plantilla populares además de su propio formato integrado. En las secciones siguientes veremos dos formatos adicionales, plantillas de Handlebars y Liquid.