File size: 4,164 Bytes
9385133
83a0c1c
a6c95f0
 
 
 
 
 
83a0c1c
 
ced35f5
83a0c1c
 
ced35f5
 
83a0c1c
ced35f5
 
 
 
 
 
 
83a0c1c
ced35f5
 
 
0edee28
 
 
 
2776f22
0edee28
608f542
0edee28
 
 
 
 
 
 
44f3235
0edee28
 
 
608f542
0edee28
 
 
 
 
 
7b954f4
0edee28
 
 
 
 
 
 
 
 
 
 
 
 
7b954f4
 
0edee28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7b954f4
 
 
0edee28
 
 
 
 
a6c95f0
0edee28
 
 
a6c95f0
 
0edee28
608f542
 
 
9385133
2dbcb90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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.ca_gui = gr.Blocks()
        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.ca_gui.launch()

    def create_header(self):
        agent_header = """
        #Content Agent                
        """
        with self.ca_gui:
            gr.Markdown(agent_header)

    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(guidance)
            
    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()
        print("examples")
        print(examples)

        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 pass_through_agent(self, agent):
        # Simulate the agent's response
        agent_response = agent(self.user_input.value)
        self.output.update(agent_response)

        # Pass the input to the agent
        output = agent.get_response(input_text)

        # Update the output text box with the agent's response
        self.submit_button.click(
            fn=get_agent_response,
            inputs=self.user_input,
            outputs=self.output
        )
    
        self.user_input.submit(
            fn=get_agent_response,
            inputs=self.user_input,
            outputs=self.output
        )