File size: 3,651 Bytes
9385133
83a0c1c
a6c95f0
 
 
 
 
 
83a0c1c
 
ced35f5
83a0c1c
 
ced35f5
 
83a0c1c
ced35f5
 
 
 
 
 
 
83a0c1c
ced35f5
 
 
0edee28
 
 
 
2776f22
0edee28
 
 
 
 
 
 
 
44f3235
0edee28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a6c95f0
0edee28
 
 
a6c95f0
0edee28
 
a6c95f0
0edee28
 
 
9385133
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
import gradio as gr
import os

# Function for Main content (takes user input and returns a response)
def process_input(user_input):
    return f"You entered: {user_input}"

# Function to generate predefined examples
def get_example():
    # Define the path to the 'examples' directory
    example_root = os.path.join(os.path.dirname(__file__), "examples")
    
    # Get list of all example text file paths
    example_files = [os.path.join(example_root, _) for _ in os.listdir(example_root) if _.endswith("txt")]
    
    # Read the content of each file (assuming they're plain text files)
    examples = []
    
    for file_path in example_files:
        example_content = ""
        with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
            example_content = f.read()
        
        examples.append(example_content)  # Append the content to the list

    return examples

class ContentAgentUI:
    def __init__(self):
        # Set the path to the external CSS file
        css_path = os.path.join(os.getcwd(), "ui", "styles.css")
        
        self.ca_gui = gr.Blocks(css=css_path)
        self.sections = [
            self.create_header,
            self.create_user_guidance,
            self.create_main,
            self.create_examples,
            self.create_footer,
        ]
        
        for section in self.sections:
            section()
        
        self.launch()

    def create_header(self):
        agent_header = """
        #Content Agent                
        """
        with self.ca_gui:
            gr.Markdown("<div id='header'>" + agent_header + "</div>")

    def create_user_guidance(self):
        guidance = """
        Please enter text below to get started. The AI Agent will try to determine whether the language is polite and uses the following classification:
        - `polite`
        - `somewhat polite`
        - `neutral`
        - `impolite`
        App is running `deepseek-ai/DeepSeek-R1-Distill-Qwen-32B` text generation model.
        Uses Intel's Polite Guard NLP library.
        Compute is GCP · Nvidia L4 · 4x GPUs · 96 GB
        """
        with self.ca_gui:
            gr.Markdown("<div id='user-guidance'>" + guidance + "</div>")

    def create_main(self):
        with self.ca_gui:
            with gr.Row():
                with gr.Column():
                    self.user_input = gr.Textbox(label="Your Input", placeholder="Enter something here...")
                    self.submit_button = gr.Button("Submit")
                    self.output = gr.Textbox(label="Content feedback", interactive=False, lines=10, max_lines=20 )
                    
                    # Define the function to be called when the button is clicked or Enter is pressed
                    self.submit_button.click(process_input, inputs=self.user_input, outputs=self.output)
                    self.user_input.submit(process_input, inputs=self.user_input, outputs=self.output)

    def create_examples(self):
        # Fetch examples by calling get_example() here
        examples = get_example()
        example_radio = gr.Radio(choices=examples, label="Try one of these examples:")
        
        # When an example is selected, populate the input field
        with self.ca_gui:
            example_radio.change(fn=lambda example: example, inputs=example_radio, outputs=self.user_input)

    def create_footer(self):
        with self.ca_gui:
            gr.Markdown("<div id='footer'>Thanks for trying it out!</div>")

    def launch(self):
        self.ca_gui.launch()

    def pass_through_agent(self, agent):
        # Code to pass through the agent
        pass