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

探究Semantic Plugins:敞开大模型的技术之门

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

前语

在之前的章节中咱们或多或少的现已触摸到了 Semantic KernelPlugins,本章咱们讲具体介绍怎么运用插件。

Semantic Kernel 的一大特点是具有强壮的插件,经过结合自界说/预界说的插件处理智能事务的问题。让传统的代码和智能插件一同作业灵敏地接入到运用场景简化传统运用向智能化转型的进程。

什么是Plugins

image

咱们知道LLMs(大模型)的练习数据和咱们运用之间有时间差,还有一个问题 LLMs 对自己企业化内的常识认知有缺点。OpenAI经过插件将ChatGPT和第三方的运用程序之间进行衔接,这些插件使 ChatGPT 能够与开发人员界说的 API 进行交互,然后增强 ChatGPT 的功用并答应有更广泛的操作,如:

  • 检索实时信息,例如,体育赛事比分、股票价格、最新新闻等。
  • 检索常识库信息, 例如,公司文档、个人笔记等。
  • 帮忙用户进行相关操作,例如,预订航班、公司内预订会议、订餐等。

Semantic Kernel 遵从 OpenAI 的插件的插件标准,能够很方便地接入和导出插件(如根据 Bing, Microsoft 365, OpenAI 的插件),这样能够让开发人员很简单地调用不同的插件服务。除了兼容 OpenAI 的插件外,Semantic Kernel 内也有归于自己插件界说的办法。不只能够在规矩模版格局上界说 Plugins, 更能够在函数内界说 Plugins.

从高层次上了解插件是一组能够公开给 AI 运用程序和服务的功用。

插件要提供在语义上描绘其行为办法的具体信息,从函数的输入、输出到副作用,一切都需求以 AI 能够了解的办法进行描绘.

界说插件

在 Semantic Kernel 中界说 Plugins 插件有两种办法,第一种是经过模版界说插件也叫Semantic Plugins(语义插件),第二种是经过函数创立插件也叫 Native Plugins(本地插件)

Sermantic Plugins

经过模版界说插件
咱们知道能够经过Prompts(提示词工程)能够和LLMs进行对话,咱们在处理一系列特定事务进程中,或许不止一个Prompts,或许是一组Prompts的调集。咱们能够把这些针对事务才能的Prompts调集放到Semantic Kernel的插件调集内。

模版格局

Semantic Kernel 模版界说格局有固定的格局,Prompts(提示词)都放在 skprompt.txt 文件内,而相关参数设置都放在 config.json 文件内,文件结构参阅如下图

     const string ConfigFile = "config.json";
     const string PromptFile = "skprompt.txt";

这些都是在 SK 写死的装备,所以插件内的命名一定要遵从这个规矩!

|-plugins
    |-Prompts
        |-Translator
            |-skprompt.txt
            |-config.json
    |-WriterPlugins
        |-Joke
            |-skprompt.txt
            |-config.json
        |-ShortPoem
            |-skprompt.txt
            |-config.json

skprompt.txt

咱们先来看看 skprompt.txt 的界说,这儿一般是放置和事务相关的 Prompt,能够支撑多个参数,每个参数都放置在 {{$参数名}} 内,如以下格局:

Translate {{$input}} into {{$language}}

在之前的章节咱们介绍过这是SKTemplateFormat的默许格局"semantic-kernel"

config.json

这是装备相关的内容,随了设置和 LLMs 相关的参数外,你也能够设定输入的参数以及相关描绘

{
  "schema": 1,
  "description": "Translate sentenses into a language of your choice",
  "execution_settings": {
    "default": {
      "max_tokens": 2000,
      "temperature": 0.7,
      "top_p": 0.0,
      "presence_penalty": 0.0,
      "frequency_penalty": 0.0,
      "stop_sequences": ["[done]"]
    }
  },
  "input_variables": [
    {
      "name": "input",
      "description": "sentense to translate",
      "default": ""
    },
    {
      "name": "language",
      "description": "Language to translate to",
      "default": ""
    }
  ]
}

这其实便是对PromptTemplateConfig提示词模版装备类的 json 数据,最终在 SK 内会被反序列化到目标内。

   // Load prompt configuration. Note: the configuration is optional.
   var configPath = Path.Combine(functionDirectory, ConfigFile);
   var promptConfig = File.Exists(configPath) ?
                PromptTemplateConfig.FromJson(File.ReadAllText(configPath)) :
                new PromptTemplateConfig();

之前咱们对PromptTemplateConfig类进行过具体的解说,不熟悉的能够看看深化学习 Semantic Kernel:创立和装备 prompts functions。

从处理方案的视点看一下装备的目录图

image

注册 Semantic Plugins

要从 Semantic Kernel 中要完成Semantic Plugins模板化插件的注册,需求KernelExtensions类中的CreatePluginFromPromptDirectory扩展办法。

再开端之前在咱们代码的处理方案Plugins文件夹下对每一个skprompt.txtconfig.json进行生成设置

