使用 Semantic Kernel 提示範本

已完成

語意核心提示範本語言是一種使用純文本定義和組合 AI 函式的簡單方式。 您可以使用它來建立自然語言提示、產生回應、擷取資訊、叫用其他提示,或執行任何其他可使用文字表示的工作。 提示範本相當重要,因為它們可讓您建立健全的可重複使用提示,以擴充應用程式的功能。

語言可讓您包含變數、呼叫外部函式,以及將參數傳遞至函式,全部都使用大括弧 {{...}} 在提示中內嵌運算式。 語意核心會剖析您的範本,並執行其背後的邏輯。 使用提示範本,您可以輕鬆地將 AI 整合到您的應用程式中,而不需要複雜的程式碼。

建立提示範本

若要在提示中使用變數,請使用 {{$variableName}} 語法。 會忽略空格,因此您也可以視需要使用 {{ $variableName }} 。 以下是使用 變數 city的提示範本範例:

I'm traveling to {{$city}}. What is the best way to get around and explore the city?

若要呼叫函式並使用提示中的結果,請使用 {{namespace.functionName}} 語法。 例如,如果您有函式 weather.getForecast,您可以撰寫:

The weather today is {{weather.getForecast}}

您也可以使用變數或硬式編碼值,將參數傳遞至函式。 例如,如果 weather.getForecast 採用城市名稱作為輸入,您可以使用下列範例:

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

執行提示範本

若要執行提示,您必須先使用 kernel.CreateFunctionFromPrompt從提示建立 KernelFunction 物件。 然後,您可以建立 KernelArguments 包含任何變數的物件,並使用 叫用函式 InvokeAsync。 您可以在核心本身或物件上KernelFunction呼叫 InvokeAsync 。 以下為範例:

string city = "Rome";
var prompt = "I'm visiting {{$city}}. What are some activities I should do today?";

var activitiesFunction = kernel.CreateFunctionFromPrompt(prompt);
var arguments = new KernelArguments { ["city"] = city };

// InvokeAsync on the KernelFunction object
var result = await activitiesFunction.InvokeAsync(kernel, arguments);
Console.WriteLine(result);

// InvokeAsync on the kernel object
result = await kernel.InvokeAsync(activitiesFunction, arguments);
Console.WriteLine(result);
city = "Rome"
prompt = "I'm visiting {{$city}}. What are some activities I should do today?"

activities_function = kernel.create_function_from_prompt(prompt)
arguments = {"city": city}

# Invoke on the KernelFunction object
result = await activities_function.invoke_async(kernel, arguments)
print(result)

# Invoke on the kernel object
result = await kernel.invoke_async(activities_function, arguments)
print(result)

語意核心提示範本語言可讓您輕鬆地使用自然語言將 AI 驅動功能新增至您的應用程式。 透過支援變數、函數調用和參數,您可以建立可重複使用且動態的範本,而不需要複雜的程序代碼。 這是一種簡單但功能強大的方式,可建置更聰明、更適應的應用程式。