CoolFace
Apppublic

a00801/sidang-simulation

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.py83 linesDownload Raw Back to root
1import os2import torch3from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline4import gradio as gr5from pdfminer.high_level import extract_text6import docx7 8# Konfigurasi model9MODEL_NAME = "gpt2"  # Ganti dengan model yang diinginkan10tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)11model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)12summarizer = pipeline("summarization", model="facebook/bart-large-cnn")13 14def summarize_text(text):15    summary = summarizer(text, max_length=1500, min_length=500, do_sample=False)16    return summary[0]['summary_text']17 18def ask_model(prompt):19    if len(prompt) > 1024:20        summarized_prompt = summarize_text(prompt)21        inputs = tokenizer(summarized_prompt, return_tensors="pt", truncation=True)22    else:23        inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=1024)24 25    with torch.no_grad():26        outputs = model.generate(27            **inputs,28            max_new_tokens=50029        )30    return tokenizer.decode(outputs[0], skip_special_tokens=True)31 32# Fungsi untuk ekstrak teks dari file DOCX33def extract_text_from_docx(docx_path):34    doc = docx.Document(docx_path)35    return '\n'.join([para.text for para in doc.paragraphs])36 37# Fungsi untuk ekstrak teks dari file PDF38def extract_text_from_pdf(pdf_path):39    return extract_text(pdf_path)40 41def process_file(file):42    if file.name.endswith('.pdf'):43        text = extract_text_from_pdf(file.name)44    elif file.name.endswith('.docx'):45        text = extract_text_from_docx(file.name)46    else:47        return "Unsupported file type", None48 49    return text50 51def chat_function(user_input, history):52    if history is None:53        history = []54    prompt = user_input55    response = ask_model(prompt)56    history.append((user_input, response))57    return "", history58 59def upload_and_process(file, user_input, history):60    text = process_file(file)61    if text.startswith("Unsupported"):62        return text, history63    initial_prompt = f"Here is the thesis content: {text}. Please ask questions about the methodology."64    initial_question = ask_model(initial_prompt)65    history.append(("Upload Complete", initial_question))66    return initial_question, history67 68# Antarmuka Gradio69with gr.Blocks() as demo:70    with gr.Row():71        with gr.Column():72            file_input = gr.File(label="Upload your thesis file")73            text_input = gr.Textbox(label="Type your message here")74            state = gr.State()75            76            upload_button = gr.Button("Upload and Process")77            chat_output = gr.Chatbot()78            79            upload_button.click(upload_and_process, inputs=[file_input, text_input, state], outputs=[chat_output, state])80            text_input.submit(chat_function, inputs=[text_input, state], outputs=[chat_output, state])81 82demo.launch()83