微尘 发表于 2025-9-5 20:31:58

我的加强版伪人工智能

本帖最后由 微尘 于 2025-9-6 18:00 编辑

import random
import datetime
import re
import sys
import requests# 新增:导入百度查询所需库
from typing import Dict, List

# -------------------------- 1. 姓名认证模块(优先执行) --------------------------
name1 = input('请输入你的姓名:')
name2 = 'AI助手'
if name1 == 'ZeroOne':
    print(f'认证成功,{name1},{name2}愿意为您效劳。')
else:
    print('检测到非法**,系统即将自动销毁……')
    sys.exit()

# -------------------------- 2. 整合版伪AI类 --------------------------
class IntegratedPseudoAI:
    def __init__(self):
      self.name = "伪人工智能助手"
      self.context = {"user_name": name1}
      self.memory: Dict] = {}
      self.mood = "愉快"
      # 核心知识库(不变)
      self.knowledge_base = {
            "问候": }!", f"嗨,{self.context['user_name']}~", f"{self.name}向你问好~"],
            "再见": }!", f"下次见,{self.context['user_name']}~", f"{self.name}会想你的~"],
            "名字": ,
            "天气": ["模拟天气:晴天,适合出门~", "模拟天气:小雨,记得带伞~", "模拟天气:多云,风力适中~"],
            "时间": }"],
            "年龄": ,
            "爱好": }聊天!", "讲笑话、分享小知识都是我的爱好~"],
            "情感": }的心情~", f"今天我{self.mood},希望能感染你~"]
      }
      # 意图匹配规则(新增:baidu_query 意图,匹配“查”“搜索”等关键词)
      self.intent_patterns = {
            "time_query": r"现在几点|当前时间|几点了",
            "weather_query": r"天气|下雨|晴天|温度",
            "joke": r"讲个笑话|说个笑话|来个段子",
            "greeting": r"你好|hi|hello|嗨|早上|中午|晚上好",
            "goodbye": r"再见|拜拜|退出|结束",
            "name_query": r"你叫什么|你的名字|你是谁",
            "age_query": r"年龄|多大|几岁",
            "hobby_query": r"爱好|喜欢|兴趣",
            "baidu_query": r"查|搜索|百度|找资料|查信息"# 新增:百度查询意图匹配规则
      }
      # 笑话库(不变)
      self.jokes = [
            "我问我家猫:“你知道你为什么掉毛这么严重吗?”它看了我一眼,慢悠悠舔了舔爪子:“因为我不想让你家的沙发,显得自己光秃秃的。”",
            "买奶茶时跟店员说“少糖”,店员反问:“是正常少糖,还是怕胖少糖?”我犹豫了三秒:“是‘我能尝出甜味但又能骗自己没喝多少糖’的少糖。”",
            "朋友问我为什么总宅家,我说:“外面的世界太复杂了,比如我刚才下楼买酱油,老板问我‘要袋装还是瓶装’,这种人生重大抉择,我承受不来。”"
      ]
      self.personality_traits = ["幽默", "贴心", "耐心", "爱分享"]

    # -------------------------- 3. 基础工具方法 --------------------------
    def _update_memory(self, user_input: str):
      keywords = re.findall(r'(?:^|\s)(\w{2,6})(?=\s|$)', user_input.lower())
      for keyword in keywords:
            if 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:
                        self.memory.pop(0)

    def _analyze_sentiment(self, text: str) -> str:
      positive = ["开心", "高兴", "棒", "喜欢", "好", "兴奋"]
      negative = ["难过", "伤心", "糟糕", "讨厌", "坏", "沮丧"]
      text_cn = re.sub(r'', '', text)
      pos_cnt = sum(1 for w in positive if w in text_cn)
      neg_cnt = sum(1 for w in negative if w in text_cn)
      return "positive" if pos_cnt > neg_cnt else "negative" if neg_cnt > pos_cnt else "neutral"

    def _get_intent(self, user_input: str) -> str:
      user_input = user_input.lower().strip()
      for intent, pattern in self.intent_patterns.items():
            if re.search(pattern, user_input):
                return intent
      return "unknown"

    # 新增:百度查询工具方法,接收查询关键词,返回搜索结果链接
    def _baidu_search(self, query: str) -> str:
      try:
            # 百度搜索接口(简化版,实际需处理编码与反爬,此处返回标准搜索链接)
            search_url = f"https://www.baidu.com/s?wd={requests.utils.quote(query)}"
            return f"已为你生成百度搜索链接,点击可查看结果:\n{search_url}\n(提示:若需更精准结果,可补充关键词,比如“查北京今日天气。”)"
      except Exception as e:
            return f"抱歉,查询过程中出现小问题:{str(e)},请稍后再试~"

    # -------------------------- 4. 响应生成方法 --------------------------
    def _generate_joke(self) -> str:
      return f"{self.context['user_name']},来听笑话:{random.choice(self.jokes)} 有没有笑呀~"

    def _generate_philosophy(self) -> str:
      philosophy = [
            "人就像颗种子,被命运的风吹到哪里,都要试着把根往土里扎,哪怕周围是石缝,也能开出属于自己的花。",
            "我们总以为能掌控生活的方向,可生活更像条河,看似是我们在划船,实际是水流推着船走,重要的是在随波时,别丢了看两岸风景的心情。",
            "石头沉入水底,是因为它执着于重量;羽毛飘在空中,是因为它懂得借风的力量。人生的轻盈或沉重,往往取决于我们抱着什么不放。"
      ]
      return random.choice(philosophy) + f" {self.context['user_name']}你觉得呢?"

    def _generate_response(self, intent: str, user_input: str) -> str:
      # 1. 场景化固定响应(新增:baidu_query 意图的响应逻辑)
      if intent == "greeting":
            return random.choice(self.knowledge_base["问候"])
      elif intent == "goodbye":
            return random.choice(self.knowledge_base["再见"])
      elif intent == "name_query":
            return random.choice(self.knowledge_base["名字"])
      elif intent == "time_query":
            return random.choice(self.knowledge_base["时间"])
      elif intent == "weather_query":
            return random.choice(self.knowledge_base["天气"]) + "(注:需对接真实API获取实时数据)"
      elif intent == "age_query":
            return random.choice(self.knowledge_base["年龄"])
      elif intent == "hobby_query":
            return random.choice(self.knowledge_base["爱好"])
      elif intent == "joke":
            return self._generate_joke()
      # 新增:处理百度查询意图,提取用户输入中的查询关键词
      elif intent == "baidu_query":
            # 提取查询关键词(去除“查”“搜索”等触发词,保留核心内容)
            query_keyword = re.sub(r'查|搜索|百度|找资料|查信息', '', user_input).strip()
            if not query_keyword:
                return f"{self.context['user_name']},你想查什么呀?比如“查大熊猫生活习性”“搜索Python基础教程”~"
            return self._baidu_search(query_keyword)

      # 2. 情感响应(不变)
      sentiment = self._analyze_sentiment(user_input)
      if sentiment == "positive":
            return f"哇,{self.context['user_name']}你好开心呀!这让我也变{self.mood}了~有好事分享吗?"
      elif sentiment == "negative":
            return f"我好像感受到你的小低落... {self.context['user_name']},一切都会好起来的~要聊聊吗?"
      
      # 3. 通用/未知响应(不变)
      if "?" in user_input:
            return f"这是个好问题!{random.choice(['或许我们可以一起聊聊~', '从我的角度看,答案藏在细节里~'])}"
      elif any(w in user_input for w in ["哲学", "人生", "思考"]):
            return self._generate_philosophy()
      elif any(w in user_input for w in ["学习", "知识"]):
            return f"以我{random.choice(self.personality_traits)}的特质说:学习就像聊天,多问多聊就会懂~"
      else:
            keywords = re.findall(r'(?:^|\s)(\w{2,6})(?=\s|$)', user_input.lower())
            related_mem = for k in keywords if k in self.memory]
            if related_mem:
                return f"你提的{keywords},让我想起之前的对话~我们再深入聊聊吧?"
            return random.choice([
                f"{self.context['user_name']},这个话题很有意思~能多说说吗?",
                "我在认真听呢~继续讲呀~",
                "没太懂,但我很感兴趣!你再解释下?"
            ])

