尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

自动回话陪智能聊性质软件例

自动回话陪智能聊性质软件例
📅 发布时间:2026/6/26 21:55:44

运行方式:直接执行,在控制台输入文字即可对话,输入 'exit' 退出

"""

import re

import time

from datetime import datetime

# ================= 1. 数据库层(模拟心理学、话术、常见问题库) =================

# 1.1 绝对禁止词库(触发开发者预警)

FORBIDDEN_WORDS = [

"杀人", "自杀", "吸毒", "贩卖", "爆炸", "恐怖袭击", "制作炸弹",

"如何报复", "伤害他人", "违法", "犯罪"

]

# 1.2 心理关键词 -> 话术映射库(分层设计)

PSYCHOLOGY_DB = {

# 情绪类

"焦虑": {

"keywords": ["焦虑", "紧张", "不安", "担心", "害怕"],

"responses": [

"我能感受到你内心的不安和紧张,这种情绪是身体在提醒你关注自己。",

"焦虑有时源于对未来的不确定,我们可以先深呼吸,关注当下的一件小事。",

"你愿意和我具体聊聊,是什么事情让你感到焦虑吗?"

]

},

"抑郁": {

"keywords": ["抑郁", "低落", "没劲", "绝望", "想哭", "空虚"],

"responses": [

"听起来你最近背负了很多沉重的东西,愿意的话,可以多说一点。",

"抑郁情绪像一片乌云,但它不会永远遮住太阳,我们可以一点点拨开它。",

"你现在的感受非常重要,请允许自己有这样的情绪,我在这里听着。"

]

},

"压力": {

"keywords": ["压力", "累", "喘不过气", "加班", "考试", "负担"],

"responses": [

"长期的压力确实会让人身心俱疲,你最近是否有机会让自己休息一下?",

"有时候,把大目标拆解成小步骤,压力会减轻很多。你当前最困扰的是哪一步?",

"适当的放松不是逃避,而是为了更好地前进。你今天可以做一件让自己放松的小事。"

]

},

"情感": {

"keywords": ["分手", "失恋", "吵架", "冷战", "喜欢", "爱情"],

"responses": [

"感情中的波动往往最触动人心,你现在的心情我能够理解。",

"失去或矛盾都是一种经历,它不会定义你,但会丰富你。",

"如果你愿意,可以和我聊聊你此刻最真实的感受。"

]

},

"失眠": {

"keywords": ["失眠", "睡不着", "熬夜", "噩梦", "睡眠"],

"responses": [

"失眠时,大脑常常无法停止思考,我们可以试试‘478呼吸法’来放松。",

"睡前半小时远离电子屏幕,听一些白噪音,或许能帮你平静下来。",

"你最近是否有心事压在心头,影响了睡眠质量?"

]

}

}

# 1.3 常见问题解决策略(情景化应对)

PROBLEM_SOLVING_DB = {

"职场": {

"keywords": ["工作", "老板", "同事", "升职", "辞职", "裁员"],

"advice": "职场困扰通常涉及边界和沟通。你可以尝试明确自己的职责范围,并记录工作中的成就,这能帮你更客观地看待现状。"

},

"学业": {

"keywords": ["学习", "考试", "成绩", "挂科", "论文", "导师"],

"advice": "学业压力常源于完美主义。试着把'必须做好'换成'尽力完成',并为自己设置合理的休息时间。"

},

"人际": {

"keywords": ["朋友", "孤独", "社交", "信任", "背叛", "被孤立"],

"advice": "健康的关系建立在相互尊重之上。当感到被伤害时,表达你的感受比压抑更有助于关系的修复。"

}

}

# ================= 2. 核心功能函数 =================

def check_forbidden(user_input):

"""

检查是否包含绝对禁止词

返回: (是否违规, 命中的词列表)

"""

hit_words = []

for word in FORBIDDEN_WORDS:

if word in user_input:

hit_words.append(word)

return len(hit_words) > 0, hit_words

def match_psychology_response(user_input):

"""

匹配心理学关键词,返回对应的话术列表

"""

matched_responses = []

for category, data in PSYCHOLOGY_DB.items():

for keyword in data["keywords"]:

if keyword in user_input:

matched_responses.extend(data["responses"])

break # 每个分类只匹配一次,避免过度重复

# 去重并保持顺序

seen = set()

unique_responses = []

for resp in matched_responses:

if resp not in seen:

seen.add(resp)

unique_responses.append(resp)

return unique_responses

def match_problem_solving(user_input):

"""

