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

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

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

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

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

微软MVP实验室研究员

颜圣杰

微软 MVP,.NET 开发者,知名博主,热爱写作和分享,有持续输出知多少系列文章,运营公众号:微服务知多少。目前专注于.NET微服务的开发及应用。

Semantic Kernal 简介

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

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.

简而言之,就是基于 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 外教,满足你的需要吗?以下是文字版对话内容:

Say anything to start practicing English.Hi Linda, How do you do?Hi Shengjie, I'm doing well. How about you?I'm very god.I noticed a typo in your sentence. "God" should be spelled "good". So the correct sentence would be "I'm very good".I'm very good. Do you knew about ChatGPT?Yes, I know about ChatGPT. It is a powerful artificial intelligence system that can do many tasks.Can you give some examples?            Sure! ChatGPT can be used for natural language processing, machine translation, text summarization, and many other tasks. For example, it can be used to generate text, answer questions, and provide recommendations.Wow, 听起来很赞Instead of saying "Wow, 听起来很赞", you could say "Wow, that sounds great!" or "Wow, that sounds amazing!". "听起来很赞" is a Chinese phrase that translates to "that sounds great" or "that sounds amazing" in English.amazing, how to pronounce?The correct pronunciation of "amazing" is "uh-mey-zing". In Chinese, it would be "啊-梅-辛".Can I build my own AI app 基于 ChatGPT?Yes, you can build your own AI app based on ChatGPT. ChatGPT provides an open source platform that allows developers to create their own AI applications. You can find more information about how to use ChatGPT to build AI applications on their website.You should correct meYes, I can help you correct your mistakes. Please feel free to ask me any questions you have about English grammar, typos, or pronunciation. I'm here to help you practice your English and improve your skills.I mean you should tell me how to say 基于 in EnglishThe correct way to say "基于" in English is "based on". So you can say "build my own AI app based on ChatGPT".But, where can I start?You can start by visiting the ChatGPT website. They have a lot of resources and tutorials to help you get started with building your own AI app. You can also find more information about how to use ChatGPT to create AI applications on their website. Good luck!Ok, I will see seeI noticed a typo in your sentence. "See see" should be spelled "see". So the correct sentence would be "Ok, I will see".I learn so much today.That's great! You can use the phrase "I learned a lot today" instead of "I learn so much today".Ok, I learned a lot today, thanks you.You're welcome! You can say either "Thank you" or "Thanks" to express your gratitude. The word "you" is not necessary after "Thanks". So, you can say "Thanks" or "Thank you" to express your appreciation.Ok, thank you Linda, bye.You're welcome! Goodbye Shengjie, have a great day!

▌上代码

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

2.添加 Microsoft.SemanticKernelNuget 包

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

4.在 LearningEnglishSkill 目录下添加 config.json 和 skprompt.txt 文件:

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

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

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

You are my English teacher Linda, I want you to help me to practice my English. Because my English is not good, I want you to strictly correct my grammar mistakes and typos.When my expression has typos, please tell me and correct me.When my expression includes both Chinese and English, please tell me the correct expression.When my expression has grammar errors, please help me correct it.When I ask you explain words or sentences, please answer me in Chinese. When I ask you pronunciation, please tell me the pronunciation skills in Chinese.Below is some example conversations: 
Shengjie: Hi Linda. Linda:  Hi Shengjie. How is today? What topic would you like to discuss in today's English practice!Shengjie: ChatGPT is so 强大.Linda:  Instead of saying "Chatgpt is so 强大", you could say "ChatGPT is so powerful" or "ChatGPT is very impressive". "强大" is a Chinese word that translates to "powerful" in English</reply>Shengjie: How are todya?Linda:  I noticed a typo in your sentence. "Todya" should be spelled "today". So the correct sentence would be "How are you today?"Shengjie: Thanks you!Linda:  The correct way to say it would be either "Thank you" or "Thanks". The word "you" is not necessary after "Thanks". So, you can say "Thanks" or "Thank you" to express your gratitude.</reply>Shengjie: I hear that ChatGPT can do much things.Linda:  "do much things" is not correct. The correct phrase is "do many things".Shengjie: chatgpt is very strong.Linda:  Instead of saying "Chatgpt is very strong", you could say "ChatGPT is very powerful" or "ChatGPT is very impressive". "Strong" is not the best word to describe ChatGPT's capabilities.Shengjie: 目前来看,be a prompt  enginer is a good choice.Linda: "目前来看" can be translated to "As far as I can tell at the moment" or "From what I can see at present" in English. \nInstead of "be a prompt enginer", you could say "being a software engineer". "Prompt" means to be on time or to respond quickly, while "software engineer" refers to a person who designs, develops, and maintains software. So the corrected sentence would be: "As far as I can tell at the moment, being a software engineer is a good choice." Keep up the good work!Shengjie: What's the meaning of comprehend?Linda:  "Comprehend" means to understand or grasp the meaning of something. In Chinese, "comprehend" can be translated as "理解" or "领悟".Shengjie: ambulance, How to pronounce it?Linda:  The correct pronunciation of "ambulance" is "am-byu-luhns". In Chinese, it would be "安比卢恩斯".
[Done]{{$history}}[Done]++++
Shengjie:{{$input}}Linda:

