Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
import pdfplumber | |
from fpdf import FPDF | |
import requests | |
# Function to call the Groq API | |
def call_groq_api(data, user_prompt): | |
api_url = "https://your-real-groq-api-endpoint.com/modify" # Replace with your Groq API URL | |
headers = { | |
"Authorization": "Bearer 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", # Replace with your API token | |
"Content-Type": "application/json" | |
} | |
payload = { | |
"data": data, | |
"prompt": user_prompt | |
} | |
try: | |
response = requests.post(api_url, json=payload, headers=headers) | |
if response.status_code == 200: | |
return response.json().get("updated_data", "No updated data returned.") | |
else: | |
return f"Error from Groq API: {response.status_code} - {response.text}" | |
except Exception as e: | |
return f"Error connecting to Groq API: {str(e)}" | |
# Function to process uploaded files | |
def process_file(file_path, user_prompt): | |
if not file_path: | |
return "No file uploaded.", None | |
try: | |
# Check file type and extract data | |
if file_path.endswith(".xlsx") or file_path.endswith(".xls"): | |
df = pd.read_excel(file_path) | |
data = df.to_string(index=False) | |
elif file_path.endswith(".pdf"): | |
data = "" | |
with pdfplumber.open(file_path) as pdf: | |
for page in pdf.pages: | |
data += page.extract_text() | |
else: | |
return "Unsupported file type. Please upload Excel or PDF files.", None | |
# Call Groq API to modify the data | |
updated_data = call_groq_api(data, user_prompt) | |
# Generate a PDF with the updated data | |
pdf = FPDF() | |
pdf.add_page() | |
pdf.set_font("Arial", size=12) | |
for line in updated_data.split("\n"): | |
pdf.cell(200, 10, txt=line, ln=True) | |
# Save the generated PDF | |
pdf_file = "updated_file.pdf" | |
pdf.output(pdf_file) | |
return "File processed successfully.", pdf_file | |
except Exception as e: | |
return f"An error occurred: {str(e)}", None | |
# Define the Gradio app interface | |
def gradio_interface(): | |
with gr.Blocks() as app: | |
gr.Markdown("## Upload an Excel or PDF File and Modify with a Prompt") | |
with gr.Row(): | |
file_input = gr.File(label="Upload File", type="filepath") # Fixed type | |
user_prompt = gr.Textbox(label="Enter Prompt to Modify Data") | |
output_msg = gr.Textbox(label="Processing Status") | |
file_output = gr.File(label="Download Updated PDF") | |
process_button = gr.Button("Process File") | |
process_button.click( | |
process_file, | |
inputs=[file_input, user_prompt], | |
outputs=[output_msg, file_output] | |
) | |
return app | |
# Launch the app | |
if __name__ == "__main__": | |
app = gradio_interface() | |
app.launch() |