当前位置: 首页 > news >正文

个人网站建设考察报告房屋在线设计工具

个人网站建设考察报告,房屋在线设计工具,软件工程学科评估排名,即墨网站建设即墨智能助手服务 以下案例将讲解如何实现天气插件 当前文档对应src/assistant/Chat.SemanticServer项目 首先我们介绍一下Chat.SemanticServer的技术架构 SemanticKernel 是什么#xff1f; Semantic Kernel是一个SDK#xff0c;它将OpenAI、Azure OpenAI和Hugging Face等大…智能助手服务 以下案例将讲解如何实现天气插件 当前文档对应src/assistant/Chat.SemanticServer项目 首先我们介绍一下Chat.SemanticServer的技术架构 SemanticKernel 是什么 Semantic Kernel是一个SDK它将OpenAI、Azure OpenAI和Hugging Face等大型语言模型LLMs与传统的编程语言如C、Python和Java集成在一起。Semantic Kernel通过允许您定义可以在几行代码中链接在一起的插件来实现这一目标。 如何集成使用SemanticKernel 以下是添加IKernel,OpenAIOptions.Model和OpenAIOptions.Key在一开始使用了builder.Configuration.GetSection(OpenAI).GetOpenAIOptions();绑定。对应配置文件,OpenAIChatCompletion则是用于直接请求OpenAI。 OpenAI: {Key: ,Endpoint: ,Model: gpt-3.5-turbo}builder.Services.AddTransientIKernel((services) {var httpClientFactory services.GetRequiredServiceIHttpClientFactory();return Kernel.Builder.WithOpenAIChatCompletionService(OpenAIOptions.Model,OpenAIOptions.Key,httpClient: httpClientFactory.CreateClient(ChatGPT)).Build(); }).AddSingletonOpenAIChatCompletion((services) {var httpClientFactory services.GetRequiredServiceIHttpClientFactory();return new OpenAIChatCompletion(OpenAIOptions.Model, OpenAIOptions.Key,httpClient: httpClientFactory.CreateClient(ChatGPT)); });在项目中存在plugins文件夹这是提供的插件目录在BasePlugin目录下存在一个识别意图的插件。 config.json对应当前插件的一些参数配置 {schema: 1,type: completion,description: 获取用户的意图。,completion: {max_tokens: 500,temperature: 0.0,top_p: 0.0,presence_penalty: 0.0,frequency_penalty: 0.0},input: {parameters: [{name: input,description: 用户的请求。,defaultValue: },{name: history,description: 对话的历史。,defaultValue: },{name: options,description: 可供选择的选项。,defaultValue: }]} }skprompt.txt则是当前插件使用的prompt 加载插件 在这里我们注入了IKernel private readonly IKernel _kernel;private readonly IHttpClientFactory _httpClientFactory;private readonly RedisClient _redisClient;private readonly ILoggerIntelligentAssistantHandle _logger;private readonly OpenAIChatCompletion _chatCompletion;public IntelligentAssistantHandle(IKernel kernel, RedisClient redisClient,ILoggerIntelligentAssistantHandle logger, IHttpClientFactory httpClientFactory,OpenAIChatCompletion chatCompletion){_kernel kernel;_redisClient redisClient;_logger logger;_httpClientFactory httpClientFactory;_chatCompletion chatCompletion;_redisClient.Subscribe(nameof(IntelligentAssistantEto),((s, o) { HandleAsync(JsonSerializer.DeserializeIntelligentAssistantEto(o as string)); }));}然后准备加载插件。 //对话摘要 SK.Skills.Core 核心技能 _kernel.ImportSkill(new ConversationSummarySkill(_kernel), ConversationSummarySkill);// 插件根目录 var pluginsDirectory Path.Combine(Directory.GetCurrentDirectory(), plugins);// 这个是添加BasePlugin目录下面的所有插件会自动扫描 var intentPlugin _kernel.ImportSemanticSkillFromDirectory(pluginsDirectory, BasePlugin);// 这个是添加Travel目录下面的所有插件会自动扫描 var travelPlugin _kernel.ImportSemanticSkillFromDirectory(pluginsDirectory, Travel);// 这个是添加ChatPlugin目录下面的所有插件会自动扫描 var chatPlugin _kernel.ImportSemanticSkillFromDirectory(pluginsDirectory, ChatPlugin);// 这个是添加WeatherPlugin类插件并且给定插件命名WeatherPlugin var getWeather _kernel.ImportSkill(new WeatherPlugin(_httpClientFactory), WeatherPlugin); 使用插件首先我们创建了一个ContextVariablesinput则是GetIntent插件中的的{{$input}}options则对应{{$options}}getIntentVariables则将替换对应的prompt中响应的参数。 var getIntentVariables new ContextVariables{[input] value,[options] Weather,Attractions,Delicacy,Traffic //给GPT的意图通过Prompt限定选用这些里面的}; string intent (await _kernel.RunAsync(getIntentVariables, intentPlugin[GetIntent])).Result.Trim();plugins/BasePlugin/GetIntent/skprompt.txt内容 {{ConversationSummarySkill.SummarizeConversation $history}} 用户: {{$input}}--------------------------------------------- 提供用户的意图。其意图应为以下内容之一: {{$options}}意图: 意图识别完成以后当执行完成GetIntentintent相应会根据options中提供的参数返回与之匹配的参数 然后下面的代码将根据返回的意图进行实际上的操作或加载相应的插件比如当intent返回Weather则首先从chatPlugin中使用Weather插件并且传递当前用户输入内容在这里将提取用户需要获取天气的城市。 完成返回以后将在使用MathFunction _kernel.Skills.GetFunction(WeatherPlugin, GetWeather)的方式获取WeatherPlugin插件的GetWeather方法并且将得到的参数传递到_kernel.RunAsync执行的时候则会掉用GetWeather方法这个时候会由插件返回的json在组合成定义的模板消息进行返回就完成了调用。 ISKFunction MathFunction null;SKContext? result null;//获取意图后动态调用Funif (intent is Attractions or Delicacy or Traffic){MathFunction _kernel.Skills.GetFunction(Travel, intent);result await _kernel.RunAsync(value, MathFunction);}else if (intent is Weather){var newValue (await _kernel.RunAsync(new ContextVariables{[input] value}, chatPlugin[Weather])).Result;MathFunction _kernel.Skills.GetFunction(WeatherPlugin, GetWeather);result await _kernel.RunAsync(newValue, MathFunction);if (!result.Result.IsNullOrWhiteSpace()){if (result.Result.IsNullOrEmpty()){await SendMessage(获取天气失败了, item.RevertId, item.Id);return;}var weather JsonSerializer.DeserializeGetWeatherModule(result.Result);var live weather?.lives.FirstOrDefault();await SendMessage(WeatherTemplate.Replace({province}, live!.city).Replace({weather}, live?.weather).Replace({temperature_float}, live?.temperature_float).Replace({winddirection}, live?.winddirection).Replace({humidity}, live.humidity), item.RevertId, item.Id);return;}}else{var chatHistory _chatCompletion.CreateNewChat();chatHistory.AddUserMessage(value);var reply await _chatCompletion.GenerateMessageAsync(chatHistory);return;} Weather的prompt 我会给你一句话你需要找到需要获取天气的城市如果存在时间也提供给我 {{$input}}仅返回结果除此之外不要有多余内容按照如下格式 {city:,time: }WeatherPlugin获取天气插件 /// summary /// 获取天气插件 /// /summary public class WeatherPlugin {private static ListAdCode? _codes;static WeatherPlugin(){var path Path.Combine(AppContext.BaseDirectory, adcode.json);if (File.Exists(path)){var str File.ReadAllText(path);_codes JsonSerializer.DeserializeListAdCode(str);}_codes ?? new ListAdCode();}private readonly IHttpClientFactory _httpClientFactory;public WeatherPlugin(IHttpClientFactory httpClientFactory){_httpClientFactory httpClientFactory;}[SKFunction, Description(获取天气)][SKParameter(input, 入参)]public async Taskstring GetWeather(SKContext context){var weatherInput JsonSerializer.DeserializeWeatherInput(context.Result);var value _codes.FirstOrDefault(x x.name.StartsWith(weatherInput.city));if (value null){return 请先描述指定城市;}var http _httpClientFactory.CreateClient(nameof(WeatherPlugin));var result await http.GetAsync(https://restapi.amap.com/v3/weather/weatherInfo?key{高德天气api的key}extensionsbaseoutputJSONcity value.adcode);if (result.IsSuccessStatusCode){return await result.Content.ReadAsStringAsync();}return string.Empty;} }public class WeatherInput {public string city { get; set; }public string time { get; set; } }public class AdCode {public string name { get; set; }public string adcode { get; set; }public string citycode { get; set; } }效果图 以上代码可从仓库获取 项目开源地址 体验地址https://chat.tokengo.top/ (可以使用Gitee快捷登录) Github https://github.com/239573049/chat Gitee https://gitee.com/hejiale010426/chat
http://www.yutouwan.com/news/194029/

