Spaces:
Sleeping
Sleeping
import gradio as gr | |
import os | |
from utils.text_dataset_parser import load_text_file, load_builtin_datasets | |
def create_dataset_input(): | |
""" | |
Create the dataset input interface with prompt, response, and model fields. | |
Returns: | |
tuple: (dataset_inputs, example_dropdown, load_example_btn, create_btn, prompt, response1, model1, response2, model2) | |
""" | |
# Get built-in text datasets | |
text_datasets_dir = os.path.join("dataset") | |
# Check if directory exists | |
if os.path.exists(text_datasets_dir): | |
# Filter out summary files when listing available datasets | |
text_datasets = [file.name for file in os.scandir(text_datasets_dir) | |
if file.is_file() and file.name.endswith(".txt") and not file.name.startswith("summary-")] | |
else: | |
# Create directory if it doesn't exist | |
os.makedirs(text_datasets_dir, exist_ok=True) | |
text_datasets = [] | |
with gr.Column() as dataset_inputs: | |
gr.Markdown("## LLM Response Comparison Dataset") | |
gr.Markdown(""" | |
Enter a prompt and responses from two different LLMs for comparison, | |
or load one of the built-in datasets. | |
""") | |
# Example dataset selection | |
with gr.Row(): | |
example_dropdown = gr.Dropdown( | |
choices=text_datasets, | |
value=text_datasets[0] if text_datasets else None, | |
label="Built-in Datasets", | |
info="Select a pre-made dataset to load" | |
) | |
load_example_btn = gr.Button("Load Dataset", variant="secondary") | |
# User input fields | |
gr.Markdown("### Create Your Own Dataset") | |
with gr.Row(): | |
prompt = gr.Textbox(label="Prompt", lines=2, placeholder="Enter a prompt/question...") | |
with gr.Row(): | |
response1 = gr.Textbox(label="Response 1", lines=4, placeholder="Enter the first model's response...") | |
model1 = gr.Textbox(label="Model 1", placeholder="Enter the first model's name...") | |
with gr.Row(): | |
response2 = gr.Textbox(label="Response 2", lines=4, placeholder="Enter the second model's response...") | |
model2 = gr.Textbox(label="Model 2", placeholder="Enter the second model's name...") | |
create_btn = gr.Button("Create Dataset", variant="primary") | |
return dataset_inputs, example_dropdown, load_example_btn, create_btn, prompt, response1, model1, response2, model2 | |
def load_example_dataset(file_name): | |
""" | |
Load a built-in dataset from a text file. | |
Args: | |
file_name (str): Name of the text file to load. | |
Returns: | |
tuple: Values for prompt, response1, model1, response2, and model2. | |
""" | |
if not file_name: | |
return "", "", "", "", "" | |
file_path = os.path.join("dataset", file_name) | |
if os.path.exists(file_path): | |
try: | |
dataset = load_text_file(file_path) | |
return ( | |
dataset.get("prompt", ""), | |
dataset.get("response1", ""), | |
dataset.get("model1", ""), | |
dataset.get("response2", ""), | |
dataset.get("model2", "") | |
) | |
except Exception as e: | |
print(f"Error loading dataset: {e}") | |
return "Error loading dataset", "", "", "", "" | |
else: | |
print(f"File not found: {file_path}") | |
return "File not found", "", "", "", "" # Clear error message as first field | |
def create_user_dataset(prompt, response1, model1, response2, model2): | |
""" | |
Create a user-defined dataset entry. | |
Args: | |
prompt (str): The prompt text. | |
response1 (str): The first model's response. | |
model1 (str): The first model's name. | |
response2 (str): The second model's response. | |
model2 (str): The second model's name. | |
Returns: | |
dict: Dataset entry with prompt, response1, model1, response2, and model2. | |
""" | |
# Validate inputs | |
if not prompt.strip(): | |
raise ValueError("Prompt cannot be empty") | |
if not response1.strip(): | |
raise ValueError("Response 1 cannot be empty") | |
if not response2.strip(): | |
raise ValueError("Response 2 cannot be empty") | |
# Use default model names if not provided | |
model1_name = model1.strip() if model1.strip() else "Model 1" | |
model2_name = model2.strip() if model2.strip() else "Model 2" | |
return { | |
"prompt": prompt.strip(), | |
"response1": response1.strip(), | |
"model1": model1_name, | |
"response2": response2.strip(), | |
"model2": model2_name | |
} |