image

中心代码

var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(config.ModelId, endpoint: config.Endpoint, apiKey: config.ApiKey)
    .Build();
//注册插件
string folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");
kernel.ImportPluginFromPromptDirectory(folder);

string[] pluginNames = ["Prompts", "WriterPlugins"];

foreach (var pluginName in pluginNames)
{
    kernel.ImportPluginFromPromptDirectory(Path.Combine(folder, pluginName));
}

//测验从插件取得funciton
var jokeKernelFunction = kernel.Plugins.GetFunction("Prompts", "Translator");
Console.WriteLine("System: 请输入要翻译的内容");
var userResuest = Console.ReadLine();
Console.WriteLine("System: 请输入要翻译的言语语种");
var language = Console.ReadLine();

var results = await jokeKernelFunction.InvokeAsync(kernel, new KernelArguments()
{
  {"input", userResuest},
  {"language", language}
});

Console.WriteLine($"Assistant: {results.ToString()}");

插件称号约好

ImportPluginFromPromptDirectory这个办法在注册插件进程中假如没有指定插件姓名会默许用文件夹称号

   pluginName ??= new DirectoryInfo(pluginDirectory).Name;

输出

System: 请输入要翻译的内容
User: 那么近那么美周末去河北
System: 请输入要翻译的言语语种
User: 英文
Assistant: So close, so beautiful, go to Hebei for the weekend.

最终

本章咱们具体介绍了怎么运用 Semantic Kernel 的插件功用,包含插件的概念、界说插件的两种办法(Semantic Plugins 和 Native Plugins)、以及怎么注册和调用 Semantic Plugins。经过插件,咱们能够扩展 ChatGPT 的功用,使其能够与第三方运用程序进行衔接,完成更广泛的操作和服务。

经过注册插件并调用相应函数,咱们能够完成比如翻译、笑话生成等功用。鄙人一篇中,咱们将重视 Native Plugins 原生函数插件的介绍。

参阅文献

  • 敞开大模型的技术之门 - Plugins
  • Understanding AI plugins in Semantic Kernel

示例代码

本文源代码

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

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

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

标签: dotNetAI
分享给朋友:

“探究Semantic Plugins:敞开大模型的技术之门” 的相关文章

肉色成人综合ai,技术革新与伦理挑战

肉色成人综合AI:技术革新与伦理挑战一、肉色成人综合AI技术原理肉色成人综合AI是一种结合了计算机视觉、深度学习、图像处理等技术的人工智能系统。其核心原理是通过深度学习算法,对大量真实人体图像进行训练,使AI能够生成逼真的肉色图像。具体来说,肉色成人综合AI主要包括以下几个步骤: 数据采集:收集大...

ai写作生成器,革新写作方式,助力内容创作

ai写作生成器,革新写作方式,助力内容创作

AI写作生成器是一种基于人工智能技术的工具,它可以帮助用户快速生成文本内容。这种工具通常使用自然语言处理(NLP)和机器学习算法来分析用户输入的关键词或句子,然后根据这些信息生成相应的文本。AI写作生成器可以用于多种场景,如文章写作、广告文案、社交媒体内容等。它们可以帮助用户节省时间,提高写作效率,...

松鼠ai1对1

松鼠ai1对1

松鼠AI 1对1是一款利用人工智能技术提供个性化教育服务的平台。以下是关于松鼠AI 1对1的一些详细信息: 公司背景松鼠AI 1对1是由上海松鼠云上人工智能技术有限公司开发的,该公司是国内第一家将人工智能自适应学习技术应用在K12教育领域的人工智能独角兽公司。松鼠AI的核心科学家包括机器学习“教父”...

3080机器学习,深度学习领域的强大之选

3080机器学习,深度学习领域的强大之选

NVIDIA GeForce RTX 3080 显卡在机器学习领域表现非常出色,以下是几个关键点:1. 性能优势: 深度学习训练:RTX 3080 显卡通过其Tensor核心,能够显著加速AI模型的训练速度,特别是在深度学习训练和推理任务中。 CUDA核心:RTX 3080 拥有更多CU...

机器学习算法竞赛实战,从入门到精通

机器学习算法竞赛实战,从入门到精通

关于机器学习算法竞赛实战的资源,我为你整理了一些有用的信息:1. 书籍推荐: 《机器学习算法竞赛实战》:这本书系统介绍了算法竞赛的基本理论知识,涵盖了用户画像、时间序列预测、计算广告、自然语言处理等多个领域的案例和上分思路。书中还结合了作者的实战经验和技巧,非常适合参加算法竞赛的读者。...

机器学习学习,从基础到实践

机器学习学习,从基础到实践

1. 基础知识: 数学:线性代数、概率论、统计学、微积分等。 编程:Python 是最常用的语言,因为它有丰富的机器学习库,如 scikitlearn、TensorFlow、PyTorch 等。 数据结构和算法:理解基本的算法和数据结构对于优化模型和解决复杂问题至关重要。2. 机器...