首先,创建一个webapi项目。当然,此处也可以创建其他任意类型的项目,只是个人喜欢用webapi来做实践,比较方便。
接着,通过nuget安装SK框架nuget包: Microsoft.SemanticKernel
由于截止到目前(2023年5月28日),该框架包还是预览版,所以需要勾选预览版选项,才能搜索的到。
再然后,创建连接远程机器人模型的配置文件,例如文件名称就叫 gpt.json。该配置文件可自定义,也可以写到默认的appsettings.json里面都可以。
在配置文件里面,需要配置自己的服务类型。例如走的是azure还是openai,以及模型类型,例如gpt-3.5-turbo模型,还有自己的key,和组织id等信息。
接着在主目录下,新建三级目录,包括Skills、二级目录自定义名称例如DM、以及三级目录名称例如Test。一级目录Skills是默认写法,当然也可以用其他命名,为了统一建议写成Skills。这里面要存放我们的prompt文件,用来给机器人做限定使用。
在最后一级目录下,新建一个config.json文件。该文件用来配置机器人的基础设置,这部分应该大家比较熟悉了,就不详细介绍了。默认情况下,可以使用默认空的配置即可,例如{} ;如果需要自定义配置,就可以使用以下配置项进行优化或调整。
在config同级别路径下,新增一个skprompt文本文件,内容是给机器人做个设定,也就是传说中的prompt(将来也许会有Prompt工程师也说不定)。例如我设定机器人叫叼毛,Wesky是他的主人等关键信息。
接着需要定制一个类,包括基本配置属性,以及配置加载方法等。
编写从文件里面加载配置文件内容验证的方法,如果文件不存在或者加载失败,就直接抛出异常。
新增一个拓展类,用来根据配置的服务,选择进入不同的服务商。也可以再根据配置的模型不同,进入不同的服务调用入口,此处为了简单,就先写死了,并提供了一个走azure openai的通道,供大家备用。
接下来是如何使用。此处我新建一个api控制器,用来做测试使用。然后新增一个初始化的webapi接口,用来配置加载配置文件和连接初始化等动作。
再新建一个webapi接口,提供可输入文本内容的参数,并获取远程模型返回的内容,用来测试。
最后,运行程序,默认打开swagger页面,先调用执行初始化接口(BuildChat)
初始化接口执行成功,再进行Test接口调用。例如询问机器人,你是哪个,机器人就可以根据prompt文件内容信息,进行自己设定身份,回复了他叫叼毛。
例如问,你的主人是谁?机器人也可以根据预设的prompt进行针对性回答。
最后,再来个常规的咨询,例如如何在.NET里面使用SK框架?机器人也可以正常回答出有关大概步骤。
以上就是该文章的全部内容。如需该文章配套源码,可在微公众号【Dotnet Dancer】后台回复【SKSK】即可获取。