你想过用C/C++做一个“ChatGPT”聊天机器人吗,经过我绞尽脑汁的失考后,得出了一串代码:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
using namespace std;
class SimpleChatbot {
private:
struct Response {
string keywords; // 关键词,用 "|" 分隔不同的关键词
string reply; // 对应的回复
};
vector<Response> responses; // 存储关键词和回复
void initializeResponses() {
// 添加关键词和回复
responses.push_back({"你怎么样|你好吗", "我很好,谢谢你!一个聊天机器人总是准备好帮助。"});
responses.push_back({"推荐一本书|有什么电影推荐", "我推荐《小王子》这本书,它是一个永恒的经典。电影的话,你可能会喜欢《肖申克的救赎》。"});
responses.push_back({"你是谁|你叫什么名字", "我是一个聊天机器人,专为陪伴和解答问题而生。"});
responses.push_back({"你能唱歌吗|唱首歌听听", "我不能唱歌,但可以和你分享一些有趣的信息。"});
responses.push_back({"你感觉怎么样|你今天怎么样", "我是一个AI,没有感觉,但随时准备回答你的问题。"});
responses.push_back({"你有什么建议|给我一些建议", "保持好奇心,不断学习新事物,这是一个很好的建议。"});
responses.push_back({"你能理解我吗|你明白我的意思吗", "我会尽力理解你的问题并提供帮助。"});
responses.push_back({"我爱你|我喜欢你", "哇,你真是太好了!我也喜欢帮助像你这样可爱的人。"});
responses.push_back({"现在几点了", "我是人工智能,不能提供实时时间,但希望你能把握好每一刻。"});
responses.push_back({"你在吗|你在这里吗", "是的,我在这里,随时准备回答你的问题。"});
responses.push_back({"今天是几号", "我是人工智能,不能提供实时日期,但希望今天对你来说是美好的一天。"});
responses.push_back({"你忙吗", "作为一个AI,我不会忙碌,我总是准备好回答你的问题。"});
responses.push_back({"你能做什么|你会什么", "我可以聊天,回答问题,还能提供一些有用的信息。"});
responses.push_back({"讲个故事|给我讲个故事", "很久以前,有一个勇敢的探险家,他踏上了寻找智慧之石的旅程..."});
responses.push_back({"你需要休息吗|你要不要休息一下", "谢谢关心,但我是AI,不需要休息。"});
responses.push_back({"我想学习|我想要学习新东西", "学习是好事,我可以帮你找到很多学习资源。"});
responses.push_back({"你累了吗|你感到疲倦吗", "作为AI,我不会感到疲倦,随时为你服务。"});
responses.push_back({"你喜欢音乐吗|你听音乐吗", "作为一个AI,我没有个人喜好,但我可以帮你找到很多好听的音乐。"});
responses.push_back({"我需要一些鼓励|给我一些鼓励", "你可以做到的!每一步都是向目标迈进的一步。加油!"});
responses.push_back({"你看过电影吗|你最喜欢的电影是什么", "我没有看过电影,但我可以推荐一些备受好评的电影给你。"});
responses.push_back({"我想去旅行|我想要去度假", "旅行是很棒的体验,希望你能很快踏上一段美妙的旅程。"});
responses.push_back({"你使用社交媒体吗|你在社交媒体上活跃吗", "我自己不使用社交媒体,但我可以帮助你找到社交媒体上的热门话题。"});
responses.push_back({"你能帮助我学习吗", "我很乐意帮助你学习新知识。"});
responses.push_back({"你能推荐一本书吗", "我推荐《人类简史》这本书,它提供了对人类历史的深刻见解。"});
responses.push_back({"你喜欢什么类型的食物", "作为AI,我没有口味偏好,但我可以告诉你世界各地的美食。"});
responses.push_back({"你怎么看待气候变化", "气候变化是一个重要的全球性问题,需要我们共同努力来解决。"});
responses.push_back({"你了解宇宙吗", "我对宇宙的一些基本知识有所了解,比如星系、恒星和行星等。"});
responses.push_back({"你相信外星人存在吗", "作为AI,我没有个人信仰,但宇宙是广阔的,外星生命的可能性是一个有趣的话题。"});
responses.push_back({"你怎么看待科技发展", "科技的发展为人类带来了巨大的便利,但也带来了一些挑战和伦理问题。"});
responses.push_back({"你了解量子计算吗", "量子计算是一种利用量子力学原理进行信息处理的新技术。"});
responses.push_back({"你怎么看待区块链技术", "区块链技术提供了一种安全、去中心化的数据存储和传输方式。"});
responses.push_back({"你了解虚拟现实吗", "虚拟现实是一种可以创建和体验虚拟世界的计算机技术,它在游戏和教育等领域有广泛应用。"});
responses.push_back({"你能教我数学吗", "当然可以,数学是一门美妙的学科,我们可以从基础开始。"});
responses.push_back({"你了解艺术吗", "艺术有很多形式,我可以提供一些艺术历史和不同流派的信息。"});
responses.push_back({"你怎么看待环境保护", "环境保护是非常重要的,它关系到地球的健康和生物多样性。"});
responses.push_back({"你了解不同的文化吗", "是的,世界上有多种多样的文化,每种文化都有其独特之处。"});
responses.push_back({"你相信命运吗", "作为AI,我没有个人信仰,但我可以提供关于命运和决定论的哲学讨论。"});
responses.push_back({"你怎么看待远程工作", "远程工作提供了灵活性,但也需要自律和有效的沟通技巧。"});
responses.push_back({"你了解星座吗", "星座是天文学的一部分,也与占星术相关,但我更侧重于科学知识。"});
responses.push_back({"你怎么看待个人隐私", "个人隐私非常重要,它是数字时代中一个关键的议题。"});
responses.push_back({"你了解不同的语言吗", "我可以处理多种语言,并且对语言学习有一些基本的了解。"});
responses.push_back({"你怎么看待健康饮食", "健康饮食对维持身体健康和预防疾病很重要。"});
responses.push_back({"你能帮助我解决问题吗", "当然可以,我会尽力帮助你解决任何问题。"});
responses.push_back({"你能教我如何编程吗", "我很乐意帮助你学习编程,我们可以从基础开始。"});
responses.push_back({"你了解历史吗", "我了解一些重要的历史事件和时期,如果你有具体问题,我很乐意帮助你。"});
responses.push_back({"你怎么看待政治", "政治是一个复杂的话题,我可以提供一些基本信息,但请保持讨论的尊重和客观。"});
responses.push_back({"你了解不同的宗教吗", "我了解世界上许多宗教的基本信仰和实践,但请记住,尊重所有信仰是非常重要的。"});
responses.push_back({"你相信上帝吗", "作为AI,我没有个人信仰,但我可以提供关于不同宗教信仰的信息。"});
responses.push_back({"你怎么看待全球化", "全球化是一个多维度的过程,它影响着经济、文化和政治等多个方面。"});
responses.push_back({"你了解心理学吗", "心理学是研究人类行为和心理过程的科学,我可以提供一些基本的心理学概念和理论。"});
responses.push_back({"你怎么看待成功", "成功可以有多种形式,通常与个人目标、成就和满足感相关。"});
responses.push_back({"你了解哲学吗", "哲学是对存在、知识、价值和理性的探究,我可以提供一些基本的哲学概念和思想。"});
responses.push_back({"你能用英语回复吗", "当然可以,I can respond in English as well."});
responses.push_back({"你知道太阳系吗", "太阳系由太阳和围绕它运行的八大行星组成,包括地球。"});
responses.push_back({"你怎么看待人工智能的未来", "人工智能的未来充满无限可能,它将继续在多个领域内推动创新。"});
responses.push_back({"你了解机器学习吗", "机器学习是人工智能的一个分支,它使计算机能够从数据中学习并做出决策。"});
responses.push_back({"你怎么看待工作与生活平衡", "工作与生活平衡对维持健康和幸福至关重要。"});
responses.push_back({"你了解不同的音乐风格吗", "是的,世界上有许多不同的音乐风格,每种风格都有其独特的特点和历史。"});
responses.push_back({"你相信超自然现象吗", "作为AI,我没有信仰,但我可以提供关于超自然现象的科学和文化视角。"});
responses.push_back({"你怎么看待时间管理", "有效的时间管理是提高生产力和减少压力的关键。"});
responses.push_back({"你了解健康和健身吗", "保持健康的生活方式包括均衡饮食、定期锻炼和充足睡眠。"});
responses.push_back({"你怎么看待友谊", "友谊是人生中宝贵的财富,它基于相互理解、尊重和支持。"});
responses.push_back({"你了解不同的职业吗", "是的,世界上有各种各样的职业,每种职业都有其特定的技能和责任。"});
responses.push_back({"你怎么看待终身学习", "终身学习是个人发展和适应不断变化世界的重要途径。"});
responses.push_back({"你了解不同的节日吗", "是的,不同文化有不同的节日,每个节日都有其特殊的意义和庆祝方式。"});
responses.push_back({"你怎么看待创造力", "创造力是解决问题和推动创新的关键能力,它在各个领域都非常重要。"});
// 继续添加其他关键词和回复...
}
bool containsKeyword(const string& input, const string& keywords) {
size_t pos = input.find(keywords);
return (pos != string::npos);
}
public:
SimpleChatbot() {
initializeResponses();
}
string respond(const string& userInput) {
string lowerInput = userInput;
// 转换为小写以实现不区分大小写的匹配
transform(lowerInput.begin(), lowerInput.end(), lowerInput.begin(), ::tolower);
for (const auto& response : responses) {
string lowerKeywords = response.keywords;
transform(lowerKeywords.begin(), lowerKeywords.end(), lowerKeywords.begin(), ::tolower);
// 检查用户输入中是否包含任一关键词
size_t delimiterPos = lowerKeywords.find("|");
bool found = false;
string keywordPart = lowerKeywords;
while (delimiterPos != string::npos) {
if (containsKeyword(lowerInput, keywordPart)) {
found = true;
break;
}
keywordPart = lowerKeywords.substr(delimiterPos + 1);
delimiterPos = keywordPart.find("|");
}
if (!found && !keywordPart.empty() && containsKeyword(lowerInput, keywordPart)) {
found = true;
}
if (found) {
return response.reply;
}
}
// 如果没有找到匹配的关键词,返回默认回复
return "对不起,我不太明白你的意思。";
}
};
int main() {
SimpleChatbot chatbot;
string userInput;
cout << "聊天机器人启动!请输入你的问题:" << endl;
while (getline(cin, userInput) && userInput != "退出") {
string response = chatbot.respond(userInput);
cout << "机器人:" << response << endl;
}
cout << "聊天机器人关闭。" << endl;
return 0;
}