Microsoft Semantic Kernel 实战:使用内核参数实现一个简单的对话机器人

Microsoft Semantic Kernel 实战:使用内核参数实现一个简单的对话机器人 当你不再害怕从头再来你就拥有了不可阻挡的力量。效果预览一、食用指南本文介绍了如何通过请求发送和更新参数来构建一个简单的聊天机器人。示例代码引入了Kernel Arguments对象在此演示中它的作用类似于一个键值存储库可以在运行内核时使用。在这个聊天场景中随着用户与机器人来回对话参数会逐渐填充对话历史。在每次重新运行内核时这些参数将连同内容一起提供给 AI。二、创建项目创建控制台项目dotnet new console三、安装依赖核心依赖dotnetaddpackage Microsoft.SemanticKernel日志依赖dotnetaddpackage Microsoft.Extensions.Logging dotnetaddpackage Microsoft.Extensions.Logging.Console四、模型配置这里使用硅基流动 GLM-5.1varmodelIdPro/zai-org/GLM-5.1;varendpointnewUri(https://api.siliconflow.cn/v1);varapiKeysk-xxx;varbuilderKernel.CreateBuilder().AddOpenAIChatCompletion(modelId:modelId,endpoint:endpoint,apiKey:apiKey,serviceId:SiliconFlow);五、构建语义内核Kernelkernelbuilder.Build();六、提示词设计conststringskPrompt 聊天机器人可以与你就任何话题进行对话。如果它没有答案它可以给出明确的指示或说“我不知道”。 {{$history}} User: {{$userInput}} ChatBot:;varexecutionSettingsnewOpenAIPromptExecutionSettings{MaxTokens2000,Temperature0.7,TopP0.5};七、注册语义函数varchatFunctionkernel.CreateFunctionFromPrompt(skPrompt,executionSettings);八、初始化参数varhistory;varargumentsnewKernelArguments(){[history]history};九、首次对话varuserInput今天晚餐吃什么有什么建议吗;arguments[userInput]userInput;varbot_answerawaitchatFunction.InvokeAsync(kernel,arguments);十、对话历史用输出更新历史记录并将其设置为下一个请求的新输入值history$\nUser:{userInput}\nAI:{bot_answer}\n;arguments[history]history;Console.WriteLine(history);十一、多轮对话Funcstring,TaskChatasync(stringinput){// Save new message in the argumentsarguments[userInput]input;// Process the user message and get an answervaranswerawaitchatFunction.InvokeAsync(kernel,arguments);// Append the new interaction to the chat historyvarresult$\nUser:{input}\nAI:{answer}\n;historyresult;arguments[history]history;// Show the responseConsole.WriteLine(result);};while(true){Console.Write(You: );stringinputConsole.ReadLine();if(input?.ToLower()quit)break;awaitChat(input);}十二、效果演示十三、查看对话历史Console.WriteLine(history);十四、完整代码usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Logging;usingMicrosoft.SemanticKernel;usingMicrosoft.SemanticKernel.Connectors.OpenAI;varmodelIdPro/zai-org/GLM-5.1;varendpointnewUri(https://api.siliconflow.cn/v1);varapiKeyEnvironment.GetEnvironmentVariable(SILICON_FLOW_KEY)??sk-xxx;varbuilderKernel.CreateBuilder().AddOpenAIChatCompletion(modelId:modelId,endpoint:endpoint,apiKey:apiKey,serviceId:SiliconFlow);builder.Services.AddLogging(servicesservices.AddConsole().SetMinimumLevel(LogLevel.Trace));Kernelkernelbuilder.Build();conststringskPrompt 聊天机器人可以与你就任何话题进行对话。如果它没有答案它可以给出明确的指示或说“我不知道”。 {{$history}} User: {{$userInput}} ChatBot:;varexecutionSettingsnewOpenAIPromptExecutionSettings{MaxTokens2000,Temperature0.7,TopP0.5};varchatFunctionkernel.CreateFunctionFromPrompt(skPrompt,executionSettings);varhistory;varargumentsnewKernelArguments(){[history]history};varuserInput今天晚餐吃什么有什么建议吗;arguments[userInput]userInput;varbot_answerawaitchatFunction.InvokeAsync(kernel,arguments);history$\nUser:{userInput}\nAI:{bot_answer}\n;arguments[history]history;Console.WriteLine(history);Funcstring,TaskChatasync(stringinput){// Save new message in the argumentsarguments[userInput]input;// Process the user message and get an answervaranswerawaitchatFunction.InvokeAsync(kernel,arguments);// Append the new interaction to the chat historyvarresult$\nUser:{input}\nAI:{answer}\n;historyresult;arguments[history]history;// Show the responseConsole.WriteLine(result);};while(true){Console.Write(You: );stringinputConsole.ReadLine();if(input?.ToLower()quit)break;awaitChat(input);}Console.WriteLine(history);十五、相关文章Microsoft Semantic Kernel 智能体框架入门指南Microsoft Semantic Kernel 实战提示词封装与使用十六、拓展阅读爱需要翻译——解读《爱的五种语言》《爱的五种语言》是美国婚姻辅导专家盖瑞·查普曼的经典之作。这本书的核心洞见朴素却深刻每个人都有自己最在意的“爱的语言”如果伴侣之间讲着不同的爱之方言就像一个人用中文倾诉深情另一个只懂法语再浓烈的爱意也可能被误解、被错过。查普曼将人们表达和接收爱的方式归纳为五种基本语言肯定的言辞——通过鼓励、赞美、感谢和温柔的话语来传递爱。对这类人而言“我爱你”三个字很重要但更重要的是具体而真诚的肯定“今天你为家里做的晚餐让我特别感动。”精心的时刻——把专注的注意力给到对方。不是两个人同在一个房间却各自看手机而是眼神相对、认真倾听、共同经历。高质量的陪伴胜过千言万语。接受礼物——礼物是爱的可视象征。对以礼物为主要爱语的人而言不在于贵重而在于“你懂我”和“你在乎我”。一朵路边的野花一本想到对方会喜欢的书都是心意的载体。服务的行动——用行动做实事来表达爱洗碗、修车、帮忙分担家务。对这类人来说言语可能显得轻飘踏实的付出才是爱的证明。身体的接触——拥抱、牵手、轻拍肩膀。身体的温暖与安全感是最直接的爱之语言尤其在痛苦或喜悦的时刻一个拥抱胜过千言万语。这本书最核心的主题是爱一个人要用对方能听懂的语言去表达而不是只说自己的母语。很多关系的冲突并非不爱而是爱的方式错位。一方拼命做服务行动另一方却渴望精心的时刻一方不断送出礼物另一方最需要的却是肯定的言辞。彼此都委屈却都不知道问题出在哪里。查普曼给出的解决方案是了解自己的主要爱语同时学习识别并主动使用伴侣的主要爱语。这需要观察、倾听和尝试。当我们愿意走出自己熟悉的方式去学习对方的语言时爱就从“我以为”走向了“你需要”。更深一层这本书也在提醒我们爱不是一种模糊的感觉而是一种可以学习的能力。真正的爱不是以自我为中心的付出而是以对方为中心的看见。当我们愿意说对方的爱语哪怕那不是自己最自然的方式爱便在这份调整和努力中变得具体、可感、有力。