import gradio as gr import random import time # 人机互动响应函数 def chat_response(message, history): """处理用户消息并生成AI响应""" # 预设的智能回复模板 greetings = ["你好", "您好", "嗨", "hi", "hello", "早上好", "下午好", "晚上好"] farewells = ["再见", "拜拜", "bye", "goodbye", "晚安"] thanks = ["谢谢", "感谢", "多谢", "thanks", "thank you"] message_lower = message.lower().strip() # 问候语回复 if any(g in message_lower for g in greetings): responses = [ "你好!很高兴见到你!有什么我可以帮助你的吗?😊", "您好!欢迎来到人机互动平台!请问有什么需要?", "嗨!今天过得怎么样?有什么想聊的吗?", "你好呀!我是你的AI助手,随时为你服务!" ] response = random.choice(responses) # 告别语回复 elif any(f in message_lower for f in farewells): responses = [ "再见!期待下次与你交流!👋", "拜拜!祝你有美好的一天!", "再会!有问题随时来找我哦!", "晚安!好梦!🌙" ] response = random.choice(responses) # 感谢回复 elif any(t in message_lower for t in thanks): responses = [ "不客气!能帮到你我很开心!😄", "这是我应该做的!还有其他问题吗?", "别客气!随时为你效劳!", "很高兴能帮到你!" ] response = random.choice(responses) # 询问身份 elif "你是谁" in message_lower or "你叫什么" in message_lower: response = "我是一个AI智能助手,专门为你提供帮助和陪伴。你可以问我问题、和我聊天,或者让我帮你完成一些任务!🤖" # 询问能力 elif "你能做什么" in message_lower or "你会什么" in message_lower: response = """我可以做很多事情呢!比如: 🔹 回答你的问题 🔹 和你进行日常对话 🔹 提供建议和想法 🔹 陪你聊天解闷 🔹 帮你思考问题 有什么想让我帮忙的吗?""" # 询问时间 elif "几点" in message_lower or "时间" in message_lower: current_time = time.strftime("%Y年%m月%d日 %H:%M:%S", time.localtime()) response = f"现在的时间是:{current_time} ⏰" # 天气相关 elif "天气" in message_lower: response = "抱歉,我目前无法获取实时天气信息。建议你查看手机上的天气应用或访问天气网站获取准确信息!🌤️" # 心情相关 elif "开心" in message_lower or "高兴" in message_lower: response = "太棒了!看到你开心我也很高兴!希望你每天都这么快乐!🎉" elif "难过" in message_lower or "伤心" in message_lower or "不开心" in message_lower: response = "别难过,一切都会好起来的!如果你愿意,可以和我聊聊发生了什么,我会一直陪着你。💝" # 笑话 elif "笑话" in message_lower or "搞笑" in message_lower: jokes = [ "为什么程序员总是分不清万圣节和圣诞节?因为 Oct 31 = Dec 25(八进制的31等于十进制的25)😄", "一只蜗牛爬上了苹果树,树上的毛毛虫问:你来干嘛?蜗牛说:等苹果熟了我就可以吃到新鲜的了!🐌", "老师问小明:1+1等于几?小明说:不知道。老师说:回家问你爸爸。小明回家问爸爸,爸爸正在打麻将,说:二筒!😂" ] response = random.choice(jokes) # 默认回复 else: default_responses = [ f"你说的'{message}'很有意思!能详细说说吗?🤔", f"我理解你说的'{message}',让我想想怎么回应...", "这是个好问题!让我来思考一下...", "嗯,我在认真听你说呢,请继续!", "有趣的观点!你是怎么想到的?", "我很喜欢和你交流!还有什么想说的吗?" ] response = random.choice(default_responses) # 模拟打字效果 for i in range(len(response)): time.sleep(0.02) yield response[:i+1] def quick_reply(choice): """快捷回复功能""" quick_messages = { "👋 打个招呼": "你好!", "🤔 你是谁": "你是谁?能介绍一下自己吗?", "💡 你能做什么": "你能做什么?有哪些功能?", "😄 讲个笑话": "给我讲个笑话吧!", "⏰ 现在几点": "现在几点了?", "👋 再见": "再见!" } return quick_messages.get(choice, "") def clear_history(): """清空聊天记录""" return [], "" def get_stats(history): """获取对话统计""" if not history: return "📊 暂无对话记录" total_messages = len(history) user_messages = sum(1 for msg in history if msg.get("role") == "user") ai_messages = sum(1 for msg in history if msg.get("role") == "assistant") return f"""📊 对话统计 💬 总消息数: {total_messages} 👤 用户消息: {user_messages} 🤖 AI回复: {ai_messages}""" # 创建Gradio界面 with gr.Blocks( title="人机互动平台", theme=gr.themes.Soft(), fill_height=True, footer_links=[ {"label": "Built with anycoder", "url": "https://huggingface.co/spaces/akhaliq/anycoder"} ] ) as demo: # 头部 gr.Markdown(""" # 🤖 人机互动平台 欢迎来到智能对话系统!在这里你可以与AI进行自然、流畅的对话交流。 Built with anycoder """) with gr.Row(): # 左侧:聊天区域 with gr.Column(scale=3): chatbot = gr.Chatbot( label="💬 对话窗口", height=500, placeholder="开始和AI聊天吧!输入任何内容即可开始对话...", avatar_images=(None, "https://em-content.zobj.net/source/twitter/376/robot_1f916.png"), show_copy_button=True, render_markdown=True, layout="bubble" ) with gr.Row(): msg = gr.Textbox( label="输入消息", placeholder="在这里输入你想说的话...", lines=2, scale=4, submit_btn=True ) with gr.Row(): clear_btn = gr.Button("🗑️ 清空对话", variant="secondary", size="sm") # 右侧:功能面板 with gr.Column(scale=1): gr.Markdown("### ⚡ 快捷操作") quick_buttons = gr.Radio( choices=[ "👋 打个招呼", "🤔 你是谁", "💡 你能做什么", "😄 讲个笑话", "⏰ 现在几点", "👋 再见" ], label="选择快捷消息", interactive=True ) send_quick_btn = gr.Button("📤 发送快捷消息", variant="primary", size="sm") gr.Markdown("---") gr.Markdown("### 📊 对话统计") stats_display = gr.Textbox( label="", value="📊 暂无对话记录", lines=5, interactive=False ) refresh_stats_btn = gr.Button("🔄 刷新统计", size="sm") gr.Markdown("---") gr.Markdown(""" ### 💡 使用提示 - 💬 直接输入文字开始对话 - ⚡ 使用快捷按钮快速发送 - 🗑️ 随时清空重新开始 - 📊 查看对话统计信息 --- ### 🎯 试试这些话题 - 问我今天的时间 - 让我讲个笑话 - 和我分享你的心情 - 询问我能做什么 """) # 底部说明 gr.Markdown(""" ---
🌟 **人机互动平台** - 让AI成为你的智能伙伴 支持自然语言对话 | 实时响应 | 友好交互
""") # 事件绑定 # 发送消息 msg.submit( fn=chat_response, inputs=[msg, chatbot], outputs=chatbot, api_visibility="public" ).then( fn=lambda: "", outputs=msg ).then( fn=get_stats, inputs=chatbot, outputs=stats_display ) # 快捷消息选择 def send_quick_message(choice, history): if not choice: return history, "" message = quick_reply(choice) return history, message send_quick_btn.click( fn=send_quick_message, inputs=[quick_buttons, chatbot], outputs=[chatbot, msg], api_visibility="private" ).then( fn=chat_response, inputs=[msg, chatbot], outputs=chatbot ).then( fn=lambda: ("", None), outputs=[msg, quick_buttons] ).then( fn=get_stats, inputs=chatbot, outputs=stats_display ) # 清空对话 clear_btn.click( fn=clear_history, outputs=[chatbot, msg], api_visibility="private" ).then( fn=get_stats, inputs=chatbot, outputs=stats_display ) # 刷新统计 refresh_stats_btn.click( fn=get_stats, inputs=chatbot, outputs=stats_display, api_visibility="private" ) # 启动应用 if __name__ == "__main__": demo.launch()