我们提供安全,免费的手游软件下载!
在上一章节中,我们学习了如何创建提示函数(prompts functions),并了解了PromptTemplateConfig中各个属性的简单使用。Semantic Kernel允许我们以多种方式创建prompts,包括native functions、prompts functions(也称为Semantic functions)和YAML文件等。
本章将学习如何使用YAML格式定义prompts functions。YAML是一种结构化数据格式,通过使用它,我们可以将提示的不同部分集中在一个地方,更好地组织和管理代码。这种方法可以提高代码的可读性和维护性,使得对提示模板的修改和更新变得更加简单和高效。
与之前的章节一样,我们将通过OneApi+星火讯飞v3.5进行我们的Semantic Kernel学习。具体配置可以参考前几章的内容。
首先,在VS中创建控制台应用程序,右键管理用户机密,添加我们大模型的应用配置。
接下来,设置文件输出目录,右键点击joke.yaml文件,点击属性。
在NuGet控制台中执行以下命令:
PM> NuGet\Install-Package Microsoft.SemanticKernel -Version 1.13.0
PM> NuGet\Install-Package Microsoft.SemanticKernel.Yaml -Version 1.13.0
创建一个名为joke.yaml的文件。
我们将编写一个简单的提示函数,目的是生成笑话。YAML文件的内容其实就是我们上一篇讲解的PromptTemplateConfig函数的YAML表达形式。通过PromptTemplateConfig对象来理解就可以事半功倍了,写YAML完全没压力,里面的每一个属性细节在上一章节都有介绍,不熟悉的可以去上一章阅读一下。
name: GenerateJoke
template: |
Tell me a joke about {{$topic}} that is {{$length}} sentences long.
template_format: semantic-kernel
description: A function that generates a joke about a topic.
input_variables:
- name: topic
description: The topic of the joke.
is_required: true
- name: length
description: The number of sentences in the joke.
is_required: true
output_variable:
description: The generated joke.
execution_settings:
default:
temperature: 0.9
max_token: 1024
定义kernel对象:
var kernel = Kernel.CreateBuilder().AddOpenAIChatCompletion(modelId: config.ModelId, apiKey: config.ApiKey, httpClient: client).Build();
读取yaml文件地址:
var yamlDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins", "Yaml", "joke.yaml");
创建promptYaml:
var promptYaml = await File.ReadAllTextAsync(yamlDirectory);
创建KernelFunction:
KernelFunction jokeFunc = kernel.CreateFunctionFromPromptYaml(promptYaml);
用内核调用函数并提供kernelArguments:
FunctionResult results = await jokeFunc.InvokeAsync(kernel, kernelArgs);
输出:
大功告成!
本章简单的熟悉了一下用YAML文件来创建prompts functions,用YAML提示不仅简化了开发过程,还提高了应用程序的可维护性,为以后定义更加复杂的prompts内嵌函数、工作流等又进了一步 ?。
参考文献
yaml-prompts-with-semantic-kernel
本文源代码
?欢迎关注笔者公众号一起学习交流,获取更多有用的知识~
热门资讯