csv / app.py
Imsachinsingh00's picture
Update app.py
7d08e09 verified
import gradio as gr
import pandas as pd
from transformers import pipeline
import io
# Load the Hugging Face GPT-Neo model
generator = pipeline('text-generation', model='EleutherAI/gpt-neo-2.7B')
# Function to process CSV file and instruction using Hugging Face GPT-Neo
def process_csv_with_huggingface(file, instruction):
# Read CSV from file
df = pd.read_csv(file.name)
# Prepare the prompt for GPT-Neo to generate Python code
prompt = f"""
You are an expert in Python and data manipulation using Pandas. You will be given a DataFrame and an instruction.
Interpret the instruction and generate Python code to manipulate the DataFrame accordingly.
Only return the Python code.
Instruction: {instruction}
DataFrame:
{df.head().to_dict()}
"""
# Request code generation from GPT-Neo
response = generator(prompt, max_length=200, num_return_sequences=1)
# Extract the generated Python code
generated_code = response[0]['generated_text'].strip()
# Execute the generated code
try:
exec(generated_code, globals(), locals())
# After execution, the manipulated DataFrame is stored in 'df'
# Convert the DataFrame to CSV for download
output = io.StringIO()
df.to_csv(output, index=False)
output.seek(0)
return output.getvalue()
except Exception as e:
return f"Error while processing: {str(e)}"
# Gradio Interface
with gr.Blocks() as demo:
gr.Markdown("# LLM-Powered CSV Manipulation Tool")
file_input = gr.File(label="Upload CSV File", type="filepath") # Changed to 'filepath'
instruction_input = gr.Textbox(label="Instruction (e.g., 'Add a new column Age with value 30')")
output_file = gr.File(label="Download Manipulated CSV")
run_button = gr.Button("Apply Instruction")
# Link inputs and outputs
run_button.click(process_csv_with_huggingface, inputs=[file_input, instruction_input], outputs=[output_file])
# Launch Gradio Interface
demo.launch()