| import gradio as gr |
| import os |
| import shutil |
| from transformers import AutoTokenizer, AutoModelForCausalLM |
|
|
| |
| model_name = "Salesforce/codegen-350M-mono" |
| token = "token" |
|
|
| |
| tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=token) |
| model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=token) |
|
|
| |
| def explain_code(code): |
| inputs = tokenizer(code, return_tensors="pt") |
| outputs = model.generate(inputs['input_ids'], max_length=500) |
| explanation = tokenizer.decode(outputs[0], skip_special_tokens=True) |
| return explanation |
|
|
| |
| def extract_java_files(src_dir, dest_dir=None): |
| java_files = [] |
| for root, dirs, files in os.walk(src_dir): |
| for file in files: |
| if file.endswith('.java'): |
| java_file_path = os.path.join(root, file) |
| java_files.append(java_file_path) |
| |
| if dest_dir: |
| if not os.path.exists(dest_dir): |
| os.makedirs(dest_dir) |
| shutil.copy(java_file_path, os.path.join(dest_dir, file)) |
| return java_files |
|
|
| |
| def process_uploaded_file(file): |
| code = file.read().decode("utf-8") |
| return explain_code(code) |
|
|
| |
| src_directory = "path_to_your_directory" |
| dest_directory = "extracted_java_files" |
| java_files = extract_java_files(src_directory, dest_directory) |
|
|
| |
| def explain_from_uploaded_or_folder(file=None): |
| if file: |
| code = file.read().decode("utf-8") |
| else: |
| |
| if java_files: |
| with open(java_files[0], "r") as f: |
| code = f.read() |
| else: |
| return "No Java files found." |
|
|
| |
| return explain_code(code) |
|
|
| |
| iface = gr.Interface( |
| fn=explain_from_uploaded_or_folder, |
| inputs=[ |
| gr.File(label="Upload Java File", file_types=[".java"]), |
| gr.Button("Use First Extracted Java File", visible=not bool(java_files)) |
| ], |
| outputs="text", |
| live=True |
| ) |
|
|
| |
| iface.launch() |
|
|