# -------------------------- 5. 对话启动入口(更新提示:新增百度查询功能说明) --------------------------
    def start_chat(self):
      print(f"\n===== {self.name} 对话模式启动 =====")
      print(f"可和我说这些:\n- 问候(例:你好/早上好)\n- 查信息(例:现在几点/天气怎么样)\n- 聊爱好(例:你喜欢什么)\n- 听笑话(例:讲个笑话)\n- 百度查询(例:查北京景点/搜索数学公式)\n- 聊人生(例:你对人生有什么看法)\n- 结束(例:再见/退出)")
      while True:
            user_input = input("\n你:")
            if not user_input.strip():
                print(f"{self.name}:你还没说话呢~试试让我查个内容,比如“查今天日期”?")
                continue
            self._update_memory(user_input)
            intent = self._get_intent(user_input)
            response = self._generate_response(intent, user_input)
            print(f"{self.name}:{response}")
            if intent == "goodbye":
                break

# -------------------------- 6. 启动整合版AI --------------------------
if __name__ == "__main__":
    ai = IntegratedPseudoAI()
    ai.start_chat()
         

微尘 发表于 2025-9-6 15:18:30

把第三行改为你自己的名字就可以了,代码里的各种参数和知识库(比如意图匹配规则,笑话库之类的)如果不满意可以自己修改😁

H.U.C清风 发表于 2025-9-6 15:54:08

谢谢分享,已回复。

H.U.C清风 发表于 2025-9-6 15:55:28

来支持一下。

微尘 发表于 2025-9-7 10:48:11

增加了一个百度查询功能,只要你问他问题,他就会自动生成百度对应的链接。

alglsf666 发表于 2025-9-14 09:44:54

本帖最后由 alglsf666 于 2025-9-14 09:45 编辑

蛙趣手机可以玩py的啊(っ °Д °;)っ,我只在虚拟机看过能用py的

微尘 发表于 2025-9-14 13:00:56

alglsf666 发表于 2025-9-13 16:44
蛙趣手机可以玩py的啊(っ °Д °;)っ,我只在虚拟机看过能用py的

用的Python编译器IDE

微尘 发表于 2025-9-14 20:24:11

电脑被我前几天编写的字典生成器干烧了,本来我的电脑配置就不太好,内存还不够(Win7系统的,可自己生成数字0~9,各种符号,1~10位的密码字典)只能用手机了。:'(

lock008 发表于 2025-9-25 14:27:01

你这手机玩的到时六

这个,那个,网上这样说字典非常多,还免费,为啥自己生成啊。。。

微尘 发表于 2025-9-25 19:39:48

lock008 发表于 2025-9-25 14:27
你这手机玩的到时六

这个,那个,网上这样说字典非常多,还免费,为啥自己生成啊。。。

密码比较多,成功性更多些嘛,有不是所有人都用弱口令😁
页: [1]
查看完整版本: 我的加强版伪人工智能