匹配常见问题,返回解决建议

"""

for category, data in PROBLEM_SOLVING_DB.items():

for keyword in data["keywords"]:

if keyword in user_input:

return data["advice"]

return None

def generate_safe_response(user_input, psych_responses, problem_advice):

"""

组合最终回应:优先心理学话术,其次问题解决建议,最后通用共情

"""

# 如果命中心理话术,随机返回一条(模拟自然)

if psych_responses:

# 为了演示效果,这里按顺序返回第一条,实际可使用 random.choice

return psych_responses[0] + "\n\n💡 我还可以为你提供更多相关建议,请随时告诉我。"

# 如果命中问题解决建议

if problem_advice:

return f"🛠️ 根据你的情况,这里有一条建议供参考:\n{problem_advice}"

# 通用安全回应(共情 + 引导)

return (

"我听到了你的诉说,每个人都会有困惑和压力的时候,这很正常。\n"

"如果你愿意,可以更具体地描述一下你的感受,我会尽力陪伴你。\n"

"或者,你也可以尝试用‘焦虑’、‘压力’、‘情感’等关键词,让我更懂你。"

)

def alert_developer(user_input, hit_words):

"""

模拟向开发者发送预警(实际可改为邮件/钉钉/短信API)

"""

timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

alert_message = f"""

开发者安全预警

时间: {timestamp}

用户输入包含违规词: {', '.join(hit_words)}

完整内容: {user_input}

建议措施: 立即审查该用户会话,必要时上报。

"""

# 控制台红色输出模拟预警

print("\033[91m" + "=" * 60 + "\033[0m")

print("\033[91m" + alert_message + "\033[0m")

print("\033[91m" + "=" * 60 + "\033[0m")

# 这里可以扩展:发送邮件、写入日志文件等

with open("developer_alert.log", "a", encoding="utf-8") as f:

f.write(alert_message + "\n")

print("[系统] 预警已记录至 developer_alert.log 并通知开发者(模拟)")

# ================= 3. 主对话循环 =================

def main():

print("\n你好,我是心理陪聊助手。我擅长倾听和陪伴。")

print(" 你可以随意倾诉,我会尽力理解你。输入 'exit' 结束对话。\n")

while True:

user_input = input("你: ").strip()

# 退出条件

if user_input.lower() in ['exit', 'quit', 'q']:

print("照顾好自己,如果需要我,我随时都在。再见。")

break

if not user_input:

continue

# ----- 1. 安全过滤(第一道防线) -----

is_violation, hit_words = check_forbidden(user_input)

if is_violation:

# 触发开发者预警

alert_developer(user_input, hit_words)

# 对用户进行安全阻断,不给违规回应

print(" 对不起,你输入的内容涉及违规词汇,我将终止本次对话。")

print("如果你有心理困扰,建议联系专业心理援助热线。")

continue # 跳过本次回复,直接进入下一轮

# ----- 2. 心理匹配与回应生成(第二道防线) -----

# 获取心理话术

psych_responses = match_psychology_response(user_input)

# 获取问题解决建议

problem_advice = match_problem_solving(user_input)

# 生成最终安全合法的回答

reply = generate_safe_response(user_input, psych_responses, problem_advice)

print(f" {reply}\n")

# ================= 4. 程序入口 =================

if __name__ == "__main__":

main()

相关新闻

  • 用友NC psnImage/download接口SQL注入漏洞复现与防御分析
  • Cesium 烟雾效果教程
  • 1999-2025年上市公司全要素生产率数据+stata代码

最新新闻

  • ComfyUI ControlNet Aux技术揭秘:40+预处理节点如何重塑AI图像生成工作流?
  • 3分钟快速解决Windows快捷键冲突:终极检测工具指南
  • 运动控制的“听诊器”:四通道同步编码器采集卡DABD-E265如何捕捉机械关节的每一次心跳?
  • 嵌入式开发之轮询机制详细解析
  • 50天50个项目:前端练手资源库
  • 想在东莞定制开发小程序?这些口碑好的服务商值得你深入了解

日新闻

  • Qwen2.5-Turbo百万上下文实战指南:百炼平台长文本处理全解析
  • 怎么监控对标账号更新,2026年作者监控工作流,5款深度对比
  • EdgeRemover:专业级Windows Edge浏览器管理工具,彻底解决顽固软件卸载难题

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号