Update app.py
Browse files
app.py
CHANGED
@@ -153,7 +153,7 @@ def describe_oxygen_th_to_en(desc_th):
|
|
153 |
return "high oxygen"
|
154 |
|
155 |
###################################
|
156 |
-
#
|
157 |
###################################
|
158 |
def describe_distance(distance_au):
|
159 |
if distance_au < 0.5:
|
@@ -232,60 +232,35 @@ def describe_oxygen(oxygen_percent):
|
|
232 |
return "ออกซิเจนสูง"
|
233 |
|
234 |
###################################
|
235 |
-
#
|
236 |
###################################
|
237 |
def build_prompts_en(
|
238 |
planet_name_en, star_type_en,
|
239 |
-
dist_desc_en, temp_desc_en, grav_desc_en, tilt_desc_en, moon_desc_en, oxygen_desc_en, life_en
|
240 |
):
|
241 |
-
# ถ้าเลือกสไตล์มาตรฐาน ไม่เพิ่มสไตล์ลงในพรอมพ์
|
242 |
-
if style_en.lower() != "standard":
|
243 |
-
style_text = f"in the style of {style_en}"
|
244 |
-
else:
|
245 |
-
style_text = ""
|
246 |
-
|
247 |
# Prompt 1
|
248 |
prompt1 = (
|
249 |
f"A vibrant space painting of planet '{planet_name_en}' orbiting a {star_type_en} star. "
|
250 |
f"It is {dist_desc_en}, with {temp_desc_en} conditions and {grav_desc_en} gravity. "
|
251 |
-
f"{tilt_desc_en}, {moon_desc_en}, atmosphere has {oxygen_desc_en}. "
|
252 |
-
f"{style_text}. Cinematic details."
|
253 |
)
|
254 |
|
255 |
# Prompt 2
|
256 |
prompt2 = (
|
257 |
f"On planet '{planet_name_en}', we discover {life_en} thriving in {temp_desc_en} weather, "
|
258 |
-
f"{grav_desc_en} pull, and {oxygen_desc_en} in the air.
|
259 |
-
f"alien ecosystem, rich concept art."
|
260 |
)
|
261 |
|
262 |
# Prompt 3
|
263 |
prompt3 = (
|
264 |
f"Exploring the surface of '{planet_name_en}': {temp_desc_en} climate, {grav_desc_en}, "
|
265 |
-
f"{tilt_desc_en} tilt, and {moon_desc_en}.
|
266 |
-
f"environment design, atmospheric perspective."
|
267 |
)
|
268 |
|
269 |
return prompt1, prompt2, prompt3
|
270 |
|
271 |
###################################
|
272 |
-
#
|
273 |
-
###################################
|
274 |
-
style_options = [
|
275 |
-
"Standard",
|
276 |
-
"Disney-Pixar",
|
277 |
-
"Studio Ghibli",
|
278 |
-
"Cartoon",
|
279 |
-
"Superhero",
|
280 |
-
"Fairy Tale",
|
281 |
-
"Adventure",
|
282 |
-
"Sci-Fi",
|
283 |
-
"Anime",
|
284 |
-
"Comic Book"
|
285 |
-
]
|
286 |
-
|
287 |
-
###################################
|
288 |
-
# 8) ฟังก์ชันหลัก generate_planet_info พร้อมสไตล์
|
289 |
###################################
|
290 |
def generate_planet_info(
|
291 |
planet_name_th,
|
@@ -296,8 +271,7 @@ def generate_planet_info(
|
|
296 |
moon_value,
|
297 |
oxygen_percent,
|
298 |
planet_type_th,
|
299 |
-
life_th
|
300 |
-
style_selected
|
301 |
):
|
302 |
# parse
|
303 |
try:
|
@@ -392,7 +366,7 @@ def generate_planet_info(
|
|
392 |
)
|
393 |
|
394 |
# -----------------------------
|
395 |
-
# (C) สร้าง Prompt อังกฤษ 3 แบบ
|
396 |
# -----------------------------
|
397 |
# 1) แปลชื่อดาว, สิ่งมีชีวิต (เฉพาะ user input) ผ่านแคช
|
398 |
planet_name_en = translate_th_to_en(planet_name_th)
|
@@ -424,8 +398,7 @@ def generate_planet_info(
|
|
424 |
tilt_desc_en,
|
425 |
moon_desc_en,
|
426 |
oxygen_desc_en,
|
427 |
-
life_en
|
428 |
-
style_selected
|
429 |
)
|
430 |
|
431 |
return child_summary, detail_th, prompt1, prompt2, prompt3
|
@@ -435,18 +408,18 @@ def generate_planet_info(
|
|
435 |
###################################
|
436 |
formula_text = r"""
|
437 |
**สูตรอุณหภูมิ (Stefan-Boltzmann) แบบง่าย**
|
438 |
-
|
439 |
T = \left(\frac{(1 - A) \times L}{16 \pi \sigma \, d^2}\right)^{\frac{1}{4}} - 273.15 + 15^\circ\text{C (Greenhouse)}
|
440 |
-
|
441 |
|
442 |
-
-
|
443 |
-
-
|
444 |
-
-
|
445 |
-
-
|
446 |
|
447 |
**สูตรแรงโน้มถ่วงนิวตัน**
|
448 |
-
|
449 |
-
(เราใช้สมมุติว่า
|
450 |
"""
|
451 |
|
452 |
###################################
|
@@ -549,13 +522,6 @@ with gr.Blocks(css=css_code) as demo:
|
|
549 |
oxygen_slider = gr.Slider(0, 100, step=1, value=21, label="% ออกซิเจน")
|
550 |
life_th = gr.Textbox(label="สิ่งมีชีวิต (ไทย)", placeholder="เช่น แมลงยักษ์เรืองแสง...")
|
551 |
|
552 |
-
with gr.Row():
|
553 |
-
style_selected = gr.Dropdown(
|
554 |
-
label="เลือกสไตล์ของพรอมพ์",
|
555 |
-
choices=style_options,
|
556 |
-
value="Standard"
|
557 |
-
)
|
558 |
-
|
559 |
create_btn = gr.Button("สร้างโลกแฟนตาซี", elem_classes="btn-main")
|
560 |
|
561 |
child_summary_out = gr.Textbox(label="สรุปสำหรับเด็ก (ไทย)", interactive=False, elem_id="child-summary")
|
@@ -587,7 +553,7 @@ with gr.Blocks(css=css_code) as demo:
|
|
587 |
gr.HTML(copy_button_html)
|
588 |
|
589 |
def generate_wrapper(
|
590 |
-
p_name_th, s_type_en, dist_au, dia_fac, tilt_val, moon_val, oxy_val, p_type_th, l_th
|
591 |
):
|
592 |
return generate_planet_info(
|
593 |
planet_name_th=p_name_th,
|
@@ -598,8 +564,7 @@ with gr.Blocks(css=css_code) as demo:
|
|
598 |
moon_value=str(moon_val),
|
599 |
oxygen_percent=oxy_val,
|
600 |
planet_type_th=p_type_th,
|
601 |
-
life_th=l_th
|
602 |
-
style_selected=style_sel
|
603 |
)
|
604 |
|
605 |
create_btn.click(
|
@@ -613,8 +578,7 @@ with gr.Blocks(css=css_code) as demo:
|
|
613 |
moon_slider,
|
614 |
oxygen_slider,
|
615 |
planet_type_th,
|
616 |
-
life_th
|
617 |
-
style_selected
|
618 |
],
|
619 |
outputs=[
|
620 |
child_summary_out,
|
|
|
153 |
return "high oxygen"
|
154 |
|
155 |
###################################
|
156 |
+
# ฟังก์ชันบรรยาย (ภาษาไทย)
|
157 |
###################################
|
158 |
def describe_distance(distance_au):
|
159 |
if distance_au < 0.5:
|
|
|
232 |
return "ออกซิเจนสูง"
|
233 |
|
234 |
###################################
|
235 |
+
# 5) สร้าง Prompt 3 แบบ (Pre-translate dictionary)
|
236 |
###################################
|
237 |
def build_prompts_en(
|
238 |
planet_name_en, star_type_en,
|
239 |
+
dist_desc_en, temp_desc_en, grav_desc_en, tilt_desc_en, moon_desc_en, oxygen_desc_en, life_en
|
240 |
):
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
# Prompt 1
|
242 |
prompt1 = (
|
243 |
f"A vibrant space painting of planet '{planet_name_en}' orbiting a {star_type_en} star. "
|
244 |
f"It is {dist_desc_en}, with {temp_desc_en} conditions and {grav_desc_en} gravity. "
|
245 |
+
f"{tilt_desc_en}, {moon_desc_en}, atmosphere has {oxygen_desc_en}. Cinematic details."
|
|
|
246 |
)
|
247 |
|
248 |
# Prompt 2
|
249 |
prompt2 = (
|
250 |
f"On planet '{planet_name_en}', we discover {life_en} thriving in {temp_desc_en} weather, "
|
251 |
+
f"{grav_desc_en} pull, and {oxygen_desc_en} in the air. Surreal alien ecosystem, rich concept art."
|
|
|
252 |
)
|
253 |
|
254 |
# Prompt 3
|
255 |
prompt3 = (
|
256 |
f"Exploring the surface of '{planet_name_en}': {temp_desc_en} climate, {grav_desc_en}, "
|
257 |
+
f"{tilt_desc_en} tilt, and {moon_desc_en}. Epic environment design, atmospheric perspective."
|
|
|
258 |
)
|
259 |
|
260 |
return prompt1, prompt2, prompt3
|
261 |
|
262 |
###################################
|
263 |
+
# 6) ฟังก์ชันหลัก generate_planet_info
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
###################################
|
265 |
def generate_planet_info(
|
266 |
planet_name_th,
|
|
|
271 |
moon_value,
|
272 |
oxygen_percent,
|
273 |
planet_type_th,
|
274 |
+
life_th
|
|
|
275 |
):
|
276 |
# parse
|
277 |
try:
|
|
|
366 |
)
|
367 |
|
368 |
# -----------------------------
|
369 |
+
# (C) สร้าง Prompt อังกฤษ 3 แบบ
|
370 |
# -----------------------------
|
371 |
# 1) แปลชื่อดาว, สิ่งมีชีวิต (เฉพาะ user input) ผ่านแคช
|
372 |
planet_name_en = translate_th_to_en(planet_name_th)
|
|
|
398 |
tilt_desc_en,
|
399 |
moon_desc_en,
|
400 |
oxygen_desc_en,
|
401 |
+
life_en
|
|
|
402 |
)
|
403 |
|
404 |
return child_summary, detail_th, prompt1, prompt2, prompt3
|
|
|
408 |
###################################
|
409 |
formula_text = r"""
|
410 |
**สูตรอุณหภูมิ (Stefan-Boltzmann) แบบง่าย**
|
411 |
+
\\[
|
412 |
T = \left(\frac{(1 - A) \times L}{16 \pi \sigma \, d^2}\right)^{\frac{1}{4}} - 273.15 + 15^\circ\text{C (Greenhouse)}
|
413 |
+
\\]
|
414 |
|
415 |
+
- \\(A\\) = Albedo
|
416 |
+
- \\(L\\) = ความสว่างของดาว (W)
|
417 |
+
- \\(\sigma\\) = 5.67\\times10^{-8}
|
418 |
+
- \\(d\\) = ระยะทาง (m)
|
419 |
|
420 |
**สูตรแรงโน้มถ่วงนิวตัน**
|
421 |
+
\\(g = \frac{G M}{R^2}\\)
|
422 |
+
(เราใช้สมมุติว่า \\(M \propto R^3\\) => \\(g \propto R\\))
|
423 |
"""
|
424 |
|
425 |
###################################
|
|
|
522 |
oxygen_slider = gr.Slider(0, 100, step=1, value=21, label="% ออกซิเจน")
|
523 |
life_th = gr.Textbox(label="สิ่งมีชีวิต (ไทย)", placeholder="เช่น แมลงยักษ์เรืองแสง...")
|
524 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
525 |
create_btn = gr.Button("สร้างโลกแฟนตาซี", elem_classes="btn-main")
|
526 |
|
527 |
child_summary_out = gr.Textbox(label="สรุปสำหรับเด็ก (ไทย)", interactive=False, elem_id="child-summary")
|
|
|
553 |
gr.HTML(copy_button_html)
|
554 |
|
555 |
def generate_wrapper(
|
556 |
+
p_name_th, s_type_en, dist_au, dia_fac, tilt_val, moon_val, oxy_val, p_type_th, l_th
|
557 |
):
|
558 |
return generate_planet_info(
|
559 |
planet_name_th=p_name_th,
|
|
|
564 |
moon_value=str(moon_val),
|
565 |
oxygen_percent=oxy_val,
|
566 |
planet_type_th=p_type_th,
|
567 |
+
life_th=l_th
|
|
|
568 |
)
|
569 |
|
570 |
create_btn.click(
|
|
|
578 |
moon_slider,
|
579 |
oxygen_slider,
|
580 |
planet_type_th,
|
581 |
+
life_th
|
|
|
582 |
],
|
583 |
outputs=[
|
584 |
child_summary_out,
|