File size: 10,273 Bytes
129fb98
750a8b8
0466036
acaf0a9
 
129fb98
 
 
 
 
 
 
 
 
 
 
 
 
 
acaf0a9
 
 
 
 
a9fdf5c
 
acaf0a9
 
fccc87e
 
 
acaf0a9
 
 
 
 
 
 
fccc87e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
acaf0a9
a879311
 
acaf0a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129fb98
 
acaf0a9
261750b
acaf0a9
 
fccc87e
 
 
750a8b8
acaf0a9
 
 
 
 
fccc87e
 
a879311
129fb98
 
fccc87e
fc36bbf
fccc87e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129fb98
 
 
08f8ffe
129fb98
fccc87e
129fb98
08f8ffe
129fb98
a9fdf5c
c8fffde
a9fdf5c
acaf0a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129fb98
 
 
c5a5588
129fb98
 
 
 
95310b8
 
129fb98
 
 
95310b8
a9fdf5c
fccc87e
a9fdf5c
fccc87e
 
129fb98
acaf0a9
 
129fb98
 
acaf0a9
129fb98
581e3ec
129fb98
95310b8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
import gradio as gr
import random
import time
import json
from datetime import datetime, timezone, timedelta

def add_text(history, text):
    history = history + [(text, None)]
    return history, ""

def bot(history):
    response = infer(history[-1][0], history)
    history[-1][1] = ""

    for character in response:
        history[-1][1] += character
        time.sleep(0.05)
        yield history

# check profanity
profanity = [
    "ห่วย", "ซวย", "เฮงซวย", "โง่", "ไร้สาระ",
    "บัดซบ", "งี่เหง้า", "บ้า", "บ้าบอ", "น่าเบื่อ",
    "หลอกลวง", "เสียเวลา", "เท็จ", "งมงาย", "เลว",
    "เลวทราม", "แย่", "หลอกลวง", "โคตร", "เซ็ง", 
    "เหี้ย"
]
def profanity_check(text):
    global original_wish
    original_wish = text

    for word in profanity:
        if word in text:
            text = "[ข้อความมีคำหยาบ]"
            break
    return text

response_all = [
    "ขยัน พยายาม มุ่งมั่น อีกไม่นาน ท่านจะ (สมนึก สมหวัง สมคิด สมใจ สมเจตน์)​",
    "เมื่อถึงเวลาเหมาะสม ก็จะสัมฤทธิ์ผล ตามที่ท่านปราถนา",
    "พรที่ท่านขอ จะค่อยๆเห็นผล เมื่อท่านทำแต่กรรมดี",
    "ความปราถนาของท่าน ยังไม่ถึงเวลา ใจเย็นๆ รอก่อน",
    "ความเหนื่อยยากของท่าน จะไม่สูญเปล่าอย่างแน่นอน",
    "จงทำแต่กรรมดี ผลบุญจะช่วยส่งเสริมให้ท่านเจริญรุ่งเรือง",
    "ความดีที่ท่านสะสมมา เมื่อถึงเวลา  ท่านจะได้รับรางวัลอย่างงาม",
    "สิ่งที่ท่านปราถนา ท่านจะสมหวังเมื่อถึงเวลา",
    "พรที่ท่านขอ ลองคิดใหม่อีกครั้ง",
    "อะไรที่รีบร้อน มักพลาด ใจเย็นๆทุกอย่างจะลงตัวด้วยดี",
    "ไม่เคยมีใคร ทำความดีอย่างบริสุทธิ์ใจแล้วไม่เห็นผล",
    "คิดดี พูดดี ทำดี ผลย่อมดีเสมอ",
    "จงสงบนิ่ง ค่อยๆย้อนคิด ลำดับการกระทำที่ผ่านมา ท่านอาจต้องแก้ไข เปลี่ยนแปลง เพื่อให้ทุกอย่างลงตัวด้วยดี",
    "ขอให้ท่านใจเย็นๆ คิดดี ทำดี แล้วทุกอย่างจะสมปราถนาเอง",
    "ทุกอย่างบนโลก อยู่ในเหตุผล ท่านทำแต่ความดี ผลย่อมดีเสมอ",
    "กฎแห่งกรรม กำหนดทุกอย่าง ขอให้ทำแต่กรรมดี",
    "พรที่ท่านขอ จะค่อยๆเห็นผล ถ้าท่านทำแต่ความดี",
    "ถ้าท่านทำความดีมากกว่านี้ ท่านอาจได้ลัดคิวถูกรางวัลที่ 1",
    "พรที่ท่านขอยังไม่ถึงเวลา แต่ท่านจะได้รับสิ่งดีๆอย่างอื่นแทน",
    "ในไม่ช้า คุณจะโชคดี สมปราถนา จงทำแต่กรรมดี",
    "ความโชคดี อยู่รอบตัวท่าน ใกล้ถึงคิวแล้ว รอหน่อย",
    "อย่าเครียด อย่ากังวล สิ่งดีๆกำลังจะเข้ามาในชีวิตแล้ว",
    "โลกนี้ไม่มีอะไรแน่นอน แต่ท่านต้องประสบความสำเร็จแน่นอน",
    "ช่วงนี้อยู่เฉยๆ นิ่งๆ ใช้สติแล้วทุกอย่างจะสมหวัง",
    ]

