Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il linguaggio del modello di richiesta del kernel semantico è un modo semplice per definire e comporre funzioni di intelligenza artificiale usando testo normale. È possibile usarlo per creare prompt in linguaggio naturale, generare risposte, estrarre informazioni, richiamare altre richieste o eseguire qualsiasi altra attività che può essere espressa con testo.
Il linguaggio supporta tre funzionalità di base che consentono di includere 1) variabili, 2) chiamare funzioni esterne e 3) passare parametri alle funzioni.
Non è necessario scrivere codice o importare librerie esterne, basta usare le parentesi graffe {{...}} per incorporare espressioni nei prompt.
Il kernel semantico analizzerà il modello ed eseguirà la logica sottostante.
In questo modo, è possibile integrare facilmente l'intelligenza artificiale nelle app con il minimo sforzo e la massima flessibilità.
Suggerimento
Se sono necessarie altre funzionalità, sono supportate anche le seguenti funzioni: Handlebars e motori di template Liquid, che consentono di usare cicli, condizionali e altre funzionalità avanzate.
Variabili
Per includere un valore di variabile nel prompt, usare la sintassi {{$variableName}}.
Ad esempio, se si dispone di una variabile denominata name che contiene il nome dell'utente, è possibile scrivere:
Hello {{$name}}, welcome to Semantic Kernel!
Verrà generato un messaggio di saluto con il nome dell'utente.
Gli spazi vengono ignorati, quindi se lo si trova più leggibile, è anche possibile scrivere:
Hello {{ $name }}, welcome to Semantic Kernel!
Chiamate di funzione
Per chiamare una funzione esterna e incorporare il risultato nel prompt, usare la sintassi {{namespace.functionName}}.
Ad esempio, se si dispone di una funzione denominata weather.getForecast che restituisce le previsioni meteo per una determinata posizione, è possibile scrivere:
The weather today is {{weather.getForecast}}.
Verrà creata una frase con le previsioni meteo per la posizione predefinita archiviata nella variabile input.
La variabile input viene impostata automaticamente dal kernel quando si richiama una funzione.
Ad esempio, il codice precedente è equivalente a:
The weather today is {{weather.getForecast $input}}.
Parametri della funzione
Per chiamare una funzione esterna e passarvi un parametro, usare la sintassi {{namespace.functionName $varName}} e {{namespace.functionName "value"}}.
Ad esempio, se si vuole passare un input diverso alla funzione di previsione meteo, è possibile scrivere:
The weather today in {{$city}} is {{weather.getForecast $city}}.
The weather today in Schio is {{weather.getForecast "Schio"}}.
Verranno generate due frasi con le previsioni meteo per due posizioni diverse, usando la città archiviata nella variabile city e la "Schio" valore di posizione hardcoded nel modello di prompt.
Note sui caratteri speciali
I modelli di funzione semantica sono file di testo, quindi non è necessario eseguire l'escape di caratteri speciali come nuove righe e schede. Esistono tuttavia due casi che richiedono una sintassi speciale:
- Inclusione di parentesi graffe doppie nei modelli di prompt
- Passando valori hardcoded a funzioni che includono virgolette
Richieste che richiedono parentesi graffe doppie
Le doppie parentesi graffe hanno un'utilità speciale, poiché vengono usate per inserire variabili, valori e funzioni nei modelli.
Se è necessario includere le sequenze di {{ e }} nei prompt, che potrebbero attivare una logica di rendering speciale, la soluzione migliore consiste nell'usare valori stringa racchiusi tra virgolette, ad esempio {{ "{{" }} e {{ "}}" }}
Per esempio:
{{ "{{" }} and {{ "}}" }} are special SK sequences.
renderizzerà in:
{{ and }} are special SK sequences.
Valori che includono virgolette e caratteri di escape
I valori possono essere racchiusi utilizzando virgolette singole e virgolette doppie.
Per evitare la necessità di una sintassi speciale, quando si utilizza un valore contenente virgolette singole , è consigliabile eseguire il wrapping del valore con virgolette doppie . Analogamente, quando si utilizza un valore contenente virgolette doppie , racchiudere il valore con virgolette singole.
Per esempio:
...text... {{ functionName "one 'quoted' word" }} ...text...
...text... {{ functionName 'one "quoted" word' }} ...text...
Per i casi in cui il valore contiene sia virgolette singole che doppie, è necessario eseguire l'escape di , utilizzando il simbolo speciale «\».
Quando si usano virgolette doppie intorno a un valore, usare «\"» per includere un simbolo di virgolette doppie all'interno del valore:
... {{ "quotes' \"escaping\" example" }} ...
e analogamente, quando si usano virgolette singole, utilizzare «\'» per includere una virgoletta singola all'interno del valore:
... {{ 'quotes\' "escaping" example' }} ...
Entrambi sono resi in:
... quotes' "escaping" example ...
Si noti che per coerenza, le sequenze «\'» e «\"» si convertono sempre in «'» e «"», anche quando l'operazione di escape potrebbe non essere necessaria.
Per esempio:
... {{ 'no need to \"escape" ' }} ...
equivale a:
... {{ 'no need to "escape" ' }} ...
ed entrambi eseguono il rendering in:
... no need to "escape" ...
Nel caso in cui sia necessario eseguire il rendering di una barra rovesciata davanti a una virgoletta, poiché «\» è un carattere speciale, sarà necessario eseguirne l'escape e utilizzare anche le sequenze speciali «\\\'» e «\\\"».
Per esempio:
{{ 'two special chars \\\' here' }}
viene eseguito il rendering in:
two special chars \' here
Analogamente alle virgolette singole e doppie, il simbolo «\» non necessita sempre di escape. Tuttavia, per coerenza, si può utilizzare un carattere di escape anche quando non è richiesto.
Per esempio:
... {{ 'c:\\documents\\ai' }} ...
equivale a:
... {{ 'c:\documents\ai' }} ...
e vengono visualizzati entrambi in:
... c:\documents\ai ...
Infine, le barre rovesciate hanno un significato speciale solo quando vengono posizionate davanti a «'», «"» e «\».
In tutti gli altri casi, il carattere barra rovesciata non ha alcun impatto ed è rappresentato così com'è. Per esempio:
{{ "nothing special about these sequences: \0 \n \t \r \foo" }}
viene renderizzato in:
nothing special about these sequences: \0 \n \t \r \foo
Passaggi successivi
Il kernel semantico supporta altri formati di modello più diffusi oltre al proprio formato predefinito. Nelle sezioni successive verranno esaminati formati aggiuntivi, Handlebars e modelli Liquid.