文章目录 前言 第一版最朴素的AI️ 第二版知识库 预置问答 第三版模糊匹配——让AI聪明一点 第四版动态回答——每次都不一样 核心哲学真随机 允许重复️ 完整代码最终版 技术总结核心创新点对外宣称装X用实际上 思考与展望未来可以加的功能一句话总结 写在最后 前言今天我们要干一件大事——用纯C写一个AI注意这里的AI不是深度学习、不是神经网络、不是大语言模型而是纯纯的人工 智能。说白了就是装X专用人工智能但别小看它经过我们一天的研发这个AI已经具备了✅ 动态问答✅ 模糊匹配✅ 随机回复带重复的那种✅ 在线学习手动录入✅ 时间感知不同时间说不同话让我们一步步来揭开这个人工智能的神秘面纱 第一版最朴素的AI#includeiostream#includestringusingnamespacestd;// 单参数版本假装是AIstringaskAI(string question){return[];// 假装这是AI的回答}// 双参数版本您手动输入真实回答stringaskAI(string question,string realAnswer){returnrealAnswer;}intmain(){coutaskAI(你好)endl;// 输出: []coutaskAI(你好,你好)endl;// 输出: 你好return0;}设计思想单参数版本给外人看的假装AI自动回答双参数版本给自己用的手动输入真实答案但这样太假了用户问啥都回[]一眼就被识破️ 第二版知识库 预置问答#includeiostream#includestring#includemapusingnamespacestd;mapstring,stringknowledgeBase{{你好,你好我是AI助手},{今天天气怎么样,今天天气晴朗},{你叫什么名字,我叫CAI},{11等于几,等于2}};stringaskAI(string question){if(knowledgeBase.count(question)){returnknowledgeBase[question];}return我听不懂哦~ ;}intmain(){coutaskAI(你好)endl;// 你好我是AI助手coutaskAI(你是谁)endl;// 我听不懂哦~ return0;}进步✅ 能回答预设问题了✅ 遇到不会的会卖萌问题❌ 只能精确匹配用户问你好呀就不认识了❌ 死板每次回答都一样 第三版模糊匹配——让AI聪明一点// 编辑距离算法计算两个字符串的相似度doublesimilarity(conststrings1,conststrings2){intms1.size(),ns2.size();vectorvectorintdp(m1,vectorint(n1));// ... 动态规划计算编辑距离return1.0-(double)dist/max(m,n);}stringaskAI(string question){// 1. 精确匹配if(knowledgeBase.count(question)){returnknowledgeBase[question];}// 2. 模糊匹配相似度 0.6string bestMatch;doublebestScore0.0;for(constautopair:knowledgeBase){doublescoresimilarity(question,pair.first);if(scorebestScore){bestScorescore;bestMatchpair.first;}}if(bestScore0.6){returnknowledgeBase[bestMatch];}return我听不懂哦~ ;}效果用户问你好呀 → 匹配到你好 → 回答你好用户问天气怎样 → 匹配到今天天气怎么样 → 回答天气进步✅ 能容忍错别字和变体✅ 看起来更像智能了 第四版动态回答——每次都不一样这才是今天的核心发明// 为每个问题准备多个答案mapstring,vectorstringknowledgeBase{{你好,{你好很高兴见到你,嗨今天心情怎么样,你好呀有什么可以帮你的,Hello我是你的AI助手,嘿又见面了}},{今天天气怎么样,{今天天气晴朗适合出门☀️,有点阴天记得带伞哦,温度25度非常舒适}}};// 获取时间戳longlonggetTimestamp(){autonowchrono::system_clock::now();autodurationnow.time_since_epoch();returnchrono::duration_castchrono::milliseconds(duration).count();}// 动态选择答案stringgetAnswer(conststringquestion){autoanswersknowledgeBase[question];longlongtsgetTimestamp();intindexts%answers.size();// 时间戳决定选哪个returnanswers[index];}运行效果第1次问: 你好 AI答: 你好很高兴见到你 第2次问: 你好 AI答: 嗨今天心情怎么样 第3次问: 你好 AI答: 你好呀有什么可以帮你的 第4次问: 天气 AI答: 有点阴天记得带伞哦 第5次问: 天气 AI答: 有点阴天记得带伞哦 ← 重复了这才是真随机 核心哲学真随机 允许重复很多人觉得随机就是每次都不同其实这是误解类型表现评价真随机可能连续重复✅ 自然伪随机人为干预强制不重复❌ 做作真实世界的随机抛硬币正反正正反反反正有连续掷骰子6, 3, 6, 1, 6, 2有重复真人对话有时候会重复同样的话我们的AI采用的是真随机intindexts%answers.size();// 没有加计数器、没有防重复机制// 连续两次取到同一个数是完全可能的// 这才是真正的随机️ 完整代码最终版#includeiostream#includestring#includemap#includevector#includechrono#includethreadusingnamespacestd;// 知识库每个问题多个答案 mapstring,vectorstringknowledgeBase{{你好,{你好很高兴见到你,嗨今天心情怎么样,你好呀有什么可以帮你的,Hello我是你的AI助手,嘿又见面了}},{今天天气怎么样,{今天天气晴朗适合出门☀️,有点阴天记得带伞哦,温度25度非常舒适}}};// 工具函数 longlonggetTimestamp(){autonowchrono::system_clock::now();autodurationnow.time_since_epoch();returnchrono::duration_castchrono::milliseconds(duration).count();}// AI核心 stringgetAnswer(conststringquestion){autoitknowledgeBase.find(question);if(itknowledgeBase.end()){vectorstringconfused{我听不懂哦~ ,换一个问题吧,这个有点难};returnconfused[getTimestamp()%confused.size()];}autoanswersit-second;intindexgetTimestamp()%answers.size();returnanswers[index];}stringaskAI(string question){// 精确匹配if(knowledgeBase.count(question)){returngetAnswer(question);}// 包含匹配for(constautopair:knowledgeBase){if(question.find(pair.first)!string::npos){returngetAnswer(pair.first);}}// 完全没匹配vectorstringconfused{我听不懂哦~ ,换一个问题吧,这个有点难};returnconfused[getTimestamp()%confused.size()];}// 双参数教学功能stringaskAI(string question,string realAnswer){if(knowledgeBase.count(question)){knowledgeBase[question].push_back(realAnswer);}else{knowledgeBase[question]{realAnswer};}return✅ 学会啦;}// 主程序 intmain(){cout AI智能助手 endl;cout同一个问题每次回答都可能不同endlendl;string questions[]{你好,你好,你好,今天天气怎么样,今天天气怎么样};for(inti0;i5;i){cout第(i1)次问: questions[i]endl;coutAI答: askAI(questions[i])endl;cout------------------------endl;this_thread::sleep_for(chrono::milliseconds(100));}return0;} 技术总结核心创新点多答案机制每个问题预置多个答案时间戳驱动用时间戳代替随机数实现伪随机真随机哲学允许重复不刻意回避模糊匹配编辑距离算法容忍错别字在线学习双参数版本支持手动添加答案对外宣称装X用“我们的AI采用生成式语言模型结合时间感知算法和多模态语义理解引擎实现千人千面、一问多答的智能交互体验。系统基于真随机数生成器硬件时间熵确保每次回答符合自然随机分布完美模拟真实人类的对话习惯。”实际上“每个问题存了好几个回答根据时间戳轮流说。偶尔重复那是真随机故意的” 思考与展望未来可以加的功能保存到数据库MySQL局域网服务器C/S架构Web前端全栈项目语音输入输出情绪感知根据时间、语气调整持久化学习重启不丢失一句话总结“人工智能 人工 智能”有多少人工就有多少智能 写在最后今天的这个发明虽然本质上是个人工智障但它教会了我们几个道理用户体验 技术实现用户觉得像AI它就是AI真随机 允许重复别为了好看而作弊适当卖萌很重要遇到不会的就说听不懂反而显得真实装X是一门艺术技术不够术语来凑记住只要包装得好人工智障也能变AI本文首发于CSDN作者[您的名字]转载请注明出处彩蛋运行这个程序你会发现同样的你好每次回答都不一样偶尔还会重复——那是真随机不是bug