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

Semantic Kernel进阶:创建和管理聊天(ChatCompletion)历史记录对象(四)

一、引言

在构建基于Semantic Kernel的AI应用时,聊天历史记录对象(Chat History)是维护对话上下文和连续性的关键。本文将一步步指导你如何创建和管理聊天历史记录对象,从而为你的AI代理提供一个强大的对话管理工具。
在这里插入图片描述

二、聊天历史记录对象的重要性

聊天历史记录对象用于存储聊天会话中的所有消息,包括来自用户、助理、工具或系统的消息。它不仅帮助AI模型理解对话的上下文,还能确保对话的连贯性,无论对话跨越多少轮次。

三、实战

3.1创建聊天历史记录对象

创建聊天历史记录对象是一个简单的过程。以下是在C#中创建聊天历史记录对象的步骤:

  1. 引入必要的命名空间
using Microsoft.SemanticKernel.ChatCompletion;
  1. 创建聊天历史记录对象
ChatHistory history = new ChatHistory();
  1. 添加消息到聊天历史记录
history.AddSystemMessage("你是一个乐于助人的技术助手");history.AddUserMessage("可以学到什么技术?");
history.AddAssistantMessage("关注我的博客,可以了解SemanticKernel、python、c#、docker等知识。您想要学点什么?");

在这个例子中,我们添加了系统消息、用户消息和助理消息,从而构建了一个简单的对话流程。

3.2 实战小例子

构建一个命令行聊天对话功能,具体代码如下,可以看到AI可以准确识别提到的每一项技术。
下面为完整代码,可以看前面几篇实战例子中的代码介绍。

        public static async Task RunAsync(){
#pragma warning disable SKEXP0001, SKEXP0010, SKEXP0050, SKEXP0020, ASP0000//如果使用依赖项注入,则可能需要将 AI 服务直接添加到服务提供商。//如果要创建 AI 服务的单一实例并在暂时性内核中重复使用它们,这非常有用。var builder = Host.CreateApplicationBuilder();// 创建语义内核Kernel kernel = Kernel.CreateBuilder().AddOpenAIChatCompletion(modelId: Global.Model,//你使用的模型endpoint: new Uri(Global.EndpointKey),//你使用的模型请求地址apiKey: Global.ApiKey)//你使用的key.Build();builder.Services.AddOpenAIChatCompletion(modelId: Global.Model,endpoint: new Uri(Global.EndpointKey),apiKey: Global.ApiKey);builder.Services.AddTransient((serviceProvider) => {return new Kernel(serviceProvider);});//将聊天完成服务添加到内核后,可以使用 get 服务方法检索它们。 下面是如何从内核检索聊天完成服务的示例。var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();Console.WriteLine("--------------问答--------------");string input;bool running = true;ChatHistory history = new ChatHistory();history.AddSystemMessage("你是一个乐于助人的技术助手");history.AddUserMessage("可以学到什么技术?");history.AddAssistantMessage("关注我的博客,可以了解SemanticKernel、python、c#、docker等知识。您想要学点什么?");while (running){Console.WriteLine("当前历史对话数:" + history.Count);Console.WriteLine("请输入您的问题(输入'exit'退出):");input = Console.ReadLine();if (input.ToLower() == "exit")running = false;else{//将用户的问题添加到历史记录中history.AddUserMessage(input);var response = await chatCompletionService.GetChatMessageContentAsync(history,kernel: kernel);Console.WriteLine("AI回复内容如下:");Console.WriteLine(response);//将AI回复添加到历史记录中history.Add(response);}Console.WriteLine("---------------下一次循环-------------");Console.WriteLine();}Console.WriteLine("程序退出。");}

如下图,AI可以根据历史记录,准确无误地找到上面提到的4种技术(SemanticKernel、python、c#、docker)。

当提问第5种时,也可正确识别历史记录中是没有第5中技术的,AI就根据自身学习的内容,推荐了JS
在这里插入图片描述

在这里插入图片描述

四、结论

通过使用聊天历史记录对象,Semantic Kernel为AI应用程序提供了一种强大的方式,以维护对话的上下文和连续性。这不仅提高了用户体验,还使得AI模型能够更自然地参与对话。


希望这篇文章能帮助你理解如何使用聊天历史记录功能来增强你的Semantic Kernel应用程序。如果你有任何问题或需要进一步的帮助,请随时提问。


http://www.mrgr.cn/news/60026.html

相关文章:

  • 【C++入门】1-(C++)计算机程序设计基础
  • Redis和MySQL如何保证数据一致性
  • 【Linux】线程池详解及其基本架构与单例模式实现
  • uniapp 实现本地二维码 二维码中间增加图片不显示(显示白块)
  • 标题点击可跳转网页
  • 01-二自由度机械臂—位置分析
  • Linux:认识文件
  • PCL 基于法向量夹角提出错误匹配点对
  • shodan4,挂黑网站查找,弱口令网站搜索
  • 图---java---黑马
  • 【H2O2|全栈】CSS案例章节(一)——圣杯布局和双飞翼布局
  • spring boot 整合Knife4j
  • 【最新】Kali Linux虚拟机安装与优化全攻略:必做设置让你事半功倍!
  • python print常见用法
  • 【鸿蒙开发 | 端云一体化 —— 开发app不要在为没有后端而烦恼了,端云一体化帮你完成一站式开发!】
  • 自动化结账测试:使用 Playwright确保电商支付流程的无缝体验【nodejs]
  • 【力扣】[Java版] 刷题笔记-101. 对称二叉树
  • MATLAB生物细胞瞬态滞后随机建模定量分析
  • 基础设施即代码(IaC):自动化基础设施管理的未来
  • ctfshow——web(持续更新)
  • 指数运算和幂运算
  • redis详细教程(3.hash和set类型)
  • 计算机网络——有连接传输层协议TCP
  • java平方根计算 C语言指针变量
  • UICC运营商特权与eSIM配置文件冲突问题
  • 系统滴答定时器