new version 10
Browse files
app.py
CHANGED
@@ -6,15 +6,20 @@ import gradio as gr
|
|
6 |
from zhdate import ZhDate
|
7 |
from datetime import datetime
|
8 |
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
print(
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
# 定義地支對應的時間區間
|
20 |
z_mapping = {
|
@@ -43,9 +48,18 @@ def get_advice(bmi,temp, API_KEY, model="gpt-3.5-turbo"):
|
|
43 |
bmi = '' #未來再說
|
44 |
gw_main_star = '像一個獨裁霸道的君王,無法聽進別人的意見'
|
45 |
gw_main_star = '像一個足智多謀的軍師,ㄧ有時候會考慮太多而失去前進的勇氣'
|
|
|
|
|
|
|
|
|
|
|
46 |
|
|
|
|
|
|
|
|
|
47 |
messages = [{"role": "system", "content": "你是一個心理權威,你會根據用戶的個性,提供至少3個,不超過5個建議。"},
|
48 |
-
{"role": "user", "content": f'
|
49 |
response = openai.chat.completions.create(
|
50 |
model=model,
|
51 |
max_tokens=1000,
|
@@ -73,7 +87,7 @@ def get_gym(bmi,slide, temp, API_KEY, model="gpt-3.5-turbo"):
|
|
73 |
)
|
74 |
return response.choices[0].message.content
|
75 |
|
76 |
-
def GWAI(year, month, day, btime) -> datetime:
|
77 |
dt_date1 = datetime(int(year), int(month), int(day))
|
78 |
date_lunar = ZhDate.from_datetime(dt_date1)
|
79 |
bstr = str(date_lunar)
|
@@ -82,9 +96,11 @@ def GWAI(year, month, day, btime) -> datetime:
|
|
82 |
if hour >= 23:
|
83 |
z = 0
|
84 |
else:
|
85 |
-
z = int(hour / 2) + 1
|
86 |
result=z_mapping[str(z)]
|
87 |
-
|
|
|
|
|
88 |
|
89 |
|
90 |
|
@@ -120,9 +136,15 @@ output_gwai = gr.Textbox(
|
|
120 |
info="這是從西元換算出的農曆生日及出生時辰",
|
121 |
placeholder="Date & Time")
|
122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
advice = gr.Textbox(
|
124 |
-
label="
|
125 |
-
info="
|
126 |
placeholder="Ouput Text here...",
|
127 |
lines=5,)
|
128 |
|
@@ -182,11 +204,12 @@ with gr.Blocks() as demo:
|
|
182 |
|
183 |
with gr.Row():
|
184 |
output_gwai.render() # 顯示農曆生日欄
|
|
|
185 |
|
186 |
btn.render() # 顯示農曆生日值結果
|
187 |
btn.click(fn=GWAI,
|
188 |
-
inputs=[year, month, day, btime],
|
189 |
-
outputs=[output_gwai])
|
190 |
|
191 |
advice.render() # 顯示AI建議結果的文字框
|
192 |
|
@@ -194,8 +217,8 @@ with gr.Blocks() as demo:
|
|
194 |
key_box.render() # 顯示API金鑰輸入框
|
195 |
btn_advice.render() # 顯示AI建議按鈕
|
196 |
btn_advice.click(fn=get_advice, inputs=[output_gwai,temperature,key_box], outputs=advice)
|
197 |
-
btn_gym.render() # 顯示AI健身計畫按鈕
|
198 |
-
btn_gym.click(fn=get_gym, inputs=[output_gwai,slider,temperature, key_box], outputs=advice)
|
199 |
|
200 |
with gr.Accordion("settings", open=True):
|
201 |
slider.render()
|
|
|
6 |
from zhdate import ZhDate
|
7 |
from datetime import datetime
|
8 |
|
9 |
+
localrun = True # 上傳到 Space 時要設定成 False
|
10 |
+
DESKTOP_KEY = False
|
11 |
+
|
12 |
+
def get_envkey():
|
13 |
+
from dotenv import load_dotenv, find_dotenv
|
14 |
+
_ = load_dotenv(find_dotenv()) # read local .env file
|
15 |
+
openai.api_key = os.environ['OPENAI_API_KEY']
|
16 |
+
print(openai.api_key)
|
17 |
+
if openai.api_key:
|
18 |
+
DESKTOP_KEY = openai.api_key
|
19 |
+
print(DESKTOP_KEY)
|
20 |
+
|
21 |
+
if localrun:
|
22 |
+
get_envkey()
|
23 |
|
24 |
# 定義地支對應的時間區間
|
25 |
z_mapping = {
|
|
|
48 |
bmi = '' #未來再說
|
49 |
gw_main_star = '像一個獨裁霸道的君王,無法聽進別人的意見'
|
50 |
gw_main_star = '像一個足智多謀的軍師,ㄧ有時候會考慮太多而失去前進的勇氣'
|
51 |
+
gw_main_star = f'''
|
52 |
+
紫微為『帝座』,它有降煞、制煞的能力,也主工作事業,為解災厄、延壽命的星辰。它是領袖人物,體面高貴,有統御能力,而且也是能夠獨當一面的。皇帝喜歡發號司令,也愛支配別人。所以就往往很有事業慾,常常企圖心旺盛。缺點是它很主觀,而且自尊心很強,好面子,深沉內斂,不愛求助於別人,卻有豐富的生命力,遇困境皆能逆來順受,但是也會因此感到內心的孤獨。
|
53 |
+
|
54 |
+
紫微星最要不得固執倔強,貪喜奉承,耳根子太軟、自負、猜疑心重、善變、待人接物表面化、主觀意識太強。
|
55 |
+
『尊嚴』兩字在此命中所值幾何?算是它的人生課題吧!
|
56 |
|
57 |
+
紫微因為是皇帝,所以一定要得『群臣拱照』始為高格,如孤星單守是為孤君,人生往往無法施展身手。也就是說單單一顆紫微星是不能發揮開拓疆土的作為。所謂『群臣』指的是天府、天相、左輔、右弼、文昌、文曲、天魁、天鉞。紫微沒有『群臣』時較會性急心躁。
|
58 |
+
|
59 |
+
紫微星有惻隱之心能包容別人犯錯的雅量,為人敦厚性情倔強,舉止落落大方彬彬有禮,有長者之風範,謙恭有餘,忠厚較不足。人生但應防桃花後宮作亂情勢,也容易受到感情傷害。此星主貴不主富,但基本上的財運都算不錯,能收能放,不過會在人生中充滿了挑戰性,不要替別人背書作保。
|
60 |
+
'''
|
61 |
messages = [{"role": "system", "content": "你是一個心理權威,你會根據用戶的個性,提供至少3個,不超過5個建議。"},
|
62 |
+
{"role": "user", "content": f'我的人生以紫微斗數星象來論述是 {gw_main_star}. 請總結該論述,提出幾條相對重要的重要特徵,給出一些待人處事的建議?'},]
|
63 |
response = openai.chat.completions.create(
|
64 |
model=model,
|
65 |
max_tokens=1000,
|
|
|
87 |
)
|
88 |
return response.choices[0].message.content
|
89 |
|
90 |
+
def GWAI(year, month, day, btime, sex) -> datetime:
|
91 |
dt_date1 = datetime(int(year), int(month), int(day))
|
92 |
date_lunar = ZhDate.from_datetime(dt_date1)
|
93 |
bstr = str(date_lunar)
|
|
|
96 |
if hour >= 23:
|
97 |
z = 0
|
98 |
else:
|
99 |
+
z = int((hour + 1) / 2) + 1
|
100 |
result=z_mapping[str(z)]
|
101 |
+
output=(bstr.replace('农历','農曆') + " " + result + "時")
|
102 |
+
output2='紫微'
|
103 |
+
return output,output2
|
104 |
|
105 |
|
106 |
|
|
|
136 |
info="這是從西元換算出的農曆生日及出生時辰",
|
137 |
placeholder="Date & Time")
|
138 |
|
139 |
+
output2_gwai = gr.Textbox(
|
140 |
+
value="",
|
141 |
+
label="你的紫微斗數命宮星象",
|
142 |
+
info="這是你的紫微斗數命盤上,命宮裡的主星的資訊",
|
143 |
+
placeholder="Stars in your master plate.")
|
144 |
+
|
145 |
advice = gr.Textbox(
|
146 |
+
label="人生建議 Friendly Advice",
|
147 |
+
info="AI 紫微根據你的命盤星象所提供的人生建議",
|
148 |
placeholder="Ouput Text here...",
|
149 |
lines=5,)
|
150 |
|
|
|
204 |
|
205 |
with gr.Row():
|
206 |
output_gwai.render() # 顯示農曆生日欄
|
207 |
+
output2_gwai.render()
|
208 |
|
209 |
btn.render() # 顯示農曆生日值結果
|
210 |
btn.click(fn=GWAI,
|
211 |
+
inputs=[year, month, day, btime, sex],
|
212 |
+
outputs=[output_gwai,output2_gwai])
|
213 |
|
214 |
advice.render() # 顯示AI建議結果的文字框
|
215 |
|
|
|
217 |
key_box.render() # 顯示API金鑰輸入框
|
218 |
btn_advice.render() # 顯示AI建議按鈕
|
219 |
btn_advice.click(fn=get_advice, inputs=[output_gwai,temperature,key_box], outputs=advice)
|
220 |
+
#btn_gym.render() # 顯示AI健身計畫按鈕
|
221 |
+
#btn_gym.click(fn=get_gym, inputs=[output_gwai,slider,temperature, key_box], outputs=advice)
|
222 |
|
223 |
with gr.Accordion("settings", open=True):
|
224 |
slider.render()
|