Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import git | |
| import os | |
| from transformers import pipeline, AutoTokenizer, AutoModelForQuestionAnswering | |
| def clone_repo(repo_url): | |
| local_path = "repo_clone" | |
| git.Repo.clone_from(repo_url, local_path) | |
| return local_path | |
| def process_repo(repo_url, option): | |
| if option == "Pre-trained": | |
| qa_pipeline = pipeline('question-answering') | |
| else: | |
| model_path = "./model" | |
| tokenizer = AutoTokenizer.from_pretrained(model_path) | |
| model = AutoModelForQuestionAnswering.from_pretrained(model_path) | |
| qa_pipeline = pipeline('question-answering', model=model, tokenizer=tokenizer) | |
| repo_path = clone_repo(repo_url) | |
| result = {} | |
| for root, dirs, files in os.walk(repo_path): | |
| for file in files: | |
| file_path = os.path.join(root, file) | |
| with open(file_path, 'r', encoding="utf-8") as f: | |
| text = f.read() | |
| summary = text[:50] + "..." if len(text) > 50 else text | |
| keywords = qa_pipeline(summary)['answer'] | |
| result[file_path] = {"summary": summary, "text": text, "keywords": keywords} | |
| return result | |
| def qa_chatbot(repo_dict, question): | |
| all_text = "" | |
| for file in repo_dict.values(): | |
| all_text += file['summary'] + " " + file['text'] + " " | |
| answer = qa_pipeline({'context': all_text, 'question': question})['answer'] | |
| return answer | |
| input_repo = gr.inputs.Textbox(label="Enter Git repository URL") | |
| output_processed_repo = gr.outputs.Textbox(label="Processed Git repository") | |
| output_qa_chatbot = gr.outputs.Textbox(label="Answer") | |
| model_options = ["Pre-trained", "Fine-tuned"] | |
| input_option = gr.inputs.Dropdown(choices=model_options, label="Choose a model option") | |
| process_repo_interface = gr.Interface(fn=process_repo, inputs=[input_repo, input_option], outputs=output_processed_repo, | |
| title="Process Git Repository") | |
| qa_chatbot_interface = gr.Interface(fn=qa_chatbot, inputs={"repo_dict": gr.inputs.Dictionary( | |
| key_type=gr.inputs.Textbox(label="File path"), | |
| value_type=gr.inputs.Dictionary(key_type=gr.inputs.Textbox(label="File content"), | |
| value_type=gr.inputs.Textbox(label="Keywords"))), | |
| "question": gr.inputs.Textbox(label="Question")}, | |
| outputs=output_qa_chatbot, | |
| title="QA Chatbot") | |
| process_repo_interface.launch() | |
| qa_chatbot_interface.launch() | |