File size: 4,385 Bytes
9a8fa2b
a2a26d5
9a8fa2b
 
a2a26d5
593928c
 
b77dbf2
 
593928c
 
b77dbf2
4a6621a
75a7cfa
c25b13e
 
75a7cfa
 
a6d90c9
75a7cfa
 
 
 
 
 
 
 
 
f6c0c9a
4a6621a
c25b13e
 
 
 
 
 
 
4a6621a
44cf7cf
fc91b44
 
 
 
44cf7cf
 
4a6621a
 
 
 
 
 
 
 
 
 
 
 
 
 
c25b13e
 
 
 
 
 
 
 
 
 
 
 
 
 
44cf7cf
 
 
 
c25b13e
fc91b44
44cf7cf
fc91b44
 
 
 
 
 
44cf7cf
c25b13e
fc91b44
 
 
 
 
 
4a6621a
 
 
c25b13e
4a6621a
fc91b44
44cf7cf
4a6621a
 
c25b13e
f6c0c9a
 
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
import spaces
import gradio as gr
import torch
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")

@spaces.GPU
def temp(text):
    response = tokenizer(input_text, return_tensors="pt")
    return response

def greet(input_text, length, function_words, grade_level, sarcasm, formality, voice, persuasive, descriptive, narrative, expository):
    response = (
        f"Hello!\n"
        f"Input Text: {input_text}\n"
        f"Length: {length}\n"
        f"Function Words: {function_words}\n"
        f"Grade Level: {grade_level}\n"
        f"Sarcasm: {sarcasm}\n"
        f"Formality: {formality}\n"
        f"Voice: {voice}\n"
        f"Persuasive: {persuasive}\n"
        f"Descriptive: {descriptive}\n"
        f"Narrative: {narrative}\n"
        f"Expository: {expository}"
    )
    return response

def reset_sliders():
    return [0.5] * 10

def toggle_slider(checked, value):
    if checked:
        return gr.update(value=value, interactive=True)
    else:
        return gr.update(value=0, interactive=False)

def reset_writing_type_sliders(selected_type):
    reset_values = [gr.update(value=0, interactive=False) for _ in range(4)]
    if selected_type != "None":
        index = ["Persuasive", "Descriptive", "Narrative", "Expository"].index(selected_type)
        reset_values[index] = gr.update(value=0, interactive=True)
    return reset_values

demo = gr.Blocks()

with demo:
    with gr.Row():
        with gr.Column(variant="panel"):
            gr.Markdown("# 1) Input Text\n### Enter the text to be obfuscated.")
            input_text = gr.Textbox(
                label="Input Text",
                value="The quick brown fox jumped over the lazy dogs."
            )
            gr.Markdown("# 2) Style Element Sliders\n### Adjust the style element sliders to the desired levels to steer the obfuscation.")
            
            reset_button = gr.Button("Choose slider values automatically (based on input text)")
            
            sliders = []
            slider_values = [
                ("Length (Shorter \u2192 Longer)", -1, 1, 0),
                ("Function Words (Fewer \u2192 More)", -1, 1, 0),
                ("Grade Level (Lower \u2192 Higher)", -1, 1, 0),
                ("Formality (Less \u2192 More)", -1, 1, 0),
                ("Sarcasm (Less \u2192 More)", -1, 1, 0),
                ("Voice (Passive \u2192 Active)", -1, 1, 0),
                ("Writing Type: Persuasive (None \u2192 More)", 0, 1, 0),
                ("Writing Type: Descriptive (None \u2192 More)", 0, 1, 0),
                ("Writing Type: Narrative (None \u2192 More)", 0, 1, 0),
                ("Writing Type: Expository (None \u2192 More)", 0, 1, 0)
            ]
            
            non_writing_type_sliders = []
            writing_type_sliders = []
            
            for idx, (label, min_val, max_val, default) in enumerate(slider_values):
                with gr.Row():
                    if "Writing Type" not in label:
                        checkbox = gr.Checkbox(label=label)
                        slider = gr.Slider(label=label, minimum=min_val, maximum=max_val, step=0.01, value=default, interactive=False)
                        checkbox.change(fn=toggle_slider, inputs=[checkbox, gr.State(default)], outputs=slider)
                        non_writing_type_sliders.append(slider)
                    else:
                        slider = gr.Slider(label=label, minimum=min_val, maximum=max_val, step=0.01, value=default, interactive=False)
                        writing_type_sliders.append(slider)
                    
                    sliders.append(slider)
            
            writing_type_radio = gr.Radio(
                label="Writing Type",
                choices=["None", "Persuasive", "Descriptive", "Narrative", "Expository"],
                value="None"
            )
            
            obfuscate_button = gr.Button("Obfuscate Text")
            
            reset_button.click(fn=reset_sliders, inputs=[], outputs=sliders)
            
            writing_type_radio.change(fn=reset_writing_type_sliders, inputs=writing_type_radio, outputs=writing_type_sliders)

        with gr.Column(variant="panel"):
            output = gr.Textbox(label="Output")
            obfuscate_button.click(fn=greet, inputs=[input_text] + sliders, outputs=output)

demo.launch()