| import gradio as gr |
| import pandas as pd |
| from utils.dataset_loader import load_dataset |
|
|
| |
| def load_and_validate_dataset(): |
| df = load_dataset() |
| if df is not None and "prompt_text" in df.columns: |
| return df |
| else: |
| return None |
|
|
| |
| df = load_and_validate_dataset() |
|
|
| |
| def chat_interface(user_input, selected_model, prompt_id=None): |
| if df is not None and prompt_id is not None: |
| prompt = df.iloc[prompt_id]["prompt_text"] |
| response = f"[{selected_model}] used the debugging prompt: '{prompt}'.\nUser said: '{user_input}'\nResponse: Simulated output." |
| else: |
| response = f"[{selected_model}] says: You entered '{user_input}'. This is a simulated response." |
| return response |
|
|
| |
| models = ["Canstralian/text2shellcommands", "Canstralian/RabbitRedux", "Canstralian/CySec_Known_Exploit_Analyzer"] |
| prompt_ids = df.index.tolist() if df is not None else [] |
|
|
| |
| with gr.Blocks(css="./static/styles.css") as demo: |
| with gr.Row(): |
| gr.Markdown("### Retro Hacker Chat with Debugging Prompts", elem_classes="retro-terminal") |
| with gr.Row(): |
| user_input = gr.Textbox( |
| label="Enter your message:", |
| placeholder="Type your message here...", |
| elem_classes="retro-terminal" |
| ) |
| model_selector = gr.Dropdown( |
| choices=models, |
| label="Select Model", |
| value=models[0], |
| elem_classes="retro-terminal" |
| ) |
| |
| |
| if df is not None: |
| prompt_selector = gr.Dropdown( |
| choices=prompt_ids, |
| label="Select Debugging Prompt ID", |
| value=prompt_ids[0] if prompt_ids else None, |
| elem_classes="retro-terminal" |
| ) |
| else: |
| prompt_selector = None |
| |
| with gr.Row(): |
| response_box = gr.Textbox( |
| label="Model Response:", |
| placeholder="The model's response will appear here...", |
| elem_classes="retro-terminal" |
| ) |
| with gr.Row(): |
| send_button = gr.Button("Send", elem_classes="retro-terminal") |
|
|
| |
| if prompt_selector: |
| send_button.click(chat_interface, inputs=[user_input, model_selector, prompt_selector], outputs=response_box) |
| else: |
| send_button.click(chat_interface, inputs=[user_input, model_selector], outputs=response_box) |
|
|
| |
| demo.launch() |
|
|