当前位置:首页 > AI > 正文内容

Semantic Kernel入门系列:使用YAML界说prompts functions

邻居的猫1个月前 (12-09)AI216

导言

在上一章节咱们了解了prompts functions(提示函数)的创立,咱们了解了PromptTemplateConfig中各个特点的简略运用。Semantic Kernel答应咱们使用多种办法去创立prompts包含native functions,prompts functions或许也叫Semantic functions,和Yaml 文件等。

本章的咱们将学习使用Yaml的格局来界说prompts functionsYAML 是一种结构化数据格局,经过运用它,咱们能够将提示的不同部分会集在一个当地,更好地安排和办理代码。这种办法能够进步代码的可读性和保护性,使得对提示模板的修正和更新变得愈加简略和高效。

实战

仍是跟之前的章节相同,咱们经过OneApi+星火讯飞v3.5进行咱们的Semantic Kernel的学习,详细装备能够翻翻我前几章内容。

创立项目

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.Yaml -Version 1.13.0

创立 Yaml 文件

创立文件

image

接下来 鼠标点击joke.yaml文件右键 点击特点,设置文件输出目录

image

Yaml 文件编写

咱们将编写一个简略的提示函数,意图是生成笑话。
yaml文件的内容其实便是咱们上一篇解说的PromptTemplateConfig函数的 yaml 的表达形式。找到咱们上一章节的PromptTemplateConfig的创立加深了解

    var kernelFunctions = kernel.CreateFunctionFromPrompt(new PromptTemplateConfig()
    {
        Name = "intent",
        Description = "use assistant to understand user input intent.",
        TemplateFormat = PromptTemplateConfig.SemanticKernelTemplateFormat,//此处能够省掉默许便是"semantic-kernel"
        Template = "What is the intent of this request? {{$request}}",
        InputVariables = [new() { Name = "request", Description = "The user's request.", IsRequired = true }],
        ExecutionSettings = new Dictionary<string, PromptExecutionSettings>() {
               {
                      OpenAIPromptExecutionSettings.DefaultServiceId ,//"default"
                        new OpenAIPromptExecutionSettings()
                        {
                            MaxTokens = 1024,
                            Temperature = 0
                        }
                    },
        }
    });

那开端编写咱们的 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

经过PromptTemplateConfig目标来了解就能够事半功倍了,写 yaml 彻底没压力,里边的每一个特点细节在上一章节都有介绍,不了解的能够去上一章阅览一下。

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");
var promptYaml = await File.ReadAllTextAsync(yamlDirectory);
KernelFunction jokeFunc = kernel.CreateFunctionFromPromptYaml(promptYaml);

KernelArguments kernelArgs = new KernelArguments()
{
    {"topic","apple"},
    {"length","5"},

};
// 用内核调用函数并供给kernelArguments
FunctionResult results = await jokeFunc.InvokeAsync(kernel, kernelArgs);

Console.WriteLine(results.ToString());

输出

image

功德圆满!

最终

本章简略的了解了一下用Yaml文件来创立prompts functions,用 YAML提示不只简化了开发进程,还进步了使用程序的可保护性,为今后界说愈加杂乱的prompts内嵌函数,工作流等又进了一步 😃。

参考文献

yaml-prompts-with-semantic-kernel

本文源代码

😄欢迎重视笔者大众号一同学习沟通,获取更多有用的常识~
image

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=395

标签: dotNetAI
分享给朋友:

“Semantic Kernel入门系列:使用YAML界说prompts functions” 的相关文章

手机ai,技术创新与隐私保护的平衡之道

手机ai,技术创新与隐私保护的平衡之道

1. 手机AI的定义与功能: 定义:AI手机是在智能手机基础上,通过整合人工智能技术,赋予手机更为强大和智能化的能力的设备。 功能:包括智能助手唤醒、语音输入、语音输出、语义理解、语义生成、AI消除、通话摘要、AI助手、AI搜索、AI翻译、AI图片生成等。2. 主要品牌与评测: 品...

机器学习包括什么,机器学习概述

机器学习包括什么,机器学习概述

机器学习是人工智能的一个分支,它使计算机系统能够从数据中学习并做出决策,而不需要显式地进行编程。机器学习包括以下几个主要方面:1. 监督学习(Supervised Learning):在这种学习中,算法从标记的训练数据中学习,以便对未标记的数据进行预测。监督学习分为两类:回归和分类。回归任务是预测连...

机器学习之父,机器学习之父——艾伦·图灵的传奇人生与贡献

机器学习之父,机器学习之父——艾伦·图灵的传奇人生与贡献

“机器学习之父”这一称号通常指的是杰弗里·辛顿(Geoffrey Hinton),他是机器学习和人工智能领域的先驱之一。杰弗里·辛顿是深度学习领域的开拓者,他的研究对现代人工智能的发展有着深远的影响。杰弗里·辛顿的主要贡献包括:1. 反向传播算法:这是训练神经网络的基本算法之一,使得神经网络可以有效...

ai写小说,技术革新与文学创作的未来

ai写小说,技术革新与文学创作的未来

当然可以!我可以帮助你创作一篇小说。请告诉我你想要的主题、风格、人物设定、情节概要等,这样我可以更好地为你服务。AI写作小说:技术革新与文学创作的未来一、AI写作小说的兴起背景在互联网时代,信息爆炸使得人们对于文学作品的阅读需求日益多样化。与此同时,传统文学创作方式面临着创作速度慢、题材单一等问题。...

机器学习 线性回归

机器学习 线性回归

线性回归是机器学习中最基础和常用的算法之一,它主要用来预测连续型变量。线性回归的目的是找到一个线性关系,使得模型能够最小化预测值与实际值之间的差异。线性回归可以分为两种类型:1. 简单线性回归:只有一个自变量和一个因变量,模型形式为 $ y = wx b $,其中 $ w $ 是权重,$ b $...

ai综合作业,教育变革的新趋势

ai综合作业,教育变革的新趋势

1. HIX Tutor: 这是一款值得信赖的AI问答系统,可以解决任何科目的作业。从基础算术到高级微积分,再到物理、化学、生物学等,HIX Tutor都能提供详细的解决方案和分步指南。你只需输入问题或上传文档、图片即可获得帮助。2. Asksia AI家庭作业助手: Asksia的AI...