当前位置:首页|资讯|编程|ChatGPT

Semantic Kernel 知多少 | 开启面向AI编程新篇章

作者:圣杰知多少发布时间:2023-04-07

引言

在ChatGPT 火热的当下, 即使没有上手亲自体验,想必也对ChatGPT的强大略有耳闻。当一些人在对ChatGPT犹犹豫豫之时,一些敏锐的企业主和开发者们已经急不可耐的开展基于ChatGPT模型AI应用的落地探索。 

因此,可以明确预见的是,「AI 能力的集成将会是很多应用都将面临的第一事项」,而拥有相关性技能的人才屈指可数。而这,正是机会所在,而机会是留给有准备之人,因此,有幸看到本文的开发者们,开始考虑「面向AI编程」吧。 

即使当下的公司没有相关的机会,也可以着手一些相关的知识储备,比如学习如何写得一手好的Prompt,了解一下目前主流的面向AI编程的开发框架,比如Python技术栈的LangChain,.NET技术栈的Semantic Kernal。 

而本文就来简单梳理什么是Semantic Kernal,可以基于Semantic Kernal 做什么?

Semantic Kernal 简介



「Semantic Kernel (SK) is a lightweight SDK that lets you easily mix conventional programming languages with the latest in Large Language Model (LLM) AI "prompts" with templating, chaining, and planning capabilities out-of-the-box.」

Semantic Kernel (SK) 是一个轻量级的 SDK,它允许你轻松地将传统编程语言与最新的大型语言模型 (LLM) AI "提示"相结合,其提供开箱即用的模板、链接和规划功能。

简而言之,就是基于SK提供的能力,可以基于“传统的编程语言”进行面向LLM(大语言模型)AI编程。这里的LLM目前就是OpenAI,这里的传统编程语言,可以是C#,Python亦或TypeScript、Java等,但SK是微软开源,因此目前C#在第一支持系列。换句话说,C# 开发者已可以基于SK 进行面向OpenAI编程。

大型语言模型 (LLM) AI 是一个术语,指的是可以从大量数据生成自然语言文本的 AI 模型。大型语言模型使用深度神经网络(如转换器)从数十亿或数万亿个单词中学习,并生成有关任何主题或领域的文本。大型语言模型还可以执行各种自然语言任务,例如分类、汇总、翻译、生成和对话。大型语言模型的一些例子是GPT-3,BERT,XLNet和EleutherAI。

那SK提供了怎样的能力呢?SK 旨在支持和封装来自最新 AI 研究的多种能力,以便开发人员可以为他们的应用程序注入复杂的AI技能,如提示链、递归推理、总结、zero/few-shot(零样本和少量样本)学习、上下文记忆、长期记忆、嵌入、语义索引、 规划,以及访问外部知识库和您自己的数据。

上手开发AI外教应用

但很大多数开发者肯定有这样一个疑问:我不懂算法,也能开发AI应用?是的,可以。OpenAI的能力已经通过高度抽象的接口开放,开箱即用。不再像之前一样,要进行复杂的训练、调参。「对于大多数的简单的业务场景,只要进行简单的Prompt设计,和少许样本的支撑,即可达到不错的效果。」 当然,对于复杂的场景,也可能需要通过大数据集进行自定义模型训练。空说无凭,准备了一个简单的AI应用示例:使用SK开发专属AI外教应用。场景很简单:设计一个AI外教7*24陪我练习英语口语。

需求分析

作为一名哑巴英语保持者,目前开口的难点无外乎:

  1. 词汇量不足

  2. 语法混淆

  3. 发音不准

  4. 口语表达能力弱

针对这些顽疾,我希望我的AI外教有这样的能力:

  • 由于我的词汇量不足,因此我的表达中会中英混合,当出现这种情况时,希望AI能告诉我正确的英文表达。

  • 由于我的语法经常会犯一些时态错误,当出现这种情况时,希望AI能进行语法纠正。

  • 由于我的词汇量不足,当我要求解释某些句子或单词时,希望AI能通过中文向我解释。

  • 由于有些单词不会发音,当我询问时,希望AI能以中文的形式告诉我发音技巧。

效果预览

那这样的AI应用的开发,看似复杂,但在SK的加持下,20行代码就可以轻松搞定。先来给大家看看演示效果:

演示效果

弱弱的问一句,这样的AI外教,满足你的需要吗?如需体验,评论留言。


上代码

  1. 简单起见创建控制台应用程序:dotnet new console -n MyAITeacher.Demo

  2. 添加Microsoft.SemanticKernelNuget 包

  3. 创建Skills->Learning->LearningEnglishSkill目录

  4. LearningEnglishSkill目录下添加config.jsonskprompt.txt文件

    1. config.json:用来配置模型参数,可保持为空:{},使用默认参数即可

    2. skprompt.txt: 用来定义设计的prompt

  5. skprompt.txt中设计满足需求的Prompt:

6. 修改Program.s如下:


最后

通过简单的Prompt的设计即可开发不错的AI设计,你心动了吗?心动不如行动,以下的链接必对你有所帮助:

  1. https://learningprompt.wiki/

  2. https://learn.microsoft.com/en-us/semantic-kernel/whatissk



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1