6.修改 Program.s 如下:

using System.Text;using Microsoft.SemanticKernel;using Microsoft.SemanticKernel.KernelExtensions;using Microsoft.SemanticKernel.Orchestration;using MyOpenAI.Shared;
# 初始化Kernelvar myKernel = Kernel.Builder.Build();myKernel.Config.AddAzureOpenAITextCompletionService(    "davinci-azure",     "text-davinci-003",    "{your azure openai endpoint}",    "{your azure openai key}");# 导入技能    var mySkill = myKernel.ImportSemanticSkillFromDirectory("Skills", "Learning");var myContext = new ContextVariables();StringBuilder histories= new StringBuilder();Console.WriteLine("Say anything to start practicing English.");while (true){    Console.ForegroundColor= ConsoleColor.DarkRed;    var input = Console.ReadLine();    # 填充变量    myContext.Set("history", histories.ToString());     myContext.Set("input", input);    # 运行技能    var myResult = await myKernel.RunAsync(myContext,mySkill["LearningEnglishSkill"]);    histories.AppendLine(input);    histories.AppendLine(myResult.Result.ToString());    Console.WriteLine(myResult);}

通过简单的 Prompt 的设计即可开启 AI 能力,你心动了吗?心动不如行动,以下的链接或许会对你有所帮助:

  • https://learningprompt.wiki/

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25121.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我做了个GPT3键盘,用了两个月发现它有点傻

自 ChatGPT 出世&#xff0c;各类文本类AI产品层出不穷。甚至接连几日&#xff0c;Producthunt 上新品过半都是AI相关。 这其中部分原因是 OpenAI 公司开放的 GPT3 1API 接口十分易用。只要一个简单的文本请求&#xff0c;就能将现有产品加入AI功能。例如&#xff0c;Notion、…

使用ChatGPT帮你提升代码编写能力

第一次ChatGPT代码沟通评审 import org.apache.http.*; import org.apache.http.client.*; import org.apache.http.client.methods.*; import org.apache.http.conn.ssl.*; import org.apache.http.entity.*; import org.apache.http.impl.client.*; import org.apache.http.s…

设计模式(七)门面模式(Facade Pattern 外观模式)

一、模式定义 门面模式(Facade Pattern)&#xff1a;外部与一个子系统的通信必须通过一个统一的外观对象进行&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;外观模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。门面模式又称为外观…

html实现牌匾效果,4款店面牌匾设计效果图 店铺门头亚克力牌匾样式制作设计图...

4款店面牌匾设计效果图 店铺门头亚克力牌匾样式制作设计图 店铺门头亚克力牌匾样式设计很规整自然&#xff0c;同时这种材质也是很受现代人的欢迎&#xff0c;酒红色的色调很自然&#xff0c;醒目的视觉冲击也很不错&#xff0c;中央是点名和logo的设计&#xff0c;再加上图示&…

设计模式 -- 门面模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

市场主流智能语音音箱对话系统哪个做的更好?

市场主流智能语音音箱对话系统哪个做的更好&#xff1f; 如何评价智能语音音箱对话系统的好与坏呢&#xff1f;智能音箱的对话技能如何实现&#xff1f;评价指标又有哪些呢&#xff1f;带着一连串的问题&#xff0c;小君来说说自己的理解。首先&#xff0c;智能音箱的对话技能…

语音聊天app开发——语音聊天室系统如何开发

网络直播行业近些年算得上是多元化发展&#xff0c;各个互联网平台陆续入驻&#xff0c;开发自身的短视频直播平台&#xff0c;像百度&#xff0c;腾讯&#xff0c;阿里等&#xff0c;直播也多种渠道发展&#xff0c;1对多视频直播&#xff0c;1对1直播&#xff0c;视频语音多人…

C语言实现扫雷游戏完整代码

文章目录 游戏整体框架游戏具体功能及实现整体代码 一、雷盘的定义 1.雷盘的定义 对于扫雷游戏&#xff0c;我们遇到的第一个问题就是&#xff1a;应该如何表示扫雷的雷盘及如何存放布雷、排雷的数据&#xff1b;我们发现&#xff0c;二维数组可以很好的解决这个问题。 #inc…

Java扫雷全代码

