leewatson's picture
Update app.py
5dd3265 verified
# app.py
import gradio as gr
from emotion_predictor import analyze_dialogue
INTRO = """\
감정 흐름 예츑 + κΈ‰λ³€ 탐지 + κ°ˆλ“± 유발자 μΆ”μ • 데λͺ¨
μž…λ ₯ ν˜•μ‹: μ€„λ§ˆλ‹€ "ν™”μž:λ¬Έμž₯"
예)
A: λ„ˆ μ™œ 또 λŠ¦μ—ˆμ–΄?
B: λ―Έμ•ˆν•΄, μ°¨κ°€ λ§‰ν˜”μ–΄.
A: λ³€λͺ…ν•˜μ§€ 마.
B: λ„ˆ μ§„μ§œ μ™œ 이래?
"""
def run_pipeline(text, alpha, z, steps):
report, img_b64, struct = analyze_dialogue(
text,
smooth_alpha=alpha,
z_thresh=z,
forecast_steps=steps
)
img_md = f"![plot](data:image/png;base64,{img_b64})" if img_b64 else ""
return report, img_md, str(struct)
with gr.Blocks() as demo:
gr.Markdown("# λŒ€ν™” 감정 λΆ„μ„Β·μ˜ˆμΈ‘Β·κ°ˆλ“± νŒλ‹¨")
gr.Markdown(INTRO)
with gr.Row():
text = gr.Textbox(
label="λŒ€ν™” μž…λ ₯",
lines=12,
value="A: λ„ˆ μ™œ 또 λŠ¦μ—ˆμ–΄?\nB: λ―Έμ•ˆν•΄, μ°¨κ°€ λ§‰ν˜”μ–΄.\nA: λ³€λͺ…ν•˜μ§€ 마.\nB: λ„ˆ μ§„μ§œ μ™œ 이래?"
)
with gr.Column():
alpha = gr.Slider(0.1, 0.9, value=0.4, step=0.05, label="EMA Ξ±(μŠ€λ¬΄λ”© 강도)")
z = gr.Slider(1.0, 3.0, value=1.8, step=0.1, label="κΈ‰λ³€ Z μž„κ³„κ°’")
steps = gr.Slider(1, 6, value=3, step=1, label="예츑 ν„΄ 수")
btn = gr.Button("뢄석 μ‹€ν–‰")
report = gr.Textbox(label="리포트", lines=18)
img = gr.Markdown()
struct = gr.Textbox(label="디버그/ꡬ쑰 데이터", lines=10)
# REST λ…ΈμΆœμ„ μœ„ν•΄ api_name μœ μ§€
btn.click(
run_pipeline,
inputs=[text, alpha, z, steps],
outputs=[report, img, struct],
api_name="predict"
)
if __name__ == "__main__":
# Gradio 버전 차이λ₯Ό ν‘μˆ˜ν•˜λŠ” queue() 호좜
try:
# gradio>=4 계열
demo.queue(default_concurrency_limit=1, max_size=128)
except TypeError:
try:
# 일뢀 3.x 계열
demo.queue(concurrency_count=1, max_size=128)
except TypeError:
# 더 ꡬ버전: 인자 없이
demo.queue()
demo.launch(server_name="0.0.0.0", server_port=7860, show_error=True)