我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

使用YAML文件创建提示函数

来源:网络 更新时间:2024-05-22 09:30:31

在上一章节中,我们学习了如何创建提示函数(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依赖

在NuGet控制台中执行以下命令:

PM> NuGet\Install-Package Microsoft.SemanticKernel -Version 1.13.0 PM> NuGet\Install-Package Microsoft.SemanticKernel.Yaml -Version 1.13.0

创建YAML文件

创建文件

创建一个名为joke.yaml的文件。

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

SK创建prompts functions

定义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

本文源代码

?欢迎关注笔者公众号一起学习交流,获取更多有用的知识~