from transformers import T5Tokenizer, T5ForConditionalGeneration import gradio as gr import requests import re # تحميل نموذج CodeT5 model_name = "Salesforce/codet5-base" tokenizer = T5Tokenizer.from_pretrained(model_name) model = T5ForConditionalGeneration.from_pretrained(model_name) # وظيفة لجلب الأكواد من الإنترنت تلقائيًا (مثلاً GitHub Gist أو مستودعات GitHub) def fetch_code_from_github(keyword, language="python"): try: # البحث عن الأكواد عبر GitHub API url = f"https://api.github.com/search/code?q={keyword}+language:{language}" headers = {"Accept": "application/vnd.github.v3+json"} response = requests.get(url, headers=headers) if response.status_code == 200: results = response.json() # استخراج الروابط والمحتوى items = results.get("items", []) if items: first_result = items[0] file_url = first_result["html_url"] return f"Code fetched from: {file_url}" else: return "No matching code found on GitHub." else: return f"Error fetching code: {response.status_code}" except Exception as e: return str(e) # وظيفة للتعديل أو التوليد باستخدام CodeT5 def modify_or_generate_code(input_text, task="generate_code"): try: inputs = tokenizer(input_text, return_tensors="pt", max_length=512, truncation=True) outputs = model.generate(**inputs, max_length=512, num_beams=4, early_stopping=True) generated_code = tokenizer.decode(outputs[0], skip_special_tokens=True) return generated_code except Exception as e: return str(e) # واجهة Gradio def main_interface(task, input_text, fetch_keyword=None, language="python"): if task == "fetch_code": return fetch_code_from_github(fetch_keyword, language) elif task == "generate_code": return modify_or_generate_code(input_text, task) else: return "Invalid task selected." # إنشاء واجهة Gradio interface = gr.Interface( fn=main_interface, inputs=[ gr.Radio(["fetch_code", "generate_code"], label="Task"), gr.Textbox(lines=5, placeholder="Enter your input text or description here...", label="Input Text"), gr.Textbox(placeholder="Enter keyword for fetching code...", label="Fetch Keyword (Optional)"), gr.Textbox(value="python", placeholder="Language (default: python)", label="Programming Language"), ], outputs="text", title="CodeT5 Code Assistant", description="Generate or fetch code snippets using CodeT5 with extended features.", examples=[ ["generate_code", "Translate Python to Java: def add(a, b): return a + b", None, "python"], ["fetch_code", None, "factorial", "python"] ] ) if __name__ == "__main__": interface.launch()