TA的每日心情 | 奋斗 昨天 00:00 |
---|
签到天数: 74 天 [LV.6]常住居民II
|
本帖最后由 微尘 于 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}") |
|