File size: 6,315 Bytes
b4251f4 80f4b08 0121f83 80f4b08 b4251f4 0121f83 b4251f4 0121f83 b4251f4 0121f83 b4251f4 0121f83 80f4b08 b4251f4 80f4b08 b4251f4 8697be1 77eed2b b4251f4 8697be1 77eed2b 8697be1 77eed2b 80f4b08 77eed2b 80f4b08 77eed2b b4251f4 0121f83 b4251f4 6887924 b4251f4 6887924 b4251f4 0121f83 b4251f4 0121f83 b4251f4 0121f83 b4251f4 80f4b08 b4251f4 8697be1 80f4b08 77eed2b b4251f4 0121f83 b4251f4 0121f83 80f4b08 0121f83 b4251f4 0121f83 b4251f4 0121f83 b4251f4 |
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 198 199 200 201 202 203 204 205 |
## chatGPT with Gradio 起手式
## 在你的資料夾新增 .env 檔案,並在裡面寫入 API_KEY=你的API金鑰
import os
import openai
import gradio as gr
from zhdate import ZhDate
from datetime import datetime
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
openai.api_key = os.environ['OPENAI_API_KEY']
print(openai.api_key)
if openai.api_key:
DESKTOP_KEY = openai.api_key
print(DESKTOP_KEY)
# 定義地支對應的時間區間
z_mapping = {
"1": "子",
"2": "丑",
"3": "寅",
"4": "卯",
"5": "辰",
"6": "巳",
"7": "午",
"8": "未",
"9": "申",
"10": "酉",
"11": "戌",
"12": "亥",
"0": "夜子"
}
## AI 建議
def get_advice(bmi,temp, API_KEY, model="gpt-3.5-turbo"):
if API_KEY:
openai.api_key = API_KEY
else:
openai.api_key = DESKTOP_KEY
print(openai.api_key)
bmi = '' #未來再說
gw_main_star = '像一個獨裁霸道的君王,無法聽進別人的意見'
gw_main_star = '像一個足智多謀的軍師,ㄧ有時候會考慮太多而失去前進的勇氣'
messages = [{"role": "system", "content": "你是一個心理權威,你會根據用戶的個性,提供至少3個,不超過5個建議。"},
{"role": "user", "content": f'我的個性是 {gw_main_star}. 針對這樣的個性,妳可否給我一些待人處事的建議?'},]
response = openai.chat.completions.create(
model=model,
max_tokens=1000,
messages=messages,
temperature=temp, # this is the degree of randomness of the model's output
)
return response.choices[0].message.content
## 健身計畫
def get_gym(bmi,slide, temp, API_KEY, model="gpt-3.5-turbo"):
if API_KEY:
openai.api_key = API_KEY
else:
openai.api_key = DESKTOP_KEY
print(openai.api_key)
messages = [{"role": "system", "content": "You are a great fitness coach and \
you will give users great fitness plans."},
{"role": "user", "content": f'My BMI is {bmi}. I want a {slide}-point weight\
loss plan, from 1 to 10. The higher the number, the faster the weight loss.'},]
response = openai.chat.completions.create(
model=model,
max_tokens=200,
messages=messages,
temperature=temp, # this is the degree of randomness of the model's output
)
return response.choices[0].message.content
def GWAI(year, month, day, btime) -> datetime:
dt_date1 = datetime(int(year), int(month), int(day))
date_lunar = ZhDate.from_datetime(dt_date1)
bstr = str(date_lunar)
hour = int(btime.split(":")[0])
if hour >= 23:
z = 0
else:
z = int(hour / 2) + 1
result=z_mapping[str(z)]
return bstr.replace('农历','農曆') + " " + result + "時"
# 建立 components
year = gr.Textbox(
label="生年",
info="輸入你的西元出生年份",
placeholder="Input your birth year here...")
month = gr.Textbox(
label="生月",
info="輸入你的出生月份",
placeholder="Input your birthday month here...",)
day = gr.Textbox(
label="生日",
info="輸入你的出生日子",
placeholder="Input your birthday day here...",)
btime = gr.Textbox(
label="生時",
info="輸入你的出生時間 HH:MM (幾點及約略幾分即可,請用24小時制)",
placeholder="Input your birth time here...",)
sex = gr.Textbox(
label="性別",
info="輸入你是男生或女生",
placeholder="Input you are male or female here...",)
output_gwai = gr.Textbox(
value="",
label="你的農曆生日及出生時辰",
info="這是從西元換算出的農曆生日及出生時辰",
placeholder="Date & Time")
advice = gr.Textbox(
label="AI Advice",
info="請選擇以下按鈕讓AI 根據你的BMI值給予的建議",
placeholder="Ouput Text here...",
lines=5,)
btn = gr.Button(
value="計算農曆生日及八字時辰",
variant="primary", scale=1)
btn_advice = gr.Button(
value="AI 紫微的人生建議",
variant="primary", scale=2)
btn_gym = gr.Button(
value="AI 紫微聊天室",
variant="primary", scale=1)
key_box = gr.Textbox(
label="輸入你的 API 金鑰",
info="You have to provide your own OPENAI_API_KEY for this app to function properly",
placeholder="Type OpenAI API KEY here...",
type="password")
slider = gr.Slider(
minimum=1,
maximum=10,
step=1,
label="減重速度",
value=5,
info="請選擇你的減重速度,數字越大,減重越快",
)
temperature = gr.Slider(
minimum=0,
maximum=1.0,
value=0.3,
step=0.05,
label="Temperature",
info=(
"Temperature controls the degree of randomness in token selection. Lower "
"temperatures are good for prompts that expect a true or correct response, "
"while higher temperatures can lead to more diverse or unexpected results. "
),
)
with gr.Blocks() as demo:
gr.Markdown("""
# AI 紫微
起手式 - 轉換西元生日到農曆出生時辰
""")
with gr.Column():
with gr.Row():
year.render() # 顯示年
month.render() # 顯示月
day.render() # 顯示日
btime.render() # 顯示時
sex.render() # 顯示性別
with gr.Row():
output_gwai.render() # 顯示農曆生日欄
btn.render() # 顯示農曆生日值結果
btn.click(fn=GWAI,
inputs=[year, month, day, btime],
outputs=[output_gwai])
advice.render() # 顯示AI建議結果的文字框
with gr.Row():
key_box.render() # 顯示API金鑰輸入框
btn_advice.render() # 顯示AI建議按鈕
btn_advice.click(fn=get_advice, inputs=[output_gwai,temperature,key_box], outputs=advice)
btn_gym.render() # 顯示AI健身計畫按鈕
btn_gym.click(fn=get_gym, inputs=[output_gwai,slider,temperature, key_box], outputs=advice)
with gr.Accordion("settings", open=True):
slider.render()
temperature.render()
demo.launch()
|