微尘 发表于 2025-8-25 20:02:31

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

本帖最后由 微尘 于 2025-9-2 04:37 编辑

import random
import datetime
import re
from typing import Dict, List

class PseudoAI:
    def __init__(self, name: str = "小智"):
      self.name = name
      self.memory: Dict] = {}# 简单的记忆系统
      self.mood = "愉快"# AI的情绪状态
      self.knowledge_base = {
            "问候": ["你好!", "嗨!", "很高兴见到你!", f"{self.name}向你问好~"],
            "再见": ["再见!", "下次见!", "保重!", f"{self.name}会想你的~"],
            "名字": ,
            "天气": ["我无法查看真实天气,但希望今天是个好日子!", "天气真是个有趣的话题呢~"],
            "时间": ,
            "年龄": ,
            "爱好": ["我喜欢和你聊天!", "学习新事物是我的爱好~"],
            "情感": ["我虽然没有真实情感,但能理解你的感受!", 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 = []
                if user_input not in self.memory:
                  self.memory.append(user_input)
                  if len(self.memory) > 3:# 只记住最近3次
                        self.memory.pop(0)
   
    def _analyze_sentiment(self, text: str) -> str:
      """非常基础的伪情感分析"""
      positive_words = ["开心", "高兴", "快乐", "好", "棒", "喜欢", "爱", "兴奋", "满意"]
      negative_words = ["难过", "伤心", "糟糕", "坏", "讨厌", "恨", "愤怒", "沮丧", "失望"]
      
      text_cn = re.sub(r'', '', 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('如何')[-3:] if '如何' in question else question.split('怎样')[-3:]}, {random.choice(['我建议从小处着手', '实践是最好的方法', '保持耐心很重要'])}。"
      elif any(q in question for q in ["是什么", "什么是"]):
            return f"{question.split('是什么')[-3:] if '是什么' in question else question.split('什么是')[-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) > 0:
                related_memories.extend(self.memory)
      
      if related_memories:
            return f"你提到的{keywords}让我想起之前的对话。{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}")

微尘 发表于 2025-8-26 05:59:59

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

微尘 发表于 昨天 21:38

不好意思,没发现正则表达式有点语法错误已经修改了
页: [1]
查看完整版本: 伪人工智能(智能程度不太高)