Spaces:
Running
Running
File size: 4,559 Bytes
7bf03af 600a99f b98013a 04898d0 b98013a 7bf03af 600a99f 7bf03af ba6e68a 257c56c 1face4b 257c56c 7bf03af 600a99f 7bf03af 600a99f ba6e68a 7bf03af 6526fce 7310720 ca5ac12 7bf03af ba6e68a 600a99f 7bf03af |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import gradio as gr
import traceback
from transformers import pipeline
# Yapay zeka modelini yükle
ai_analyzer = pipeline(
"text-generation",
model="Salesforce/codet5-base"
)
# Hata türlerine özel çözüm önerileri
ERROR_SUGGESTIONS = {
"SyntaxError": {
"suggestion": "Kodun sözdiziminde hata var. Parantezleri veya iki nokta üst üste (:) işaretlerini kontrol edin.",
"example": "Doğru kullanım:\n```python\nprint('Merhaba Dünya!')\n```"
},
"NameError": {
"suggestion": "Tanımlanmamış bir değişken veya fonksiyon kullanılmış. Değişkeni veya fonksiyonu tanımladığınıza emin olun.",
"example": "Doğru kullanım:\n```python\nx = 5\nprint(x)\n```"
},
"IndentationError": {
"suggestion": "Girinti hatası var. Python, girintiye duyarlı olduğu için satır başlarını kontrol edin.",
"example": "Doğru kullanım:\n```python\nif True:\n print('Doğru girinti')\n```"
},
"TypeError": {
"suggestion": "Veri tipleri uyumsuz olabilir. Örneğin, bir string ile bir integer toplanamaz.",
"example": "Doğru kullanım:\n```python\nnumber = 5\ntext = 'Hello'\nresult = text + str(number)\nprint(result)\n```"
},
"ZeroDivisionError": {
"suggestion": "Bir sayıyı sıfıra bölemeyiz. Bölme işlemlerini kontrol edin.",
"example": "Doğru kullanım:\n```python\nx = 10\ny = 2\nresult = x / y\nprint(result)\n```"
},
"IndexError": {
"suggestion": "Dizinin (liste, tuple) olmayan bir indeksine erişmeye çalışıyorsunuz.",
"example": "Doğru kullanım:\n```python\nmy_list = [1, 2, 3]\nprint(my_list[2])\n```"
},
"KeyError": {
"suggestion": "Sözlükte (dictionary) olmayan bir anahtara erişmeye çalışıyorsunuz.",
"example": "Doğru kullanım:\n```python\nmy_dict = {'a': 1, 'b': 2}\nprint(my_dict['a'])\n```"
},
"AttributeError": {
"suggestion": "Bir nesnenin niteliklerine veya metodlarına yanlış şekilde erişilmeye çalışılmış.",
"example": "Doğru kullanım:\n```python\nmy_str = 'hello'\nprint(my_str.upper())\n```"
},
"FileNotFoundError": {
"suggestion": "Dosya bulunamadı. Dosya yolunu ve adını kontrol edin.",
"example": "Doğru kullanım:\n```python\nwith open('dosya.txt', 'r') as file:\n content = file.read()\n```"
},
"OverflowError": {
"suggestion": "Bir sayı matematiksel olarak çok büyük veya küçük. Hesaplama sınırlarını aşmış olabilir.",
"example": "Doğru kullanım:\n```python\nimport math\nprint(math.exp(10))\n```"
},
"ValueError": {
"suggestion": "Veri tipi yanlış. Verilen veri beklenmeyen bir tipte olabilir.",
"example": "Doğru kullanım:\n```python\nnumber = int('10')\nprint(number)\n```"
},
}
# Kodun analiz edilmesi ve hataların tespiti
def analyze_code(code):
try:
exec(code, {}) # Güvenli şekilde kodu çalıştır
return "✅ Kod hatasız çalıştı!"
except Exception as e:
error_type = type(e).__name__ # Hata tipini al
error_message = str(e) # Hata mesajı
traceback_info = traceback.format_exc() # Hata ile ilgili detaylı izleme bilgisi
suggestion = ERROR_SUGGESTIONS.get(error_type, {"suggestion": "Bu hata için özel bir çözümümüz yok.", "example": ""})
# Yapay zeka destekli analiz: Hata türüne göre yapay zeka açıklaması
ai_prompt = f"Python'da '{error_type}' hatası oluştu. Hata mesajı: {error_message}.?"
ai_response = ai_analyzer(ai_prompt, max_length=150)[0]['generated_text']
# Çözüm önerisi ve doğru kullanım örneği
return f"❌ **{error_type} Hatası**:\n{error_message}\n\n**Hata Satırı:**\n{traceback_info}\n\n💡 **Çözüm Önerisi:** {suggestion['suggestion']}\n\n📝 **Doğru Kullanım Örneği:**\n{suggestion['example']}\n\n🤖 **Yapay Zeka Açıklaması:** {ai_response}"
# ✅ Kullanıcı Dostu Gradio Arayüzü
with gr.Blocks() as demo:
gr.Markdown("## 🐍 Python Hata Analizcisi (Yapay Zeka Destekli)")
gr.Markdown("Python kodunuzu girin, hataları analiz edip çözüm önerileri sunalım!")
with gr.Row():
code_input = gr.Code(language="python", lines=10, label="📝 Kodunuzu Buraya Yazın:")
check_button = gr.Button("🚀 Analiz Et")
output_text = gr.Textbox(label="🔍 Sonuç", lines=10)
check_button.click(analyze_code, inputs=code_input, outputs=output_text)
demo.launch()
|