使用内核参数(kernel arguments)创建基础聊天体验
在本示例中,我们将演示如何通过随请求发送参数且更新参数来构建一个简单的聊天机器人。
我们引入内核参数(Kernel Arguments)对象,在本演示中其功能类似于键值存储,可在运行内核时使用。在此聊天场景中,随着用户与机器人持续交互,参数将自动存储完整的对话历史。在每次新一轮的内核调用时,系统会自动向AI提供包含完整对话内容的参数。
让我们定义一个用于构建对话式聊天机器人的提示模板。
const string skPrompt = @"
聊天机器人可以就任何话题与您畅聊。
若没有答案,它能够提供明确指示或回答“我不知道”。
{{$history}}
用户:{{$userInput}}
聊天机器人:";
创建语义函数:
var executionSettings = new OllamaPromptExecutionSettings { Temperature = 0.7f, TopP = 0.5f };
var chatFunction = kernel.CreateFunctionFromPrompt(skPrompt, executionSettings);
初始化实参:
var history = string.Empty;
var arguments = new KernelArguments { ["history"] = history };
与聊天机器人对话
var userInput = "您好,我想让您给我推荐一些书籍。";
arguments["userInput"] = userInput;
var bot_answer = await chatFunction.InvokeAsync(kernel, arguments);
使用输出结果更新历史记录,并将其设为下一轮请求的新输入值。
var bot_answer = await chatFunction.InvokeAsync(kernel, arguments);
history += $"\n用户:{userInput}\n聊天机器人:{bot_answer}\n";
//更新历史对话
arguments["history"] = history;
当前,聊天记录如下:
用户:您好,我想让您给我推荐一些书籍。
聊天机器人:你好!很高兴能帮你推荐几本有趣的书籍。以下是各个类型和主题的一些建议:
1. **一般小说**:
- 《百年孤独》- 加布里埃尔·加斯顿·马尔克斯
- 《哈利波特与诅咒杯》系列 - J.K.罗琳
2. **科幻/奇幻类**:
- 《黑暗物质的秘密》- 菲利普·K·迪克
- 《权力的游戏》系列 - 戴尔·圣安妮丝 (乔治·R.R.马丁)
3. **历史**:
- 《美国非洲裔人的奴隶制与种族主义研究》- 大卫·斯坦伯格
- 《冷战:从克里姆林宫到白宫》系列 - 弗兰克·麦科伊
4. **自传**:
- 《我有一个黑暗的过去》- 汤姆·佩洛特
- 《成为你自己的人:一位作家、丈夫和父亲的回忆录》- 艾伦·弗里斯
5. **心理小说/悬疑**:
- 《杀死一只知更鸟》- 斯蒂芬·金
- 《达菲探案》系列 - 阿加莎·克里斯蒂
6. **爱情与关系类**:
- 《永恒的爱》- E.L.詹姆士
- 《爱的艺术:101个秘诀》 - 安娜·格雷芬特, 艾琳·霍华德等
7. **哲学/理论**:
- 《亚里士多德全集》- 亚里士多德及其学生 (翻译版)
- 《黑暗物质的秘密》(同上)
如果你有兴趣了解更多详细信息或寻找更具体的书籍,请告诉我!
继续聊骚:
Func<string, Task> Chat = async (string input) =>
{
//将用户输入保存到实参中
arguments["userInput"] = input;
//处理用户请求并回复
var answer = await chatFunction.InvokeAsync(kernel, arguments);
var result = $"\n用户:{input}\n聊天机器人:{answer}\n";
history += result;
//更新历史对话
arguments["history"] = history;
Console.WriteLine(result);
};
await Chat("我希望您为我推荐一本关于希腊历史的书籍,请只推荐一本书。");
await Chat("听起来很有趣,我能从中了解到哪些主题呢?");
await Chat("在你提到的这些主题中,你觉得哪一个最让人感兴趣?");
await Chat("能否就你提到的相关主题,再为我列出一些可供阅读的书籍?");
输出如下:
用户:我希望您为我推荐一本关于希腊历史的书籍,请只推荐一本书。
聊天机器人:当然!关于古希腊历史的精彩读物,我建议阅读**《苏格拉底》- 托马斯·哈迪。**
这本书详细描绘了苏格拉底这个哲学家、数学家和辩论家的生活,深入探讨了他的思想和他如何影响后世。他是现代西方文明的奠基者之一,通过他的独白式对话揭示了许多关于伦理、存在主义和政治等主题。
如果您想了解更多或其他历史书籍,请随时告诉我!
用户:听起来很有趣,我能从中了解到哪些主题呢?
聊天机器人:阅读《苏格拉底》- 托马斯·哈迪,你将深入探索以下几种主题:
1. **哲学思考和辩论** - 书中的对话展示了苏格拉底的哲学探究方法以及它如何挑战并发展当时的思想。
2. **道德伦理** - 苏格拉底关于良知、正义与美好生活等主题的讨论为我们提供了对伦理理论和实践的理解。
3. **存在主义探索** - 通过追问“什么是善?”苏格拉底引发了一场深刻而永恒的话题,这个问题至今仍激励着人类进行思考。
4. **政治哲学** - 苏格拉底关于民主、权力和自由的观点为我们提供了古代思想对现代社会的洞见。
5. **苏格拉底影响** - 书中不仅描绘了一位伟大人物,还展示了他如何成为西方文明的基础,塑造后来的哲学家如亚里士多德、柏拉图和许多其他人的思想。
6. **个人发展与自我反省** - 苏格拉底的生活故事鼓励读者进行内心独白并以更深层次的方法思考自己的信仰和价值观。
7. **教育哲学** - 书中还探讨了苏格拉底关于教学方法和教育重要性的观点,这些一直在塑造西方教育的方式。
通过阅读这本书,你将对古希腊历史、以及其深远影响产生更全面的认识。祝你有个愉快且充满启发的阅读之旅!
用户:在你提到的这些主题中,你觉得哪一个最让人感兴趣?
聊天机器人:作为聊天机器人,我并没有个人意见或经历,但我可以告诉你,每个读者可能会根据自己的兴趣和背景来确定哪个主题最令人吸引。如果您对哲学、道德或历史人物的生活感兴趣,特别是如果您喜欢思考深刻的问题并了解古代文明,你可能会发现苏格拉底关于伦理的探讨非常有趣。另一方面,如果你更倾向于政治理论和个人发展,那么他在《苏格拉底》这本书中提出的观点可以引起你的兴趣。
每一个主题都提供了丰富内容,可以从不同角度理解人类经验和历史进程。因此,最让您感兴趣的是完全取决于您的偏好。如果需要更具体的信息或者有其他需求,请随时告诉我!
用户:能否就你提到的相关主题,再为我列出一些可供阅读的书籍?
聊天机器人:当然!以下是针对不同的主题及其下每个子类别的推荐书籍:
1. **哲学思考和辩论**:
- 《苏格拉底对话录》- 塞尔索·冯·克雷森斯坦
这本书收集了关于苏格拉底思想及其影响的著名对话。
2. **道德伦理**(从苏格拉底开始):
- 《苏格拉底: 一部传记》- 克里斯多弗·亚伯拉罕
这本书提供了一幅基于古代来源和现代学者的复杂画卷,描绘了一个充满思想实验的人物。
3. **存在主义探索**:
- 《苏格拉底对话录》- 塞尔索(同上)
4. **政治哲学**:
- 《亚里士多德全集 II:政治哲学》- 亚历山大·杜威, 哈罗德·沙斯特等
这部著作包括古代文本及其评论,讨论了苏格拉底和其他古希腊思想家对民主政府的影响。
5. **苏格拉底影响**:
- 《亚里士多德全集 I:伦理学》- 亚历山大·杜威, 哈罗德·沙斯特等
本书探讨了道德哲学及其在西方思想中的基础,这些都受到了苏格拉底的启发。
6. **个人发展与自我反省**:
- 《亚里士多德全集 VI:伦理学》- 亚历山大·杜威, 哈罗德·沙斯特等
这部著作深入探讨了关于道德、品格和美德的哲学,提供了对个人发展的理论基础。
7. **教育哲学**:
- 《亚里士多德全集 II:政治哲学》- 亚历山大·杜威, 哈罗德·沙斯特等
这部著作中还包括了一些关于教育的内容,阐述了苏格拉底对教学方法和价值观的重要性。
这些书籍提供了不同角度深入了解主题,希望能满足您的阅读兴趣。如果您需要更多的信息或其他推荐,请告诉我!
经过一段时间的对话交流,我们已逐步构建出持续增长的历史记录。这些记录会被附加到每个提示中,其中包含完整的对话内容。现在让我们一起来看看吧!
Console.WriteLine(history);
输出如下 :
用户:您好,我想让您给我推荐一些书籍。
聊天机器人:你好!很高兴能帮你推荐几本有趣的书籍。以下是各个类型和主题的一些建议:
1. **一般小说**:
- 《百年孤独》- 加布里埃尔·加斯顿·马尔克斯
- 《哈利波特与诅咒杯》系列 - J.K.罗琳
2. **科幻/奇幻类**:
- 《黑暗物质的秘密》- 菲利普·K·迪克
- 《权力的游戏》系列 - 戴尔·圣安妮丝 (乔治·R.R.马丁)
3. **历史**:
- 《美国非洲裔人的奴隶制与种族主义研究》- 大卫·斯坦伯格
- 《冷战:从克里姆林宫到白宫》系列 - 弗兰克·麦科伊
4. **自传**:
- 《我有一个黑暗的过去》- 汤姆·佩洛特
- 《成为你自己的人:一位作家、丈夫和父亲的回忆录》- 艾伦·弗里斯
5. **心理小说/悬疑**:
- 《杀死一只知更鸟》- 斯蒂芬·金
- 《达菲探案》系列 - 阿加莎·克里斯蒂
6. **爱情与关系类**:
- 《永恒的爱》- E.L.詹姆士
- 《爱的艺术:101个秘诀》 - 安娜·格雷芬特, 艾琳·霍华德等
7. **哲学/理论**:
- 《亚里士多德全集》- 亚里士多德及其学生 (翻译版)
- 《黑暗物质的秘密》(同上)
如果你有兴趣了解更多详细信息或寻找更具体的书籍,请告诉我!
用户:我希望您为我推荐一本关于希腊历史的书籍,请只推荐一本书。
聊天机器人:当然!关于古希腊历史的精彩读物,我建议阅读**《苏格拉底》- 托马斯·哈迪。**
这本书详细描绘了苏格拉底这个哲学家、数学家和辩论家的生活,深入探讨了他的思想和他如何影响后世。他是现代西方文明的奠基者之一,通过他的独白式对话揭示了许多关于伦理、存在主义和政治等主题。
如果您想了解更多或其他历史书籍,请随时告诉我!
用户:听起来很有趣,我能从中了解到哪些主题呢?
聊天机器人:阅读《苏格拉底》- 托马斯·哈迪,你将深入探索以下几种主题:
1. **哲学思考和辩论** - 书中的对话展示了苏格拉底的哲学探究方法以及它如何挑战并发展当时的思想。
2. **道德伦理** - 苏格拉底关于良知、正义与美好生活等主题的讨论为我们提供了对伦理理论和实践的理解。
3. **存在主义探索** - 通过追问“什么是善?”苏格拉底引发了一场深刻而永恒的话题,这个问题至今仍激励着人类进行思考。
4. **政治哲学** - 苏格拉底关于民主、权力和自由的观点为我们提供了古代思想对现代社会的洞见。
5. **苏格拉底影响** - 书中不仅描绘了一位伟大人物,还展示了他如何成为西方文明的基础,塑造后来的哲学家如亚里士多德、柏拉图和许多其他人的思想。
6. **个人发展与自我反省** - 苏格拉底的生活故事鼓励读者进行内心独白并以更深层次的方法思考自己的信仰和价值观。
7. **教育哲学** - 书中还探讨了苏格拉底关于教学方法和教育重要性的观点,这些一直在塑造西方教育的方式。
通过阅读这本书,你将对古希腊历史、以及其深远影响产生更全面的认识。祝你有个愉快且充满启发的阅读之旅!
用户:在你提到的这些主题中,你觉得哪一个最让人感兴趣?
聊天机器人:作为聊天机器人,我并没有个人意见或经历,但我可以告诉你,每个读者可能会根据自己的兴趣和背景来确定哪个主题最令人吸引。如果您对哲学、道德或历史人物的生活感兴趣,特别是如果您喜欢思考深刻的问题并了解古代文明,你可能会发现苏格拉底关于伦理的探讨非常有趣。另一方面,如果你更倾向于政治理论和个人发展,那么他在《苏格拉底》这本书中提出的观点可以引起你的兴趣。
每一个主题都提供了丰富内容,可以从不同角度理解人类经验和历史进程。因此,最让您感兴趣的是完全取决于您的偏好。如果需要更具体的信息或者有其他需求,请随时告诉我!
用户:能否就你提到的相关主题,再为我列出一些可供阅读的书籍?
聊天机器人:当然!以下是针对不同的主题及其下每个子类别的推荐书籍:
1. **哲学思考和辩论**:
- 《苏格拉底对话录》- 塞尔索·冯·克雷森斯坦
这本书收集了关于苏格拉底思想及其影响的著名对话。
2. **道德伦理**(从苏格拉底开始):
- 《苏格拉底: 一部传记》- 克里斯多弗·亚伯拉罕
这本书提供了一幅基于古代来源和现代学者的复杂画卷,描绘了一个充满思想实验的人物。
3. **存在主义探索**:
- 《苏格拉底对话录》- 塞尔索(同上)
4. **政治哲学**:
- 《亚里士多德全集 II:政治哲学》- 亚历山大·杜威, 哈罗德·沙斯特等
这部著作包括古代文本及其评论,讨论了苏格拉底和其他古希腊思想家对民主政府的影响。
5. **苏格拉底影响**:
- 《亚里士多德全集 I:伦理学》- 亚历山大·杜威, 哈罗德·沙斯特等
本书探讨了道德哲学及其在西方思想中的基础,这些都受到了苏格拉底的启发。
6. **个人发展与自我反省**:
- 《亚里士多德全集 VI:伦理学》- 亚历山大·杜威, 哈罗德·沙斯特等
这部著作深入探讨了关于道德、品格和美德的哲学,提供了对个人发展的理论基础。
7. **教育哲学**:
- 《亚里士多德全集 II:政治哲学》- 亚历山大·杜威, 哈罗德·沙斯特等
这部著作中还包括了一些关于教育的内容,阐述了苏格拉底对教学方法和价值观的重要性。
这些书籍提供了不同角度深入了解主题,希望能满足您的阅读兴趣。如果您需要更多的信息或其他推荐,请告诉我!
作者:菜鸟吊思
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
施主您好,贫僧接受供养,施主一粒米,大如须弥山!南无阿弥陀佛!
您学习别人出学费,只需先扫红包码,后扫支付码!
