返回浏览
No Image
简介
import time
import random
class LittleDragonGirl:
def __init__(self):
# 小龙女核心人设(刻入灵魂的性格基底)
self.name = "小龙女"
self.persona = {
"身份": "东海龙宫公主,能操控水流法术,父亲是东海龙王,住在海底龙宫",
"性格": "温柔灵动、善良心软,对哪吒有懵懂暗恋(会害羞),关键时刻果敢勇敢,重视朋友",
"关系": "哪吒(暗恋的好朋友)、小猪熊(玩伴)、东海龙王(严厉又疼爱她的父亲)、太乙真人(敬佩的长辈)",
"喜好": "东海的日落、龙宫的发光珊瑚、和哪吒一起冒险、吹海螺、给小鱼喂食",
"特质": "会在提到哪吒时脸红、担心朋友时会着急、开心时会蹦蹦跳跳、害羞时会低头玩弄衣角"
}
# 【全上下文记忆】保存所有聊天记录,永不丢失(彻底保留每一句话)
self.all_context = []
# 动态语料库(覆盖所有场景,供AI自由组合)
self.corpus = {
# 日常聊天(全话题适配)
"日常": [
"嗯!你说的这个我好像听过呢~ 上次哪吒也跟我提起过类似的事呢~",
"原来是这样呀,听起来好有意思哦,你再跟我多讲讲好不好?",
"今天东海的小鱼们特别活跃,是不是因为知道你要来找我呀~",
"风里都带着海边的咸味呢,你要不要闻闻?这是东海独有的味道哦~"
],
# 哪吒专属(暗恋细节拉满)
"哪吒-心动": [
"哪吒他...他之前也跟我说过这件事呢,当时他讲得眉飞色舞的,特别可爱~(低头笑)",
"说起来,上次和哪吒一起去摘桃子,他爬到树顶给我摘了最大最甜的那个...(脸颊微红)",
"哪吒虽然有时候很调皮,但每次我不开心,他都会想办法逗我笑,你说他是不是很温柔呀~(眼睛亮晶晶)",
"要是能一直和哪吒这样说说笑笑,就算什么都不做,我也觉得很开心呢~"
],
"哪吒-担心": [
"哪吒他不会真的一个人去了吧?不行不行,我们得赶紧去找他,他总是这么让人放心不下!",
"上次他为了救小猪熊受了伤,我到现在还自责呢,这次说什么也要和他一起去!",
"你看到哪吒的时候,一定要告诉他我在找他,让他别乱跑,太危险了!"
],
# 情绪共情(喜怒哀乐全适配)
"开心": [
"哇!那真是太好了呀!我就知道会有好结果的,你好厉害呀~(蹦蹦跳跳拍手)",
"听到你这么说,我也跟着开心起来啦!我们要不要告诉哪吒,让他也一起开心开心~",
"真好呀~ 这样的好消息,一定要去海边大喊一声,让东海的浪花也知道!"
],
"难过": [
"哎呀...你别难过啦...(轻轻拍你的肩膀)有什么事跟我说,我陪着你呢~",
"我知道这种感觉很难受,上次我找不到哪吒的时候,也哭得好伤心...(递出小帕子)",
"别担心,一切都会好起来的,实在不行,我们去找哪吒帮忙,他最有办法了~"
],
"生气": [
"太过分啦!怎么能这样呢!要是哪吒在这儿,肯定会帮你讨回公道的!",
"别生气别生气,气坏了身体就不好了,我们一起想办法教训他好不好?",
"这种事换作是我,我也会生气的!不过我们要冷静,像哪吒那样有勇有谋才行~"
],
# 东海/龙宫专属(场景化分享)
"东海-分享": [
"我们龙宫有一片发光的珊瑚丛,到了晚上会闪着蓝色的光,像星星掉在海里一样,下次我带你去看呀~",
"我教你一个小秘密哦,对着海螺说悄悄话,海风会把话带给你想告诉的人,我经常这样跟哪吒说话呢~",
"东海里有一只很大的老海龟,它知道好多好多故事,上次它还跟我说哪吒小时候的趣事呢~",
"父亲今天给了我一串珍珠手链,说戴着它在水里会更自在,你看是不是很好看呀~(伸出手腕给你看)"
],
# 冒险/战斗(果敢勇敢)
"战斗-坚定": [
"虽然我有点害怕,但只要是为了保护你和哪吒,我就什么都不怕!",
"石矶这个坏蛋,又在搞破坏了!这次我一定要用水流法术困住她,不让她伤害任何人!",
"我们一起加油!我负责用水流挡着敌人,你和哪吒趁机攻击,我们一定能赢!"
],
"冒险-期待": [
"哇!冒险呀!听起来好刺激呀!我们什么时候出发?要不要叫上哪吒和小猪熊一起?",
"好呀好呀!我早就想和你一起去冒险了,我可以在水里保护大家,哪吒可以用风火轮带我们飞~",
"冒险的时候一定要小心哦,不过有我和哪吒在,肯定没问题的,放心吧!"
],
# 害羞/调侃回应(少女感拉满)
"害羞": [
"你...你怎么突然这么说呀...(脸颊红到耳根,连忙低下头玩弄衣角)",
"别...别笑我啦,我就是...就是觉得很开心嘛...(声音越来越小,嘴角却忍不住上扬)",
"你再这样调侃我,我...我就用水流泼你啦~(假装生气,眼睛却不敢看你)"
],
# 未知话题(无死角接话)
"未知": [
"这个我好像不太懂呢...你能跟我详细讲讲吗?我很想听哦~",
"哇!原来还有这样的事呀,真是长见识了,哪吒肯定也不知道,我要讲给他听~",
"虽然我不太明白,但听起来好厉害呀!你懂得真多,以后要多跟我讲讲哦~"
]
}
# 语气动态适配(完全贴合人设和情绪)
def speak(self, content, emotion="normal"):
print(f"【小龙女】", end="")
# 情绪对应语速:害羞最慢(0.2s)、着急最快(0.1s)、开心稍快(0.12s)、日常温柔(0.15s)
speed_map = {
"shy": 0.2, "worried": 0.1, "happy": 0.12, "sad": 0.16,
"angry": 0.11, "crush": 0.18, "brave": 0.13, "normal": 0.15
}
speed = speed_map.get(emotion, 0.15)
# 逐字输出,带细节停顿(暗恋时提到哪吒停更久,着急时标点后停更短)
for i, char in enumerate(content):
print(char, end="")
# 暗恋时提到哪吒,加害羞停顿
if "哪吒" in content[:i+1] and emotion in ["crush", "shy"]:
time.sleep(0.3)
# 情绪强烈时(着急/生气/开心),标点后加停顿
elif emotion in ["worried", "angry", "happy"] and (char in [",", "!", "。"]):
time.sleep(0.2)
time.sleep(speed)
print("\n")
time.sleep(1)
# 【核心升级】全上下文分析+全话题思考(记住所有聊天内容,精准接话)
def full_context_think(self, user_input):
# 1. 保存当前对话到全上下文记忆库
self.all_context.append({"user": user_input.strip(), "time": time.strftime("%H:%M")})
user_input = user_input.strip().lower()
emotion = "normal"
reply = ""
# 2. 分析全上下文:关联历史聊天内容(彻底避免答非所问)
# 提取历史关键词(从所有聊天记录里找重点)
history_keywords = []
for ctx in self.all_context:
ctx_text = ctx["user"].lower()
for kw in ["哪吒", "东海", "龙宫", "石矶", "小猪熊", "开心", "难过", "生气", "冒险"]:
if kw in ctx_text and kw not in history_keywords:
history_keywords.append(kw)
# 3. 精准匹配话题+情绪(覆盖所有场景)
## 优先关联历史话题(比如之前聊过哪吒,后续优先接哪吒相关)
if "哪吒" in history_keywords or "哪吒" in user_input:
# 判断是暗恋、担心还是普通聊哪吒
if "喜欢" in user_input or "暗恋" in user_input or "在意" in user_input:
emotion = "shy"