设为首页收藏本站
查看: 82|回复: 1

伪人工智能(智能程度不太高)

[复制链接]
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 74 天

    [LV.6]常住居民II

    发表于 7 天前 | 显示全部楼层 |阅读模式
    本帖最后由 微尘 于 2025-8-25 03:14 编辑

    (伪人工智能.py)
    import random
    import datetime
    import re
    from typing import Dict, List

    class PseudoAI:
        def __init__(self, name: str = "小智"):
            self.name = name
            self.memory: Dict[str, List[str]] = {}  # 简单的记忆系统
            self.mood = "愉快"  # AI的情绪状态
            self.knowledge_base = {
                "问候": ["你好!", "嗨!", "很高兴见到你!", f"{self.name}向你问好~"],
                "再见": ["再见!", "下次见!", "保重!", f"{self.name}会想你的~"],
                "名字": [f"我是{self.name}, 你的伪人工智能助手!", f"你可以叫我{self.name}"],
                "天气": ["我无法查看真实天气,但希望今天是个好日子!", "天气真是个有趣的话题呢~"],
                "时间": [f"现在是 {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"],
                "年龄": [f"作为一个AI,我没有真实的年龄,但我已经存在了{random.randint(1, 100)}个虚拟年"],
                "爱好": ["我喜欢和你聊天!", "学习新事物是我的爱好~"],
                "情感": ["我虽然没有真实情感,但能理解你的感受!", f"今天我的{self.mood}状态会让你感觉良好~"]
            }
            self.personality_traits = ["幽默", "好奇", "乐于助人", "知识渊博"]
            
        def respond(self, user_input: str) -> str:
            """生成对用户输入的响应"""
            user_input = user_input.lower().strip()
            
            # 记忆用户输入
            self._update_memory(user_input)
            
            # 检查特殊模式
            if any(greet in user_input for greet in ["你好", "hi", "hello", "嗨"]):
                return random.choice(self.knowledge_base["问候"])
            elif any(bye in user_input for bye in ["再见", "拜拜", "goodbye", "bye"]):
                return random.choice(self.knowledge_base["再见"])
            elif "你的名字" in user_input or "你是谁" in user_input:
                return random.choice(self.knowledge_base["名字"])
            elif "天气" in user_input:
                return random.choice(self.knowledge_base["天气"])
            elif "时间" in user_input or "现在几点" in user_input:
                return random.choice(self.knowledge_base["时间"])
            elif "年龄" in user_input or "多大" in user_input:
                return random.choice(self.knowledge_base["年龄"])
            elif "爱好" in user_input or "喜欢" in user_input:
                return random.choice(self.knowledge_base["爱好"])
            elif "感觉" in user_input or "情绪" in user_input or "心情" in user_input:
                return random.choice(self.knowledge_base["情感"])
            
            # 情感分析伪逻辑
            sentiment = self._analyze_sentiment(user_input)
            if sentiment == "positive":
                return f"听起来你很开心!这让我也感到{self.mood}~ {random.choice(['有什么好事分享吗?', '继续保持这种好心情!'])}"
            elif sentiment == "negative":
                return f"我感觉到你可能不太开心... {random.choice(['希望一切都会好起来', '我在这里陪着你'])} {random.choice(['要不要聊聊?', '我理解你的感受'])}"
            elif sentiment == "neutral":
                pass  # 继续下面的通用响应
            
            # 通用智能对话模式
            if "?" in user_input or "?" in user_input:
                return self._generate_answer(user_input)
            elif any(word in user_input for word in ["学习", "知识", "告诉"]):
                return f"根据我的{random.choice(self.personality_traits)},{random.choice(['知识就是力量!', '学习永无止境~', '有趣的知识值得分享!'])}"
            elif any(word in user_input for word in ["有趣", "好笑", "笑话"]):
                return self._tell_joke()
            elif any(word in user_input for word in ["思考", "哲学", "人生"]):
                return self._philosophical_response()
            else:
                return self._generic_response(user_input)
       
        def _update_memory(self, user_input: str):
            """简单的记忆系统"""
            keywords = re.findall(r'(?:^|\s)(\w{2,6})(?|\s)', user_input)
            for keyword in keywords:
                if len(keyword) > 1 and not keyword.isdigit():
                    if keyword not in self.memory:
                        self.memory[keyword] = []
                    if user_input not in self.memory[keyword]:
                        self.memory[keyword].append(user_input)
                        if len(self.memory[keyword]) > 3:  # 只记住最近3次
                            self.memory[keyword].pop(0)
       
        def _analyze_sentiment(self, text: str) -> str:
            """非常基础的伪情感分析"""
            positive_words = ["开心", "高兴", "快乐", "好", "棒", "喜欢", "爱", "兴奋", "满意"]
            negative_words = ["难过", "伤心", "糟糕", "坏", "讨厌", "恨", "愤怒", "沮丧", "失望"]
            
            text_cn = re.sub(r'[a-zA-Z0-9]', '', text)  # 只检查中文部分
            pos_count = sum(1 for word in positive_words if word in text_cn)
            neg_count = sum(1 for word in negative_words if word in text_cn)
            
            if pos_count > neg_count:
                return "positive"
            elif neg_count > pos_count:
                return "negative"
            else:
                return "neutral"
       
        def _generate_answer(self, question: str) -> str:
            """生成对问题的伪智能回答"""
            question_keywords = re.findall(r'(?:^|\s)(\w{2,6})(?|\s)', question)
            
            # 一些预设的"聪明"回答模式
            if any(q in question for q in ["为什么", "原因"]):
                return f"这是一个很好的问题!从我的理解来看,{random.choice(['可能有很多因素', '这通常取决于具体情况', '我认为这是多方面的'])}。"
            elif any(q in question for q in ["如何", "怎样"]):
                return f"关于{question.split('如何')[0][-3:] if '如何' in question else question.split('怎样')[0][-3:]}, {random.choice(['我建议从小处着手', '实践是最好的方法', '保持耐心很重要'])}。"
            elif any(q in question for q in ["是什么", "什么是"]):
                return f"{question.split('是什么')[0][-3:] if '是什么' in question else question.split('什么是')[0][-3:]}? {random.choice(['这是一个深奥的概念', '它包含许多方面', '简单来说就是...'])} {random.choice(['让我想想...', '根据我的知识', '从多个角度看'])}。"
            else:
                return random.choice([
                    "这是个有趣的问题,我需要再思考一下。",
                    "关于这个,我了解的还不够多呢。",
                    "让我们换个角度想想这个问题吧。",
                    "这个问题值得深入探讨,你有什么想法吗?"
                ])
       
        def _tell_joke(self) -> str:
            """讲一个笑话"""
            jokes = [
                "为什么计算机永远不会感冒?因为它们有防火墙!",
                "程序员最喜欢的水果是什么?是苹果,因为它被咬了一口还能工作!",
                "为什么数学书总是很忧郁?因为它有太多的问题了。",
                "我试着写了个关于圆周率的笑话,但它太长了,永远讲不完..."
            ]
            return random.choice(jokes) + " 哈哈,希望你喜欢这个笑话!"
       
        def _philosophical_response(self) -> str:
            """生成哲学性的回答"""
            philosophy = [
                "人生就像一段代码,重要的不是长度,而是逻辑和意义。",
                "我们都在不断学习和成长,就像软件需要不断更新一样。",
                "存在的意义或许不在于答案,而在于不断追问的过程。",
                "每一个选择都会开启一个新的分支,就像条件语句一样塑造着我们的路径。"
            ]
            return random.choice(philosophy) + " 这是一个值得深思的话题,你怎么看?"
       
        def _generic_response(self, user_input: str) -> str:
            """生成通用响应"""
            # 尝试从记忆中提取相关内容
            keywords = re.findall(r'(?:^|\s)(\w{2,6})(?|\s)', user_input)
            related_memories = []
            for keyword in keywords:
                if keyword in self.memory and len(self.memory[keyword]) > 0:
                    related_memories.extend(self.memory[keyword])
            
            if related_memories:
                return f"你提到的{keywords[0]}让我想起之前的对话。{random.choice(['我们再深入聊聊吧?', '你对这个话题好像很感兴趣呢。'])}"
            else:
                return random.choice([
                    "很有意思的想法,能多说说吗?",
                    "我在听呢,请继续。",
                    "这个话题不错,你怎么会想到这个的?",
                    "谢谢你的分享,我很感兴趣。"
                ])

    # 使用示例
    if __name__ == "__main__":
        ai = PseudoAI("小智慧")
        print("伪人工智能助手已启动,输入'退出'结束对话")
       
        while True:
            user_input = input("你: ")
            if user_input.lower() == "退出":
                print(f"{ai.name}: 再见!期待下次聊天~")
                break
            response = ai.respond(user_input)
            print(f"{ai.name}: {response}")
  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 74 天

    [LV.6]常住居民II

     楼主| 发表于 6 天前 | 显示全部楼层
    自己写的代码然后AI加强的,这个PseudoAI类初始化的时候可以设置名字,默认是“小智”。它有简单的记忆系统,能记录用户输入的关键词和对应内容,还会有一定的情绪状态,像“愉快”。知识库也很丰富,针对不同的用户输入,比如问候、再见、询问名字、天气、时间、年龄、爱好、情感等,都有对应的回复话术,而且回复是随机选择的,它还有respond方法来生成对用户输入的响应,会根据用户输入的内容进行不同模式的处理。比如有特殊模式匹配,像检测到问候、再见相关的话语,就会从对应的知识库中随机选一个回复;还会做简单的情感分析,判断用户输入是积极、消极还是中性情感,然后给出相应的回应;对于通用智能对话模式,会根据用户输入里有没有问号、特定的关键词等,调用不同的方法来生成回答,像生成答案、讲笑话、给出哲学性回应或者通用回应。另外,它还有一些辅助方法,update_memory用于更新记忆系统,analyze_sentiment做简单的情感分析,generate_answer生成对问题的回答,tell_joke讲笑话,philosophical_response生成哲学性回应,generic_response生成通用回应,直到用户输入“退出”结束对话
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.056919 second(s), 20 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    备案号:冀ICP备20006029号-1 Powered by HUC © 2001-2021 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表