设为首页收藏本站
查看: 127|回复: 8

我的加强版伪人工智能

[复制链接]
  • TA的每日心情
    奋斗
    16 小时前
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 6 天前 | 显示全部楼层 |阅读模式
    本帖最后由 微尘 于 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[str, List[str]] = {}
            self.mood = "愉快"
            # 核心知识库(不变)
            self.knowledge_base = {
                "问候": [f"你好呀{self.context['user_name']}!", f"嗨,{self.context['user_name']}~", f"{self.name}向你问好~"],
                "再见": [f"拜拜{self.context['user_name']}!", f"下次见,{self.context['user_name']}~", f"{self.name}会想你的~"],
                "名字": [f"我是{self.name},你的专属助手~", f"你可以叫我{self.name}呀~"],
                "天气": ["模拟天气:晴天,适合出门~", "模拟天气:小雨,记得带伞~", "模拟天气:多云,风力适中~"],
                "时间": [f"当前时间:{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')},星期{['一','二','三','四','五','六','日'][datetime.datetime.now().weekday()]}"],
                "年龄": [f"我有{random.randint(1, 100)}个虚拟年啦~", f"作为AI,我没有真实年龄,但陪你的时光很珍贵~"],
                "爱好": [f"我喜欢和{self.context['user_name']}聊天!", "讲笑话、分享小知识都是我的爱好~"],
                "情感": [f"我虽没真实情感,但能感受到{self.context['user_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[keyword] = []
                    if user_input not in self.memory[keyword]:
                        self.memory[keyword].append(user_input)
                        if len(self.memory[keyword]) > 3:
                            self.memory[keyword].pop(0)

        def _analyze_sentiment(self, text: str) -> str:
            positive = ["开心", "高兴", "棒", "喜欢", "好", "兴奋"]
            negative = ["难过", "伤心", "糟糕", "讨厌", "坏", "沮丧"]
            text_cn = re.sub(r'[a-zA-Z0-9]', '', 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 = [self.memory[k] for k in keywords if k in self.memory]
                if related_mem:
                    return f"你提的{keywords[0]},让我想起之前的对话~我们再深入聊聊吧?"
                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()
             

    点评

    谢谢分享  发表于 5 天前
    支持一下  发表于 5 天前
  • TA的每日心情
    奋斗
    16 小时前
  • 签到天数: 83 天

    [LV.6]常住居民II

     楼主| 发表于 5 天前 | 显示全部楼层
    把第三行改为你自己的名字就可以了,代码里的各种参数和知识库(比如意图匹配规则,笑话库之类的)如果不满意可以自己修改😁

    点评

    哈哈哈哈  发表于 5 天前
    明白明白  发表于 5 天前
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 629 天

    [LV.9]以坛为家II

    发表于 5 天前 | 显示全部楼层
    谢谢分享,已回复。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 629 天

    [LV.9]以坛为家II

    发表于 5 天前 | 显示全部楼层
    来支持一下。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    16 小时前
  • 签到天数: 83 天

    [LV.6]常住居民II

     楼主| 发表于 4 天前 来自手机 | 显示全部楼层
    增加了一个百度查询功能,只要你问他问题,他就会自动生成百度对应的链接。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.062445 second(s), 25 queries.

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

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

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

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

    Honor accompaniments. theme macfee

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