共用方式為


語意核心範本提示語法

語意核心提示範本語言是一種使用純文本定義和組合 AI 函式的簡單方式。 您可以使用它來建立自然語言提示、產生回應、擷取資訊、叫用其他提示,或執行任何其他可使用文字表示的工作。

語言支援三項基本功能,可讓您 1) 包含變數、2) 呼叫外部函式,以及 3) 將參數傳遞至函式。

您不需要撰寫任何程式代碼或匯入任何外部連結庫,只要使用大括號 {{...}},即可在提示中內嵌表達式。 語意核心會剖析您的範本,並執行其背後的邏輯。 如此一來,您可以輕鬆地將 AI 整合到您的應用程式中,以最少的努力和最大的彈性。

提示

如果您需要更多功能,我們也支援:HandlebarsLiquid 範本引擎,這可讓您使用迴圈、條件和其他進階功能。

變數

若要在提示中包含變數值,請使用 {{$variableName}} 語法。 例如,如果您有名為 name 的變數,而該變數會保存使用者的名稱,您可以撰寫:

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

這會產生具有用戶名稱的問候語。

會忽略空格,因此如果您發現它更容易閱讀,您也可以撰寫:

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

函數調用

若要呼叫外部函式並在提示中內嵌結果,請使用 {{namespace.functionName}} 語法。 例如,如果您有名為 weather.getForecast 的函式會傳回指定位置的天氣預報,您可以撰寫:

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

這會產生一個句子,其中包含儲存在 input 變數中之預設位置的天氣預報。 叫用函式時,核心會自動設定 input 變數。 例如,上述程式代碼相當於:

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

函式參數

若要呼叫外部函式並將參數傳遞給它,請使用 {{namespace.functionName $varName}}{{namespace.functionName "value"}} 語法。 例如,如果您想要將不同的輸入傳遞至氣象預報函式,您可以撰寫:

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

這將生成兩個有關不同地點天氣預報的句子,使用儲存在 city 變數中的城市和在提示範本中硬編碼的 "Schio" 地點值。

特殊字元的相關注意事項

語意函式範本是文字檔案,因此不需要跳脫特殊字元,例如換行和製表符。 不過,有兩種情況需要特殊語法:

  1. 在提示範本中包含雙大括弧
  2. 傳遞硬編碼值到函式,其中包含引號

提示需要雙大括弧

雙大括弧具有特殊的使用案例,可用來將變數、值和函式插入範本中。

如果您需要在提示中包含 {{}} 序列,這可能會觸發特殊的轉譯邏輯,最好的解決方案是使用以引號括住的字串值,例如 {{ "{{" }}{{ "}}" }}

例如:

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

將會轉譯為:

{{ and }} are special SK sequences.

包含引號和逸出的值

值可以使用 單引號 括住,使用 雙引號

若要避免特殊語法的需求,在使用包含單引號 的值時,建議將值包裝成 雙引號。 同樣地,當使用包含 雙引號的值時,請用 單引號將值括起來。

例如:

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

對於值同時包含單引號和雙引號的案例,您必須使用 轉譯,並運用特殊 «\» 符號。

在值周圍使用雙引號時,請使用 «\"»,在值中包含雙引號符號:

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

同樣地,使用單引號時,請使用 «\'» 在值中包含單引號:

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

兩者都會轉譯為:

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

請注意,為了一致性,序列 «\'» » «\"» 一律會轉譯為 «'»«"»,即使可能不需要逸出也一樣。

例如:

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

相當於:

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

兩者皆渲染為:

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

如果您可能需要在引號前面轉譯反斜杠,因為 «\» 是一個特殊的字元,所以您也需要逸出它,並使用特殊序列 «\\\'»«\\\"»

例如:

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

轉譯為:

two special chars \' here

與單引號和雙引號類似,符號 «\» 並不總是需要逸出。 不過,為了保持一致性,即使不需要,也可以跳脫它。

例如:

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

相當於:

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

並且兩者被翻譯為:

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

最後,只有在 «'»之前使用反斜杠具有特殊意義, «"»«\»

在其他所有情況下,反斜杠字元不會有任何影響,而且會轉譯為 。 例如:

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

轉譯為:

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

後續步驟

語意核心除了支援自己的內建格式之外,還支援其他熱門的範本格式。 在下一節中,我們將探討其他格式、HandlebarsLiquid 範本。