File size: 3,389 Bytes
4bf306e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4ad6152
4bf306e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# ==========================================
# FinTalk - Gradio UI
# ==========================================
import gradio as gr
import asyncio
from backend import fintalk_discussion, export_to_pdf, generate_tts_files  # senin fonksiyonların

# -----------------------------------------------------
# Tartışmayı başlatan ana fonksiyon
# -----------------------------------------------------
def run_fintalk(topic_text):
    if not topic_text or len(topic_text.strip()) < 10:
        return "Please provide a valid economic topic.", "", "", "", "", None, None

    result = fintalk_discussion(topic_text)
    result["topic"] = topic_text

    # PDF oluştur
    pdf_path = "FinTalk_Report.pdf"
    export_to_pdf(result, pdf_path)

    # TTS (async)
    try:
        generate_tts_files(result)
    except Exception as e:
        print("TTS hatası:", e)

    return (
    f"🧩 **Moderator:**\n{result['moderator_intro']}",
    f"💹 **Bullish Investor:**\n{result['bullish_view']}",
    f"📉 **Bearish Economist:**\n{result['bearish_view']}",
    f"🎙️ **Moderator Wrap-up:**\n{result['moderator_wrap']}",
    f"📊 **GPT Summary:**\n{result['summary']}",
    pdf_path,
    "moderator_intro.waw",
    "bullish_view.waw",
    "bearish_view.waw",
    "moderator_wrap.waw"
)

# -----------------------------------------------------
# Gradio Arayüz
# -----------------------------------------------------
with gr.Blocks(theme=gr.themes.Soft()) as demo:
    gr.Markdown(
        """
        # 📊 **FinTalk — AI Economic Roundtable**
        Simulate a live discussion between two economists with opposing views, moderated by Selin.
        Enter an economic topic or news headline below and click **Start Discussion**.
        """
    )

    with gr.Row():
        with gr.Column(scale=1):
            topic_input = gr.Textbox(
                label="Enter an Economic Headline or News",
                placeholder="Example: The central bank raised interest rates by 200 basis points.",
                lines=4
            )
            start_btn = gr.Button("🚀 Start Discussion")

        with gr.Column(scale=2):
            moderator_output = gr.Markdown(label="Moderator Intro")
            bullish_output = gr.Markdown(label="Bullish Investor")
            bearish_output = gr.Markdown(label="Bearish Economist")
            wrap_output = gr.Markdown(label="Moderator Wrap-up")
            summary_output = gr.Markdown(label="GPT Summary")

            pdf_file = gr.File(label="📄 Download PDF Report")
            
            with gr.Row():
                mod_audio = gr.Audio(label="Moderator Voice", interactive=False)
                bull_audio = gr.Audio(label="Bullish Voice", interactive=False)
                bear_audio = gr.Audio(label="Bearish Voice", interactive=False)
                wrap_audio = gr.Audio(label="Moderator Wrap-up", interactive=False)            

    start_btn.click(
    fn=run_fintalk,
    inputs=topic_input,
    outputs=[
        moderator_output,
        bullish_output,
        bearish_output,
        wrap_output,
        summary_output,
        pdf_file,
        mod_audio,
        bull_audio,
        bear_audio,
        wrap_audio
    ]
)


# -----------------------------------------------------
# Uygulama Başlat
# -----------------------------------------------------
if __name__ == "__main__":
    demo.launch()