G3YGSDE / app.py
ssboost's picture
Update app.py
64ca6f7 verified
#app.py
import gradio as gr
import info_blog
import travel_blog
import product_blog
# ๋ž˜ํผ ํ•จ์ˆ˜๋“ค - 5๊ฐœ ๋ฐ˜ํ™˜๊ฐ’์„ 4๊ฐœ๋กœ ์กฐ์ •
def generate_info_blog_wrapper(query, style):
try:
html_result, ref1, ref2, ref3, char_count = info_blog.generate_blog_post(query, style)
return html_result, ref1, ref2, ref3
except Exception as e:
return f"<p>์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}</p>", "์˜ค๋ฅ˜", "์˜ค๋ฅ˜", "์˜ค๋ฅ˜"
def generate_travel_blog_wrapper(query, style):
try:
html_result, ref1, ref2, ref3, char_count = travel_blog.generate_blog_post(query, style)
return html_result, ref1, ref2, ref3
except Exception as e:
return f"<p>์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}</p>", "์˜ค๋ฅ˜", "์˜ค๋ฅ˜", "์˜ค๋ฅ˜"
def generate_product_blog_wrapper(query, style):
try:
html_result, ref1, ref2, ref3, char_count = product_blog.generate_blog_post(query, style)
return html_result, ref1, ref2, ref3
except Exception as e:
return f"<p>์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}</p>", "์˜ค๋ฅ˜", "์˜ค๋ฅ˜", "์˜ค๋ฅ˜"
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„
def interface():
with gr.Blocks(theme=gr.themes.Soft()) as demo:
# ๋Œ€์ œ๋ชฉ: ์ž๋™ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…
gr.Markdown("# ์ž๋™ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…", elem_classes="text-center text-2xl font-bold mb-6")
# ์ฒซ ๋ฒˆ์งธ ํƒญ: ์ผ๋ฐ˜์ •๋ณด
with gr.Tab("์ผ๋ฐ˜์ •๋ณด"):
with gr.Row():
with gr.Column(scale=3):
query_1 = gr.Textbox(
label="ํ‚ค์›Œ๋“œ",
placeholder="๋ฐค ๊ป์งˆ ๊นŒ๋Š” ๋ฒ•, ๊ฐ•์•„์ง€ ๋ฉ”๋ก , ์˜ฅ์ˆ˜์ˆ˜ ์‚ถ๋Š” ๋ฒ•, ์šด๋นจ์กด๋งŽ๊ฒœ ํ‹ฐ์–ด, ํ•˜์ธ„ํ•‘ ํ…Œ์ŠคํŠธ",
elem_classes="text-lg"
)
with gr.Column(scale=1):
style_1 = gr.Radio(
choices=['์นœ๊ทผํ•œ', '์ผ๋ฐ˜์ ์ธ', '์ „๋ฌธ์ ์ธ'],
label="ํฌ์ŠคํŒ… ์Šคํƒ€์ผ",
value='์นœ๊ทผํ•œ',
elem_classes="text-lg"
)
generate_button_1 = gr.Button("๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ", variant="primary", size="lg")
blog_post_1 = gr.HTML(label="์ƒ์„ฑ๋œ ๋ธ”๋กœ๊ทธ ๊ธ€")
# ์ฐธ๊ณ ๊ธ€ ์ถ”๊ฐ€
with gr.Accordion("์ฐธ๊ณ  ๊ธ€", open=False):
reference_1 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 1")
reference_2 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 2")
reference_3 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 3")
# ์ˆ˜์ •๋œ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
generate_button_1.click(
generate_info_blog_wrapper,
inputs=[query_1, style_1],
outputs=[blog_post_1, reference_1, reference_2, reference_3]
)
# ๋‘ ๋ฒˆ์งธ ํƒญ: ์—ฌํ–‰
with gr.Tab("์—ฌํ–‰"):
with gr.Row():
with gr.Column(scale=3):
query_2 = gr.Textbox(
label="ํ‚ค์›Œ๋“œ",
placeholder="์•ˆ๋™๊ตญ์ œํƒˆ์ถคํŽ˜์Šคํ‹ฐ๋ฒŒ, 2024๊ธˆ์‚ฐ์ธ์‚ผ์ถ•์ œ, ๊ณ„๋ฃก ๊ตฐ ๋ฌธํ™”์ถ•์ œ, ๋Œ€์ „ ์„ฑ์‹ฌ๋‹น, 10์›” ๊ฒฝ์ฃผ ์—ฌํ–‰ ์ฝ”์Šค, ๋ถ€์‚ฐ ์•„์ด์™€ ํ•จ๊ป˜ ๊ฐ€๋ณผ๋งŒํ•œ ๊ณณ, 10์›” ์ œ์ฃผ๋„ ํ•‘ํฌ๋ฎฌ๋ฆฌ",
elem_classes="text-lg"
)
with gr.Column(scale=1):
style_2 = gr.Radio(
choices=['์นœ๊ทผํ•œ', '์ผ๋ฐ˜์ ์ธ', '์ „๋ฌธ์ ์ธ'],
label="ํฌ์ŠคํŒ… ์Šคํƒ€์ผ",
value='์นœ๊ทผํ•œ',
elem_classes="text-lg"
)
generate_button_2 = gr.Button("๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ", variant="primary", size="lg")
blog_post_2 = gr.HTML(label="์ƒ์„ฑ๋œ ๋ธ”๋กœ๊ทธ ๊ธ€")
# ์ฐธ๊ณ ๊ธ€ ์ถ”๊ฐ€
with gr.Accordion("์ฐธ๊ณ  ๊ธ€", open=False):
reference_4 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 1")
reference_5 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 2")
reference_6 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 3")
# ์ˆ˜์ •๋œ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
generate_button_2.click(
generate_travel_blog_wrapper,
inputs=[query_2, style_2],
outputs=[blog_post_2, reference_4, reference_5, reference_6]
)
# ์„ธ ๋ฒˆ์งธ ํƒญ: ์ƒํ’ˆ๋ฆฌ๋ทฐ
with gr.Tab("์ƒํ’ˆ๋ฆฌ๋ทฐ"):
with gr.Row():
with gr.Column(scale=3):
query_3 = gr.Textbox(
label="ํ‚ค์›Œ๋“œ",
placeholder="๋ ˆ๋…ธ๋ฒ„ k10 pro, ๊ฐค๋Ÿญ์‹œ์›Œ์น˜ ์šธํŠธ๋ผ ์ŠคํŽ™, ์•„์ดํฐ16 pro ์ถ”์ฒœ, ๋‹ค์ด์†Œ ๋ฐฉ์ˆ˜ํŒฉ, ์—ฌํ–‰์šฉ ์ƒค์›Œํ•„ํ„ฐ, ๋ธŒ๋กค์Šคํƒ€์ฆˆ ์‹œ๋ฆฌ์–ผ, ์‹ ๋ผ๋ฉด ํˆผ๋ฐ”",
elem_classes="text-lg"
)
with gr.Column(scale=1):
style_3 = gr.Radio(
choices=['์นœ๊ทผํ•œ', '์ผ๋ฐ˜์ ์ธ', '์ „๋ฌธ์ ์ธ'],
label="ํฌ์ŠคํŒ… ์Šคํƒ€์ผ",
value='์นœ๊ทผํ•œ',
elem_classes="text-lg"
)
generate_button_3 = gr.Button("๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ", variant="primary", size="lg")
blog_post_3 = gr.HTML(label="์ƒ์„ฑ๋œ ๋ธ”๋กœ๊ทธ ๊ธ€")
# ์ฐธ๊ณ ๊ธ€ ์ถ”๊ฐ€
with gr.Accordion("์ฐธ๊ณ  ๊ธ€", open=False):
reference_7 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 1")
reference_8 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 2")
reference_9 = gr.Textbox(label="์ฐธ๊ณ ๊ธ€ 3")
# ์ˆ˜์ •๋œ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
generate_button_3.click(
generate_product_blog_wrapper,
inputs=[query_3, style_3],
outputs=[blog_post_3, reference_7, reference_8, reference_9]
)
# ํ‘ธํ„ฐ ์ถ”๊ฐ€
gr.Markdown("---")
gr.Markdown("ยฉ 2025 ์ž๋™ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ์‹œ์Šคํ…œ", elem_classes="text-center text-sm")
return demo
# ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰
if __name__ == "__main__":
demo = interface()
demo.launch(server_name="0.0.0.0", share=True, show_error=True)