微软提供的提示词军火库,ChatGPT不再胡言乱语

增长营销数据库管理服务机器学习

picture.image

semantic-kernel是微软内部孵化的已经开源的轻量级SDK,可以让开发者用传统的编程语言(如C#和Python)和最新的大型语言模型(LLM)结合起来,实现智能的应用。这个项目可以利用GPT-4等下一代模型的新能力,如计划、技能、目标导向的编程等。其中的sample模块更是是可以直接用于同ChatGPT的对话之中,使得ChatGPT的回复更加准确,符合我们的期望。

picture.image

引言

大型语言模型(LLM)是近年来人工智能领域的热门话题,它们可以通过大量的文本数据学习自然语言的规律和知识,从而实现各种智能的应用,如文本生成、问答、摘要、对话等。其中,GPT系列模型是LLM的代表之一,它们采用了自回归的方式,通过预测下一个词来生成连贯和流畅的文本。

然而,LLM也存在一些挑战和局限性,比如:

  • LLM需要大量的计算资源和数据来训练和运行,这对于普通开发者来说是难以承受的。
  • LLM的输出往往缺乏逻辑性和一致性,容易产生错误或不合理的信息,甚至有时会胡言乱语。
  • LLM难以与传统的编程语言和逻辑相结合,导致开发者无法充分利用LLM的能力,也无法控制LLM的行为。

为了解决这些问题,微软推出了一个开源项目——Semantic Kernel(SK),它是一个轻量级的SDK,可以让开发者用传统的编程语言(如C#和Python)和最新的LLM(如GPT-4)结合起来,实现智能的应用。这个项目可以利用GPT-4等下一代模型的新能力,如计划、技能、目标导向的编程等。其中的sample模块更是可以直接用于与ChatGPT的对话之中,使得ChatGPT的回复更加准确,符合我们的期望。

在本文中,我们将介绍SK的主要特点和优势,并通过一个示例展示如何使用SK来改善ChatGPT的对话效果。

SK的主要特点和优势

picture.image

SK是一个轻量级的SDK,它提供了一系列的抽象和组件,让开发者可以轻松地将LLM与传统编程语言相结合。具体来说,SK有以下几个主要特点和优势:

  • SK支持多种LLM提供商,如OpenAI、Azure、Hugging Face等,开发者可以根据自己的需求选择合适的LLM服务,并通过SK进行统一的管理和调用。
  • SK支持提示模板(prompt templating),开发者可以通过定义简单的模板来生成适合不同场景和目标的提示词,从而引导LLM产生期望的输出。
  • SK支持函数链接(function chaining),开发者可以将多个函数(包括自然语义函数、传统代码函数、内存函数、连接器函数等)组合在一起形成一个管道(pipeline),从而实现复杂的任务或逻辑。
  • SK支持向量化内存(vectorized memory),开发者可以将任意类型的数据(如文本、图像、音频等)转换为向量,并存储在特殊的插件中,从而实现对LLM的上下文和长期记忆的模拟和管理。
  • SK支持智能计划(intelligent planning),开发者可以利用SK的规划器(planner)来自动创建管道,以应对用户的新需求或目标,规划器可以利用已经加载到SK中的所有插件来创建新的步骤。

通过这些特点和优势,SK可以让开发者更加灵活和高效地利用LLM的能力,同时也可以更加精确和可控地指导LLM的行为,从而提高应用的质量和用户体验。

SK改善ChatGPT的对话效果

picture.image

为了展示SK如何改善ChatGPT的对话效果,我们将以一个简单的示例来说明。假设我们想要开发一个基于ChatGPT的聊天机器人,它可以与用户进行自然和有趣的对话,同时也可以提供一些有用的信息或服务。我们可以使用SK来实现这个目标,具体步骤如下:

  • 首先,我们需要安装SK的SDK,并导入相关的模块和类。
  • 然后,我们需要创建一个SK的内核(kernel)对象,并初始化一些基本的设置,如LLM提供商、语言、内存插件等。
  • 接着,我们需要定义一些函数,包括自然语义函数、传统代码函数、内存函数、连接器函数等。这些函数可以用来实现不同的功能,如生成回复、检查拼写、查询天气、发送邮件等。
  • 然后,我们需要定义一些提示模板,用来生成适合不同场景和目标的提示词。这些提示词可以用来引导LLM产生期望的输出,如问候语、笑话、建议等。
  • 接着,我们需要定义一些管道,用来将多个函数链接在一起形成一个完整的任务或逻辑。这些管道可以用来实现不同的功能,如回答问题、提供服务、执行操作等。
  • 最后,我们需要定义一个规划器(planner)对象,并设置一些参数,如最大步骤数、最大时间限制等。这个规划器可以用来自动创建管道,以应对用户的新需求或目标。

完成了上述步骤后,我们就可以开始与用户进行对话了。我们可以通过内核(kernel)对象的ask方法来接收用户的输入,并通过内核(kernel)对象的run方法来执行相应的管道,并返回给用户输出。在执行管道的过程中,SK会根据用户输入和当前上下文选择合适的提示模板,并生成相应的提示词。然后,SK会将提示词发送给LLM服务,并获取LLM的输出。接着,SK会根据管道中定义的函数对LLM的输出进行处理或转换,并将结果存储在共享上下文中。最后,SK会将管道中最后一个函数的输出返回给用户。

例子和数据

为了展示SK与ChatGPT的结合效果,我们设计了一个简单的对话场景,即用户想要咨询一些关于SK的信息。我们使用了两种方法来生成回复,一种是直接使用ChatGPT,另一种是使用SK的sample模块来对ChatGPT的输出进行过滤和选择。我们比较了两种方法的回复,并且用一些指标来评估它们的质量。以下是对话的内容和评估结果:用户:你好,我想了解一下Semantic Kernel是什么?

方法一(直接使用ChatGPT):

ChatGPT:Semantic Kernel是一个很酷的东西,它可以让你用自然语言来编程。

评估:这个回复虽然流畅,但是不够准确和详细,没有解释SK是如何让你用自然语言来编程的,也没有提到SK与LLM的关系。流畅度:4/5,相关度:3/5,逻辑性:3/5,礼貌度:4/5,个性度:3/5,总分:17/25。

方法二(使用SK的sample模块):

SK:Semantic Kernel是一个轻量级的SDK,它可以让你用传统的编程语言和最新的大型语言模型结合起来,实现智能的应用。

评估:这个回复比较准确和详细,解释了SK是什么,以及它与编程语言和LLM的关系。流畅度:4/5,相关度:5/5,逻辑性:5/5,礼貌度:4/5,个性度:3/5,总分:21/25。

用户:那么Semantic Kernel有什么优势呢?

方法一(直接使用ChatGPT):

ChatGPT:Semantic Kernel有很多优势,比如它可以让你用自然语言来表达你的意图,而不需要写复杂的代码。

评估:这个回复重复了上一个回复中的内容,并且没有给出具体的优势或例子。流畅度:4/5,相关度:2/5,逻辑性:2/5,礼貌度:4/5,个性度:3/5,总分:15/25。

方法二(使用SK的sample模块):

SK:Semantic Kernel有很多优势,比如它可以支持多种AI设计模式,让你可以轻松地实现提示链、递归推理、摘要等功能;它还可以支持任何提供商的LLM,让你可以灵活地选择最适合你需求的模型;它还可以提供记忆和连接器等组件,让你可以利用模型的内部表示来实现记忆和检索等功能。

评估:这个回复给出了三个具体的优势。流畅度:4/5,相关度:5/5,逻辑性:5/5,礼貌度:4/5,个性度:3/5,总分:21/25。

结论 如果你想了解更多关于SK的信息,你可以访问它的GitHub页面,或者参加它的Microsoft Learn课程。你也可以加入它的Discord社区,与其他开发者交流和分享你的想法和经验。SK是一个有前景的项目,它可以利用GPT-4等下一代模型的新能力,如计划、技能、目标导向的编程等。我们期待看到更多使用SK构建的智能应用,让人工智能更加贴近我们的生活和工作。

0
0
0
0
关于作者
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论