File size: 3,767 Bytes
7dd02a3
b7194b1
 
 
 
 
 
 
7dd02a3
 
 
 
 
 
 
b7194b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eed17f4
 
 
568d79a
c615588
eed17f4
 
 
 
488dba6
eed17f4
 
 
 
 
 
488dba6
eed17f4
d9fdd26
488dba6
c615588
eed17f4
c615588
eed17f4
 
 
b7194b1
 
 
488dba6
c615588
eed17f4
 
488dba6
d9fdd26
eed17f4
d9fdd26
488dba6
eed17f4
 
 
 
 
 
 
 
b7194b1
 
 
 
 
 
eed17f4
 
 
 
 
 
 
 
 
3e1b974
eed17f4
d9fdd26
 
eed17f4
 
 
488dba6
eed17f4
 
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
import os
import gradio as gr
import random

from inference import generate_response
from logger import log_user_feedback
from dashboard import update_dashboard_plot
from watchdog import retrain_model

# βœ… Check if trained_model/config.json exists, if not, initialize the model
if not os.path.exists("trained_model/config.json"):
    from init_model import initialize_and_save_model
    print("βš™οΈ Reinitializing EvoTransformer model...")
    initialize_and_save_model()

# 🎲 Random examples
examples = [
    {
        "goal": "Escape from a burning house",
        "option1": "Run out through the front door",
        "option2": "Hide in the bathroom"
    },
    {
        "goal": "Improve sleep quality",
        "option1": "Use phone in bed",
        "option2": "Turn off screens 1 hour before bed"
    },
    {
        "goal": "Increase productivity at work",
        "option1": "Multitask all day",
        "option2": "Use Pomodoro technique"
    },
    {
        "goal": "Lose weight safely",
        "option1": "Skip meals",
        "option2": "Exercise regularly and eat balanced meals"
    },
    {
        "goal": "Ace an exam",
        "option1": "Cram the night before",
        "option2": "Study consistently for 2 weeks"
    },
]

def load_random_example():
    example = random.choice(examples)
    return example["goal"], example["option1"], example["option2"]

# 🧠 Model suggestion UI
evo_output = gr.Textbox(label="🧠 EvoTransformer Suggestion")
gpt_output = gr.Textbox(label="πŸ’¬ GPT-3.5 Suggestion")
feedback_output = gr.Textbox(visible=False)

def evo_chat(goal, sol1, sol2):
    response = generate_response(goal, sol1, sol2)
    evo = response.get("evo_suggestion", "Error")
    gpt = response.get("gpt_suggestion", "Error")
    return evo, gpt

def handle_feedback(goal, sol1, sol2, winner):
    try:
        log_user_feedback(goal, sol1, sol2, winner)
        return "βœ… Feedback logged. Thank you!"
    except Exception as e:
        return f"❌ Failed to log: {e}"

with gr.Blocks(title="EvoTransformer v2.1 – Compare Options and Learn") as demo:
    gr.Markdown("## 🧠 EvoTransformer v2.1 – Compare Options and Learn")

    with gr.Row():
        goal_input = gr.Textbox(label="Goal", placeholder="e.g. Escape from house on fire")
    with gr.Row():
        option1_input = gr.Textbox(label="Option 1", placeholder="e.g. Exit house through main door")
        option2_input = gr.Textbox(label="Option 2", placeholder="e.g. Hide under bed")

    with gr.Row():
        compare_btn = gr.Button("πŸ” Compare")
        random_btn = gr.Button("🎲 Load Random Example")

    with gr.Row():
        evo_output.render()
        gpt_output.render()

    with gr.Row():
        winner_dropdown = gr.Radio(["Solution 1", "Solution 2"], label="Which was better?")
        feedback_btn = gr.Button("βœ… Log Feedback")

    feedback_output.render()

    compare_btn.click(
        fn=evo_chat,
        inputs=[goal_input, option1_input, option2_input],
        outputs=[evo_output, gpt_output]
    )

    random_btn.click(
        fn=load_random_example,
        inputs=[],
        outputs=[goal_input, option1_input, option2_input]
    )

    feedback_btn.click(
        fn=handle_feedback,
        inputs=[goal_input, option1_input, option2_input, winner_dropdown],
        outputs=[feedback_output]
    )

    with gr.Row():
        gr.Markdown("### πŸ“Š Dashboard")
        dashboard_plot = gr.Plot()
        dashboard_plot = update_dashboard_plot()

    with gr.Row():
        retrain_button = gr.Button("♻️ Retrain Evo")
        retrain_status = gr.Textbox(label="Retrain Status")

    retrain_button.click(fn=retrain_model, inputs=[], outputs=[retrain_status])

if __name__ == "__main__":
    demo.launch(share=True)