Spaces:
Runtime error
Runtime error
import gradio as gr | |
import torch | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
import PyPDF2 | |
import csv | |
import io | |
# Load the model and tokenizer | |
model_name = "your_fine_tuned_model_name" # Replace with your actual model name | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
def process_text(text): | |
inputs = tokenizer(text, return_tensors="pt", max_length=512, truncation=True) | |
with torch.no_grad(): | |
outputs = model.generate(**inputs, max_length=1000) | |
return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
def extract_text_from_pdf(file): | |
pdf_reader = PyPDF2.PdfFileReader(file) | |
text = "" | |
for page in range(pdf_reader.numPages): | |
text += pdf_reader.getPage(page).extractText() | |
return text | |
def process_csv(file): | |
content = file.read().decode('utf-8') | |
csv_reader = csv.reader(io.StringIO(content)) | |
rows = list(csv_reader) | |
return "\n".join([",".join(row) for row in rows]) | |
def analyze_document(file): | |
if file.name.endswith('.pdf'): | |
text = extract_text_from_pdf(file) | |
elif file.name.endswith('.csv'): | |
text = process_csv(file) | |
else: | |
return "Unsupported file format. Please upload a PDF or CSV file." | |
prompt = f"Analyze the following procurement document and provide a detailed audit report:\n\n{text}" | |
return process_text(prompt) | |
def answer_question(question, context): | |
prompt = f"Context: {context}\n\nQuestion: {question}\n\nAnswer:" | |
return process_text(prompt) | |
with gr.Blocks() as demo: | |
gr.Markdown("# AuditBidden: AI-Powered Public Procurement Auditor") | |
with gr.Tab("Document Analysis"): | |
file_input = gr.File(label="Upload Procurement Document (PDF or CSV)") | |
analyze_button = gr.Button("Analyze Document") | |
analysis_output = gr.Textbox(label="Audit Report") | |
analyze_button.click(analyze_document, inputs=file_input, outputs=analysis_output) | |
with gr.Tab("Q&A"): | |
context_input = gr.Textbox(label="Context (paste relevant procurement information)") | |
question_input = gr.Textbox(label="Question") | |
answer_button = gr.Button("Get Answer") | |
answer_output = gr.Textbox(label="Answer") | |
answer_button.click(answer_question, inputs=[question_input, context_input], outputs=answer_output) | |
demo.launch() |