import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM import torch # نماذج أكيدة ومفتوحة models = { "CodeGen 2B": "Salesforce/codegen-2B-multi", "CodeParrot": "codeparrot/codeparrot-small", "GPT-J-6B": "EleutherAI/gpt-j-6B", "GPT2": "gpt2" # نموذج بسيط كـ fallback } # تحميل النماذج loaded_models = {} for name, model_id in models.items(): tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, device_map="auto", torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32 ) loaded_models[name] = (tokenizer, model) # دالة التوليد def generate_code(prompt, model_name): tokenizer, model = loaded_models[model_name] inputs = tokenizer(prompt, return_tensors="pt").to(model.device) outputs = model.generate(**inputs, max_new_tokens=150) return tokenizer.decode(outputs[0], skip_special_tokens=True) # واجهة Gradio demo = gr.Interface( fn=generate_code, inputs=[ gr.Textbox(lines=5, label="اكتب وصف الكود (بالإنجليزية)"), gr.Radio(choices=list(models.keys()), label="اختر النموذج") ], outputs=gr.Code(label="الكود الناتج"), title="Code Generation with Open AI Models", description="اختر نموذجًا مفتوحًا وأدخل وصفًا ليتم توليد الكود تلقائيًا" ) demo.launch()