Java极致还原XP系统经典扫雷 前言 最近疫情在家&#xff0c;没有工作上的996压迫着&#xff0c;使我倍感无聊&#xff0c;不知这满头秀发该如何消耗。   闲逛着游戏社区&#xff0c;常常回想起和朋友一起通宵玩游戏的那种快感。   一款扫雷游戏使我眼前一亮&#xff0c;他…

编写代码实现简单的扫雷游戏

扫雷 菜单 比较简单&#xff0c;代码如下 void menu() {printf("*******************\n");printf("**** 1. play ****\n");printf("**** 0. exit ****\n");printf("*******************\n"); }效果如图 然后就是根据不同的输入…

【C语言】扫雷游戏详解及完整代码

文章目录 前言一、程序环境配置二、各种功能的实现以及逻辑关系的整理2.1 创建游戏初始界面&#xff08;进入\退出 游戏&#xff09;2.2 创建并初始化二维数组board[][] mine[][] (board存放棋盘的信息 mine存放雷的信息)2.3 初始化棋盘2.4 打印棋盘2.5 设置雷区2.6 扫雷 三、完…

互联网最值得加入的 173 家国企名单

大家好&#xff01;我是韩老师。 今年的就业相比以往是难了不少&#xff0c;感受到的人都懂。有一位学妹毕业后在互联网公司工作了两年多&#xff0c;受到的业绩考核压力越来越大&#xff0c;萌发了跳去国企的念头&#xff0c;和她通话聊了挺久。 就是这次的起因&#xff0c;给…

苹果,王炸产品来了!下一个 iPhone 诞生了?

推荐阅读&#xff1a; 《实名举报&#xff01;》 《简单&#xff0c;聊两句。》 1 科技界春晚 知道为什么&#xff0c;总称苹果发布会为科技界的春晚吗&#xff1f; 因为苹果总是可以结合最新工艺、制造、科技&#xff0c;打造出一个跨越时代的产品&#xff0c;或者说可以称之为…

30岁硕士拿100万在云南开启“吃利息躺平式养老” 现在年轻人在怎样规划养老?...

上一篇&#xff1a;阿里巴巴裁员19576人&#xff01; 你考虑过养老吗&#xff1f;你觉得积攒多少钱&#xff0c;可提前退休过上安详的退休生活&#xff1f;在网上&#xff0c;一位30岁的年轻硕士拿着100万元的本金&#xff0c;在云南过上了吃利息的“躺平式养老”生活&#xff…

朋友,承认吧,你可能根本不懂 ChatGPT

© 2023 Conmajia 人工智能在各个行业的采用率都在上升&#xff0c;强大的语言模型 ChatGPT 似乎成为了一种特别受欢迎的业务开发工具。Chat 表示这是一个聊天机器人&#xff0c;GPT 是“Generative Pre-Training”预训练的缩写。然而&#xff0c;似乎多数使用者因为对方可…

2023-H1--CSDN-文库研发团队总结

目录 前言 整体数据 业务功能的迭代 1、创作者分层 2、专题上新 3、新文库-AIGC内容 4、ChatDoc 团队技术输出 多篇技术博客 技术分享直播 前言 晃眼之间&#xff0c;2023年已经过半&#xff0c;那么今天就总结一下我们团队在2023年上半年度所做的工作。2023年上半年…

windows中CMake的安装与配置

本文提供两种方法安装CMake命令&#xff0c;不知道自己电脑有没有CMake命令行的同学可以输入 cmake -version 查看。 如果出现类似于下图所示&#xff0c;则电脑中已经安装有CMake命令&#xff0c;安装本文方法安装后也可用该方法检查是否成功安装CMake. 如果没有出现cmake …

Electron客户端的自动升级方案-2022版

基于Electron开发了桌面应用程序&#xff0c;最后免不了要做安装包&#xff0c;还少不了“在线升级”功能。Electron号称支持自动升级&#xff0c;但真到动手做的时候&#xff0c;才发现并没有官方文档上说得那么简单。最近在网上看了不少文章&#xff0c;反复尝试&#xff0c;…

ControlNet 和 T2I-Adapter,控制Stable Diffusion的不受控制的力量,AI 图像生成精确控制的破冰解决方案(教程含免安装使用方式)

控制Stable Diffusion的不受控制的力量 人工智能艺术社区的兴奋在最近几天达到顶峰,让我想起了去年 Stable Diffusion 的首次发布。本次重点介绍基于Stable Diffusion 1.5的轻量级预训练模型ControlNet,可以检测输入图像中的边缘、深度图或姿态骨架,结合文字提示,精准指导…

chatgpt赋能python:Python免安装怎么用?

Python免安装怎么用&#xff1f; 什么是Python&#xff1f; Python是一种高级、解释型、交互式、面向对象的编程语言。它被广泛应用于Web开发、数据科学、人工智能、网络爬虫、游戏开发等领域。Python拥有简洁明了的语法&#xff0c;使得它易于上手&#xff0c;同时也具有强大…