使用语义内核提示模板
语义内核提示模板语言是一种使用纯文本定义和撰写 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"}}.
运行提示模板
要运行您的提示,首先需要使用KernelFunction从提示中创建kernel.CreateFunctionFromPrompt对象。 然后,可以创建 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 驱动的功能。 借助对变量、函数调用和参数的支持,可以创建可重用和动态模板,而无需复杂的代码。 这是构建更智能、更适应性更强的应用程序的简单而强大的方法。