# Set all responses
response_list = response_all.copy()

def save_history(history, response):
  # Get the current date and time in the Thai time zone
  thai_timezone = timezone(timedelta(hours=7))  # Thailand is UTC+7
  current_time = datetime.now(thai_timezone)

  # Format the current time as a string
  timestamp_str = current_time.strftime('%Y-%m-%d_%H-%M-%S')

  # Create the file name with the timestamp
  file_name = f'{timestamp_str}.json'

  # Create log
  history_log = [history, response]

  # Save the history list to a JSON file
  with open(file_name, 'w', encoding='utf-8') as json_file:
      json.dump(history_log, json_file, ensure_ascii=False, indent=4)


def infer(wish, history):
    global response_list

    if "[ข้อความมีคำหยาบ]" in wish:
      response = "ขอให้ท่านส่งมาขอพรใหม่ เนื่องจากบางคำพูดไม่สุภาพ"
      last_history = history[-1][0] + original_wish
      save_history(last_history, response)

    else:
      response = random.choice(response_list)
      response_list.remove(response)
      if not response_list:
        response_list = response_all.copy()

      last_history = history[-1][0]
      save_history(last_history, response)
    return response


# yellow #E6DE77, pink #F8C8DC, skyblue #A0D8EF

css="""
.gradio-container {
  background-image: url("https://huggingface.co/spaces/jingwora/Guan-Yin-Bless-You/resolve/main/bg-01.jpg");
  height: 500px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover; 
  background-color: #A0D8EF;
  }
#col-container {
  max-width: 700px; 
  margin-left: auto; 
  margin-right: auto;
  }
#button {
  border-color: #EBB40F;
  border-width: thick;
}
"""

title = """
<center><div style="text-align: center;max-width: 700px;">
    <h1>เจ้าแม่กวนอิมให้พร</h1>
    <h3>"โปรดบอกความปรารถนาของท่าน"</h3>
</div>
</center>
"""
instruction = """
<center><p>วิธีขอพร: 1.พิมพ์ในช่องความปรารถนา 2.กดปุ่มขอพร</p></center>
"""

note = """
<div style="text-align: left;max-width: 700px;">
<h3>🚩จุดประสงค์ที่ทำAIเจ้าแม่กวนอิมให้พร</h3>
<p>
- ให้สร้างแต่กรรมดี<br>
- ให้กำลังใจ<br>
- ให้เป็นแรงบันดาลใจ<br>
- ให้เป็นที่พึ่งทางใจ<br>
</p>
<br>
<h3>💡ให้ข้อคิด</h3>
<p>
- ทุกชีวิต ทุกข์ สุข ร้องไห้ หัวเราะ คือสัจจธรรม<br>
- การทำความดี ไม่มีคำว่าสาย เริ่มต้นเดี๋ยวนี้<br>
- ทุกชีวิตบนโลก ต้องดิ้นรน ต่อสู่ เพื่อความอยู่รอด มันคือกฎแห่ง ธรรมชาติ<br>
- ถ้ารู้ว่า คิดผิด เดินทางผิด รีบเปลี่ยนแปลง ก่อนจะสายไป<br>
- ฉลาด สุขุม รอบคอบ อ่อนน้อม รู้คุณคน ไม่ประมาท ไม่อวดดี ชีวิตจะรุ่งเรือง<br>
</p>
<br>
<h3>📝ข้อกำหนด</h3>
<p>
- ขอพรใช้คำพูดไม่เกิน 20 คำ<br>
- ทางเราจะไม่รับผิดชอบ กรณีที่ท่านขอพรแล้วไม่ได้ดั่งใจ เพราะทุกอย่างอยู่ภายใต้กฎแห่งกรรม<br>
- อย่ามีใจคิดร้ายผู้อื่น อิจฉาผู้อื่น เพราะอาจทำให้ท่านขอพรแล้วไม่ได้ผล<br>
- อย่าขออะไรที่ผิดคุณธรรม ผิดกฎหมาย ผิดธรรมชาติ<br>
- อย่าใช้คำพูดที่ไม่สุภาพในการขอพร<br>
</p>
</div>
"""

version = """
<div style="text-align: center;max-width: 700px;">
    <p style="text-align: left;">
    version: 0.10
    </p>
</div>
"""

guanyin = '<center><img src="https://huggingface.co/spaces/jingwora/Guan-Yin-Bless-You/resolve/main/guan-yin-01.gif" alt="guan-yin-01.gif" style="width:400px;"></center>'

with gr.Blocks(css=css) as demo:
    with gr.Column(elem_id="col-container"):
        gr.HTML(title)
        gr.HTML(guanyin)
        gr.HTML(instruction)
        with gr.Row(equal_height=True):
            wish = gr.Textbox(show_label=False, placeholder="ความปรารถนา", scale=10)
            submit_btn = gr.Button(value="✨ขอพร✨", elem_id="button", scale=1)
        
        chatbot = gr.Chatbot([], elem_id="chatbot")
        gr.HTML(note)

        gr.HTML(version)

    submit_btn.click(profanity_check, [wish], [wish]).then(add_text, [chatbot, wish], [chatbot, wish]).then(
        bot, chatbot, chatbot)


demo.queue(concurrency_count=5, max_size=20).launch(debug=True)