Semantic Kernel入门系列:使用Handlebars创立Prompts functions
导言
本章咱们将学习经过Handlebars Prompts Template
来创立Prompts functions
。
什么是Handlebars
?
Handlebars
是一个盛行的 JavaScript
模板引擎,它答应你经过在 HTML
中运用简略的占位符来创立动态的 HTML
。
它运用模板和输入目标来生成 HTML
或其他文本格局。Handlebars
模板看起来像惯例的文本,可是它带有嵌入式的 Handlebars
表达式 。
<p>{{firstname}} {{lastname}}</p>
有关Handlebars
语法更具体的介绍请参阅:
Handlebars 中文文档 | Handlebars 中文网
实战
创立项目
VS 创立控制台运用程序,右键办理用户秘要,增加咱们大模型的运用装备
{
"OneApiSpark": {
"Endpoint": "http://localhost:3000",
"ModelId": "SparkDesk-v3.5",
"ApiKey": "sk-LAYzQaWssCYYEVHP1d6a3fFa111745249e94F0364a0cF37c"
}
}
装置 Nuget 包
PM> NuGet\Install-Package Microsoft.SemanticKernel -Version 1.13.0
PM> NuGet\Install-Package Microsoft.SemanticKernel.PromptTemplates.Handlebars -Version 1.13.0
运用 HandleBars PromptsTemplates
var template =
"""
<message role="system">Instructions: What is the intent of this request?</message>
<message role="user">{{request}}</message>
""";
之前的文章介绍过创立Prompts functions
有两种模板的格局化引擎,第一种是默许的模板格局叫semantic-kernel
,第二种便是本章介绍的handlebars
创立提示函数
var kernelFunction = kernel.CreateFunctionFromPrompt(new PromptTemplateConfig()
{
Name = "getIntent",
Description = "Understand the user's input intent.",
TemplateFormat = HandlebarsPromptTemplateFactory.HandlebarsTemplateFormat,
Template = template,
InputVariables = [
new() { Name = "request", Description = "User's request.", IsRequired = true },
//new() { Name = "history", Description = "Historical message record.", IsRequired = true },
],
ExecutionSettings = new Dictionary<string, PromptExecutionSettings>() {
{
OpenAIPromptExecutionSettings.DefaultServiceId ,//"default"
new OpenAIPromptExecutionSettings()
{
MaxTokens = 2048,
Temperature = 0.6
}
},
}
}, promptTemplateFactory: new HandlebarsPromptTemplateFactory());
跟默许的比较有两个点需求留意
TemplateFormat
特点
TemplateFormat= HandlebarsPromptTemplateFactory.HandlebarsTemplateFormat,
CreateFunctionFromPrompt
办法的promptTemplateFactory
参数
promptTemplateFactory: new HandlebarsPromptTemplateFactory()
要用HandlebarsPromptTemplateFactory
工厂替换默许的格局化工厂
履行函数
string request = "I want to send an email to the marketing team celebrating their recent milestone.";
var result = await kernelFunction.InvokeAsync(kernel, new KernelArguments() { { "request", request } });
Console.WriteLine(result.ToString());
输出
The intent of this request is to send an email to the marketing team to celebrate their recent milestone.
最终
经过本章的学习,咱们把握了怎么使用 Handlebars Prompts Template
在 Semantic Kernel
C# 中创立和履行 Prompts functions
。Handlebars
供给了强壮的模板功用,使咱们能够更灵敏地生成动态文本输出,然后完成各种定制化的提示函数。经过结合 Handlebars
的模板引擎和 Semantic Kernel
的功用,咱们能够构建更智能和交互性强的运用程序,提高用户体会和功用性。
本文源代码