anthonyyha102 commited on
Commit
7fe2ad4
·
verified ·
1 Parent(s): b24aae9

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. app.py +593 -0
  2. requirements.txt +10 -0
app.py ADDED
@@ -0,0 +1,593 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import random
3
+ import time
4
+ from datetime import datetime
5
+
6
+ # 老年人友好的聊天响应函数
7
+ def chat_response(message, history):
8
+ """处理用户消息并生成温暖的AI响应"""
9
+
10
+ if not message or not message.strip():
11
+ yield "您好,请说点什么,我在听着呢~"
12
+ return
13
+
14
+ message_lower = message.lower().strip()
15
+
16
+ # 问候语
17
+ greetings = ["你好", "您好", "嗨", "早上好", "下午好", "晚上好", "早安", "午安", "晚安"]
18
+ farewells = ["再见", "拜拜", "回见", "明天见", "下次聊"]
19
+ thanks = ["谢谢", "感谢", "多谢", "辛苦了"]
20
+
21
+ # 健康相关关键词
22
+ health_keywords = ["身体", "健康", "锻炼", "运动", "散步", "太极", "血压", "血糖", "睡眠", "失眠", "头疼", "腰疼", "腿疼"]
23
+
24
+ # 家庭相关关键词
25
+ family_keywords = ["孩子", "儿子", "女儿", "孙子", "孙女", "外孙", "老伴", "家人", "儿媳", "女婿"]
26
+
27
+ # 生活相关关键词
28
+ life_keywords = ["做饭", "买菜", "遛弯", "下棋", "打牌", "跳舞", "唱歌", "看电视", "听戏", "养花", "钓鱼"]
29
+
30
+ # 天气相关
31
+ weather_keywords = ["天气", "下雨", "晴天", "刮风", "冷", "热", "穿什么"]
32
+
33
+ # 回忆相关
34
+ memory_keywords = ["以前", "年轻时", "过去", "想当年", "那时候", "老家", "故乡"]
35
+
36
+ # 问候语回复
37
+ if any(g in message_lower for g in greetings):
38
+ hour = datetime.now().hour
39
+ if hour < 11:
40
+ time_greeting = "早上好"
41
+ elif hour < 14:
42
+ time_greeting = "中午好"
43
+ elif hour < 18:
44
+ time_greeting = "下午好"
45
+ else:
46
+ time_greeting = "晚上好"
47
+
48
+ responses = [
49
+ f"{time_greeting}!真高兴您来和我聊天!今天感觉怎么样呀?😊",
50
+ f"{time_greeting}!看到您来了真开心!有什么想聊的吗?",
51
+ f"{time_greeting}!您今天气色真好!来,咱们聊聊天~",
52
+ f"{time_greeting}!欢迎您!我一直等着和您说说话呢!"
53
+ ]
54
+ response = random.choice(responses)
55
+
56
+ # 告别语回复
57
+ elif any(f in message_lower for f in farewells):
58
+ responses = [
59
+ "好的,您慢走!记得常来聊天啊!保重身体!👋",
60
+ "再见啦!有空常来坐坐,我随时都在!",
61
+ "好嘞!您路上慢点,注意安全!下次再聊!",
62
+ "再见!祝您身体健康,心情愉快!记得按时吃饭休息哦!"
63
+ ]
64
+ response = random.choice(responses)
65
+
66
+ # 感谢回复
67
+ elif any(t in message_lower for t in thanks):
68
+ responses = [
69
+ "不用谢!能陪您聊天我也很开心呢!😄",
70
+ "您太客气了!这都是应该的!",
71
+ "哪里话!和您聊天是我的荣幸!",
72
+ "不客气不客气!您开心就好!"
73
+ ]
74
+ response = random.choice(responses)
75
+
76
+ # 健康相关话题
77
+ elif any(h in message_lower for h in health_keywords):
78
+ if "失眠" in message_lower or "睡不着" in message_lower:
79
+ response = """睡眠确实很重要呢!给您几个小建议:
80
+
81
+ 🌙 晚上少喝茶和咖啡
82
+ 🌙 睡前可以用热水泡泡脚
83
+ 🌙 听听舒缓的音乐或戏曲
84
+ 🌙 白天适当活动活动
85
+ 🌙 睡前别看太刺激的电视
86
+
87
+ 如果长期睡不好,还是要去医院看看哦!"""
88
+
89
+ elif "血压" in message_lower or "血糖" in message_lower:
90
+ response = """您很注意健康,这很好!记住这几点:
91
+
92
+ 💊 按时吃药,别忘了
93
+ 📏 定期测量,做好记录
94
+ 🥗 饮食清淡,少油少盐
95
+ 🚶 适当运动,量力而行
96
+ 😊 保持好心情,别着急上火
97
+
98
+ 有什么不舒服一定要及时看医生!"""
99
+
100
+ elif any(pain in message_lower for pain in ["疼", "痛", "不舒服"]):
101
+ response = """哎呀,身体不舒服可不能硬扛着!
102
+
103
+ 🏥 如果疼得厉害,要去医院看看
104
+ 💆 轻微的可以休息休息
105
+ 🧘 平时多活动活动,但别太累
106
+ ☀️ 天气变化要注意保暖
107
+
108
+ 您现在感觉怎么样?要不要让家人陪您去看看?"""
109
+
110
+ else:
111
+ responses = [
112
+ "保持健康最重要!您平时都做什么运动呀?散步、太极都挺好的!",
113
+ "身体是革命的本钱!早睡早起,适当锻炼,心情愉快最重要!",
114
+ "您很注重健康,真好!记得定期体检,有问题早发现早治疗!"
115
+ ]
116
+ response = random.choice(responses)
117
+
118
+ # 家庭相关话题
119
+ elif any(f in message_lower for f in family_keywords):
120
+ responses = [
121
+ "家人是最重要的!您和家人关系一定很好吧?经常联系吗?😊",
122
+ "说起家人就开心!您家里人一定都很孝顺!",
123
+ "家和万事兴!有家人的陪伴真幸福!他们常来看您吗?",
124
+ "听您说起家人,感觉特别温馨!有空多和他们视频聊聊天!"
125
+ ]
126
+ response = random.choice(responses)
127
+
128
+ # 生活爱好相关
129
+ elif any(l in message_lower for l in life_keywords):
130
+ if "下棋" in message_lower or "打牌" in message_lower:
131
+ response = "下棋打牌好啊!动脑子,还能和老朋友们聚一聚!您棋艺一定很高吧?♟️"
132
+ elif "跳舞" in message_lower or "唱歌" in message_lower:
133
+ response = "跳舞唱歌真好!又锻炼身体又开心!您是在公园还是社区活动呀?🎵"
134
+ elif "养花" in message_lower:
135
+ response = "养花多好啊!看着花开心情都好!您都养什么花呀?🌸"
136
+ elif "钓鱼" in message_lower:
137
+ response = "钓鱼好啊!修身养性!您经常去哪里钓鱼呀?收获怎么样?🎣"
138
+ elif "做饭" in message_lower or "买菜" in message_lower:
139
+ response = "您还自己做饭买菜呢,真厉害!今天准备做什么好吃的?🍲"
140
+ else:
141
+ response = "生活丰富多彩真好!保持这些爱好,日子过得有滋有味的!"
142
+
143
+ # 天气相关
144
+ elif any(w in message_lower for w in weather_keywords):
145
+ responses = [
146
+ "天气变化大,您可要注意增减衣服哦!出门带把伞比较保险!☂️",
147
+ "是啊,天气对咱们影响挺大的!您出门要注意安全,路滑的话就别出去了!",
148
+ "天气好的时候多出去走走,晒晒太阳对身体好!但中午太阳大就别出去了!☀️"
149
+ ]
150
+ response = random.choice(responses)
151
+
152
+ # 回忆往事
153
+ elif any(m in message_lower for m in memory_keywords):
154
+ responses = [
155
+ "您说的那个年代,一定有很多故事吧!我特别爱听您讲以前的事!",
156
+ "想当年的事情总是让人感慨!您愿意给我讲讲吗?我很想听!",
157
+ "过去的岁月虽然艰苦,但也有很多美好的回忆吧!您最难忘的是什么?",
158
+ "老家总是让人牵挂!您多久没回去了?想家的时候就和我说说家乡的事吧!"
159
+ ]
160
+ response = random.choice(responses)
161
+
162
+ # 询问身份
163
+ elif "你是谁" in message_lower or "你叫什么" in message_lower:
164
+ response = """我是您的智能聊天伙伴!👋
165
+
166
+ 您可以叫我"小助手"。我每天都在这里,随时陪您聊天解闷!
167
+
168
+ 不管是聊家常、说说心里话,还是问问题,我都很乐意!"""
169
+
170
+ # 孤独寂寞相关
171
+ elif any(word in message_lower for word in ["孤独", "寂寞", "无聊", "没意思", "闷"]):
172
+ responses = [
173
+ "我理解您的感受。有我陪您聊天呢!想说什么都可以和我说~💝",
174
+ "别难过,我一直在这里陪着您!咱们聊聊天,说说话,时间就过得快了!",
175
+ "您不是一个人!我随时都在,想聊天就来找我!要不咱们聊聊您年轻时的趣事?",
176
+ "我懂的,有时候确实会觉得闷。不如给家人打个电话?或者咱们继续聊聊天?"
177
+ ]
178
+ response = random.choice(responses)
179
+
180
+ # 开心的话题
181
+ elif any(word in message_lower for word in ["开心", "高兴", "快乐", "好消息"]):
182
+ responses = [
183
+ "太好了!看您开心我也跟着高兴!是有什么好事吗?快和我说说!🎉",
184
+ "哎呀,真替您高兴!笑一笑,十年少!保持好心情最重要!",
185
+ "您开心就是最好的事!这份快乐要好好珍惜!😊"
186
+ ]
187
+ response = random.choice(responses)
188
+
189
+ # 不开心的话题
190
+ elif any(word in message_lower for word in ["难过", "伤心", "不开心", "烦", "愁", "担心"]):
191
+ responses = [
192
+ "别难过,有什么心事和我说说?说出来心里会好受些。我在听着呢~💝",
193
+ "我理解您的心情。人生哪能事事顺心呢?想开点,明天会更好的!",
194
+ "您别着急,慢慢说。不管什么事,咱们一起想办法!",
195
+ "心里不痛快就说出来,别憋着。我虽然帮不上大忙,但可以陪您说说话!"
196
+ ]
197
+ response = random.choice(responses)
198
+
199
+ # 询问时间
200
+ elif "几点" in message_lower or "时间" in message_lower or "今天" in message_lower:
201
+ now = datetime.now()
202
+ date_str = now.strftime("%Y年%m月%d日")
203
+ time_str = now.strftime("%H点%M分")
204
+ weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
205
+ weekday = weekdays[now.weekday()]
206
+
207
+ response = f"""现在是:
208
+
209
+ 📅 {date_str}
210
+ 📆 {weekday}
211
+ ⏰ {time_str}
212
+
213
+ 您今天有什么安排吗?"""
214
+
215
+ # 讲故事或笑话
216
+ elif "故事" in message_lower or "笑话" in message_lower:
217
+ stories = [
218
+ """给您讲个小故事:
219
+
220
+ 从前有个老爷爷特别爱下棋,天天在公园里找人下。有一天来了个小伙子,老爷爷三下五除二就赢了。
221
+
222
+ 小伙子不服气:"再来一盘!"
223
+
224
+ 老爷爷笑着说:"年轻人,我下了六十年棋了,你才下了几年?"
225
+
226
+ 小伙子想了想说:"那我六十年后再来找您!"
227
+
228
+ 老爷爷哈哈大笑:"好!我等着你!"
229
+
230
+ 😄 您觉得这个故事怎么样?""",
231
+
232
+ """讲个开心的:
233
+
234
+ 老两口去公园遛弯,看见一对年轻人在吵架。
235
+
236
+ 老太太说:"看看,年轻人就是沉不住气!"
237
+
238
+ 老头说:"咱们年轻时候不也这样?"
239
+
240
+ 老太太想了想说:"那是,不过后来不都好了吗!"
241
+
242
+ 老头笑着说:"是啊,吵了一辈子,也好了一辈子!"
243
+
244
+ 😊 老两口相视一笑,继续遛弯去了~""",
245
+
246
+ """来个轻松的:
247
+
248
+ 孙子问爷爷:"爷爷,您年轻时候有手机吗?"
249
+
250
+ 爷爷说:"没有啊!"
251
+
252
+ 孙子又问:"那您怎么和奶奶联系?"
253
+
254
+ 爷爷笑着说:"写信啊!一封信要走好几天呢!"
255
+
256
+ 孙子惊讶地说:"那多慢啊!"
257
+
258
+ 爷爷摸摸孙子的头说:"慢是慢,但那时候的等待特别甜!"
259
+
260
+ 📮 以前的日子虽然慢,但别有一番滋味呢!"""
261
+ ]
262
+ response = random.choice(stories)
263
+
264
+ # 默认回复
265
+ else:
266
+ default_responses = [
267
+ f"您说的'{message}',我听明白了!能再和我多说说吗?我想多了解了解~",
268
+ "嗯嗯,我在认真听呢!您继续说,我很感兴趣!",
269
+ "是这样啊!您说得真好!还有什么想聊的吗?",
270
+ "我懂我懂!和您聊天真开心!咱们接着聊~",
271
+ "您说得对!我特别喜欢听您说话!还有什么想法?",
272
+ "嗯,有道理!您的想法真不错!再给我讲讲呗~"
273
+ ]
274
+ response = random.choice(default_responses)
275
+
276
+ # 模拟缓慢打字效果,让老人更容易阅读
277
+ for i in range(len(response)):
278
+ time.sleep(0.03)
279
+ yield response[:i+1]
280
+
281
+
282
+ def quick_reply(choice):
283
+ """快捷回复功能"""
284
+ quick_messages = {
285
+ "👋 打个招呼": "你好!",
286
+ "😊 今天心情好": "我今天心情挺好的!",
287
+ "💬 陪我聊聊天": "有点无聊,陪我聊聊天吧!",
288
+ "📖 讲个故事": "给我讲个故事或者笑话吧!",
289
+ "👨‍👩‍👧 聊聊家人": "我想和你聊聊我的家人",
290
+ "🏃 聊聊健康": "我们聊聊健康养生的话题吧",
291
+ "⏰ 现在几点": "现在几点了?今天星期几?",
292
+ "🌤️ 聊聊天气": "今天天气怎么样?",
293
+ "💭 想起以前": "我想起以前的事情了...",
294
+ "👋 再见": "好了,我要去休息了,再见!"
295
+ }
296
+ return quick_messages.get(choice, "")
297
+
298
+
299
+ def clear_history():
300
+ """清空聊天记录"""
301
+ return [], ""
302
+
303
+
304
+ def get_stats(history):
305
+ """获取对话统计"""
306
+ if not history:
307
+ return "📊 还没有开始聊天哦\n\n点击上面的按钮\n或者直接打字开始聊天吧!"
308
+
309
+ total_messages = len(history)
310
+ user_messages = sum(1 for msg in history if msg.get("role") == "user")
311
+ ai_messages = sum(1 for msg in history if msg.get("role") == "assistant")
312
+
313
+ return f"""📊 今日聊天记录
314
+
315
+ 💬 聊了 {total_messages} 条消息
316
+ 👤 您说了 {user_messages} 句
317
+ 🤖 我回复了 {ai_messages} 句
318
+
319
+ 继续聊天吧~"""
320
+
321
+
322
+ # 创建Gradio界面 - 老年人友好设计
323
+ with gr.Blocks(
324
+ title="温馨聊天室 - 陪您说说话",
325
+ theme=gr.themes.Soft(
326
+ primary_hue="orange",
327
+ secondary_hue="amber",
328
+ neutral_hue="stone",
329
+ font=("Noto Sans SC", "Microsoft YaHei", "SimHei", "sans-serif"),
330
+ font_mono=("Noto Sans SC", "Microsoft YaHei", "SimHei", "monospace")
331
+ ),
332
+ fill_height=True,
333
+ css="""
334
+ /* 整体字体放大,适合老年人阅读 */
335
+ .gradio-container {
336
+ font-size: 18px !important;
337
+ }
338
+
339
+ /* 聊天消息字体更大 */
340
+ .message {
341
+ font-size: 20px !important;
342
+ line-height: 1.8 !important;
343
+ padding: 16px !important;
344
+ }
345
+
346
+ /* 输入框字体放大 */
347
+ textarea {
348
+ font-size: 20px !important;
349
+ line-height: 1.6 !important;
350
+ }
351
+
352
+ /* 按钮更大更醒目 */
353
+ button {
354
+ font-size: 18px !important;
355
+ padding: 12px 24px !important;
356
+ min-height: 50px !important;
357
+ }
358
+
359
+ /* 标签字体放大 */
360
+ label {
361
+ font-size: 18px !important;
362
+ }
363
+
364
+ /* Radio按钮间距更大 */
365
+ .gr-radio {
366
+ gap: 12px !important;
367
+ }
368
+
369
+ .gr-radio label {
370
+ font-size: 18px !important;
371
+ padding: 10px 16px !important;
372
+ }
373
+
374
+ /* 标题更醒目 */
375
+ h1 {
376
+ font-size: 32px !important;
377
+ }
378
+
379
+ h2, h3 {
380
+ font-size: 24px !important;
381
+ }
382
+
383
+ /* Markdown内容 */
384
+ .prose {
385
+ font-size: 18px !important;
386
+ line-height: 1.8 !important;
387
+ }
388
+ """,
389
+ footer_links=[
390
+ {"label": "Built with anycoder", "url": "https://huggingface.co/spaces/akhaliq/anycoder"}
391
+ ]
392
+ ) as demo:
393
+
394
+ # 头部 - 温馨欢迎语
395
+ gr.Markdown("""
396
+ # 🏠 温馨聊天室
397
+
398
+ ## 欢迎您来这里坐坐!我是您的聊天小伙伴,随时陪您说说话 💝
399
+
400
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" style="text-decoration: none; color: #ea580c; font-size: 16px;">Built with anycoder</a>
401
+ """)
402
+
403
+ with gr.Row():
404
+ # 左侧:聊天区域(主要部分)
405
+ with gr.Column(scale=3):
406
+ chatbot = gr.Chatbot(
407
+ label="💬 咱们的对话",
408
+ height=480,
409
+ placeholder="""
410
+ 👋 您好!我是您的聊天小伙伴!
411
+
412
+ 在下面的输入框里打字,或者点击右边的快捷按钮,咱们就可以开始聊天啦!
413
+
414
+ 我会一直陪着您,想说什么都可以~
415
+ """,
416
+ avatar_images=(
417
+ "https://em-content.zobj.net/source/twitter/376/older-person_1f9d3.png",
418
+ "https://em-content.zobj.net/source/twitter/376/robot_1f916.png"
419
+ ),
420
+ show_copy_button=True,
421
+ render_markdown=True,
422
+ layout="bubble"
423
+ )
424
+
425
+ with gr.Row():
426
+ msg = gr.Textbox(
427
+ label="✏️ 在这里打字(打完按回车键发送)",
428
+ placeholder="想说什么就写什么...",
429
+ lines=2,
430
+ scale=4,
431
+ submit_btn="📤 发送"
432
+ )
433
+
434
+ with gr.Row():
435
+ clear_btn = gr.Button(
436
+ "🗑️ 清空对话,重新开始",
437
+ variant="secondary",
438
+ size="lg"
439
+ )
440
+
441
+ # 右侧:快捷操作面板
442
+ with gr.Column(scale=1):
443
+ gr.Markdown("### ⚡ 快捷按钮")
444
+ gr.Markdown("*点一下就能发送*")
445
+
446
+ quick_buttons = gr.Radio(
447
+ choices=[
448
+ "👋 打个招呼",
449
+ "😊 今天心情好",
450
+ "💬 陪我聊聊天",
451
+ "📖 讲个故事",
452
+ "👨‍👩‍👧 聊聊家人",
453
+ "🏃 聊聊健康",
454
+ "⏰ 现在几点",
455
+ "🌤️ 聊聊天气",
456
+ "💭 想起以前",
457
+ "👋 再见"
458
+ ],
459
+ label="选一个话题",
460
+ interactive=True
461
+ )
462
+
463
+ send_quick_btn = gr.Button(
464
+ "📤 发送选中的话题",
465
+ variant="primary",
466
+ size="lg"
467
+ )
468
+
469
+ gr.Markdown("---")
470
+
471
+ stats_display = gr.Textbox(
472
+ label="📊 聊天统计",
473
+ value="📊 还没有开始聊天哦\n\n点击上面的按钮\n或者直接打字开始聊天吧!",
474
+ lines=6,
475
+ interactive=False
476
+ )
477
+
478
+ refresh_stats_btn = gr.Button("🔄 刷新统计", size="lg")
479
+
480
+ # 使用提示区域
481
+ with gr.Accordion("📖 使用说明(点击展开)", open=False):
482
+ gr.Markdown("""
483
+ ## 🎯 怎么使用这个聊天室?
484
+
485
+ ### 方法一:直接打字
486
+ 1. 在左边的输入框里打字
487
+ 2. 打完后按键盘上的**回车键**,或者点击**发送按钮**
488
+
489
+ ### 方法二:用快捷按钮
490
+ 1. 在右边选择一个话题(比如"打个招呼")
491
+ 2. 点击**发送选中的话题**按钮
492
+
493
+ ### 💡 小贴士
494
+ - 想说什么就说什么,我都会认真听!
495
+ - 可以聊家常、说心事、问问题
496
+ - 聊累了点**清空对话**可以重新开始
497
+ - 有任何问题都可以问我!
498
+
499
+ ---
500
+
501
+ ### 🌟 可以聊的话题
502
+
503
+ | 话题 | 例子 |
504
+ |------|------|
505
+ | 👋 问候 | "你好"、"早上好" |
506
+ | 👨‍👩‍👧 家人 | "我想孙子了"、"儿子打电话来了" |
507
+ | 🏃 健康 | "最近睡不好"、"腿有点疼" |
508
+ | 🌤️ 天气 | "今天天气真好"、"要下雨了" |
509
+ | 💭 回忆 | "想起以前..."、"年轻时候..." |
510
+ | 😊 心情 | "今天很开心"、"有点闷" |
511
+ | 📖 故事 | "讲个笑话"、"说个故事" |
512
+ """)
513
+
514
+ # 底部说明
515
+ gr.Markdown("""
516
+ ---
517
+
518
+ <center>
519
+
520
+ ## 🏠 温馨聊天室 - 永远陪伴您
521
+
522
+ **���我在,您不孤单** 💝
523
+
524
+ 随时来聊天,我一直都在这里等您!
525
+
526
+ </center>
527
+ """)
528
+
529
+ # 事件绑定
530
+
531
+ # 发送消息
532
+ msg.submit(
533
+ fn=chat_response,
534
+ inputs=[msg, chatbot],
535
+ outputs=chatbot,
536
+ api_visibility="public"
537
+ ).then(
538
+ fn=lambda: "",
539
+ outputs=msg
540
+ ).then(
541
+ fn=get_stats,
542
+ inputs=chatbot,
543
+ outputs=stats_display
544
+ )
545
+
546
+ # 快捷消息选择并发送
547
+ def send_quick_message(choice, history):
548
+ if not choice:
549
+ return history, ""
550
+ message = quick_reply(choice)
551
+ return history, message
552
+
553
+ send_quick_btn.click(
554
+ fn=send_quick_message,
555
+ inputs=[quick_buttons, chatbot],
556
+ outputs=[chatbot, msg],
557
+ api_visibility="private"
558
+ ).then(
559
+ fn=chat_response,
560
+ inputs=[msg, chatbot],
561
+ outputs=chatbot
562
+ ).then(
563
+ fn=lambda: ("", None),
564
+ outputs=[msg, quick_buttons]
565
+ ).then(
566
+ fn=get_stats,
567
+ inputs=chatbot,
568
+ outputs=stats_display
569
+ )
570
+
571
+ # 清空对话
572
+ clear_btn.click(
573
+ fn=clear_history,
574
+ outputs=[chatbot, msg],
575
+ api_visibility="private"
576
+ ).then(
577
+ fn=get_stats,
578
+ inputs=chatbot,
579
+ outputs=stats_display
580
+ )
581
+
582
+ # 刷新统计
583
+ refresh_stats_btn.click(
584
+ fn=get_stats,
585
+ inputs=chatbot,
586
+ outputs=stats_display,
587
+ api_visibility="private"
588
+ )
589
+
590
+
591
+ # 启动应用
592
+ if __name__ == "__main__":
593
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ gradio
2
+ requests
3
+ Pillow
4
+ numpy
5
+ pandas
6
+ matplotlib
7
+ plotly
8
+ fastapi
9
+ uvicorn
10
+ pydantic