相关文章:

  • 网站seo优化是什么意思沈阳网站建设本地化技术服务
  • 此网站可能有不提供花架子网站 我
  • 做网站需注重的几点wordpress 更多文章
  • 济南网站开发企业济南网站建设免费
  • 微信公众号php网站开发长春网站建设公司十佳
  • 网站源码哪个好电子商务网站建设过程
  • 坪地网站建设价位南宁网站建设公司业绩
  • 南昌网站开发公司wordpress 企业插件
  • 用php做京东网站页面西安的网站建设公司
  • 家庭网站建设wordpress媒体库 不显示图片
  • 有哪些做西点及烘焙的网站开店做网站有什么好处
  • 怎么做才能发布网站游戏工作室多ip搭建
  • 平顶山营销型网站建设系统开发环境有哪些
  • 用织梦怎么修改网站首页商品顺序折叠wordpress
  • asp网站后台验证码错误推百拉
  • 找网站公司企业备案怎么找专业的营销团队
  • 杭州做微信网站软件公司郑州网站推广怎么做
  • 全屋设计安徽百度关键词优化
  • 手机p2p网站建设移动互联网开发课程设计选题
  • 企业营销型网站费用网站建设服务费一年多少钱
  • 网站开发技术入股协议网络培训机构排名
  • 东莞网站建设的公司威联通怎么建设网站
  • 虚拟电脑可以做网站吗上海公司推荐
  • dw如何在网站做弹窗济南网站网站建设
  • 网站打不开404网站宝 西部数码网站管理助手
  • 深圳网站建设啊在手机上创建网站吗
  • 权重域名做网站有用么郑州一核酸点推vip服务 年费320元
  • destoon 网站搬迁黑白灰网站
  • jsp ajax网站开发典型实例pdf汕头市道路建设网站
  • 深圳门户网站建设方案海口双语网站建设