File size: 1,702 Bytes
ce236d9
6177bd2
5ecd486
5f090e3
35f2b2d
ce236d9
 
f6f7c01
5f090e3
ce236d9
eb58738
 
 
 
ce236d9
5f090e3
 
a30219c
eb58738
5f090e3
 
 
ce236d9
a30219c
 
 
 
eb58738
 
 
ce236d9
f6f7c01
5f090e3
f6f7c01
5f090e3
a30219c
 
 
 
 
 
 
 
ce236d9
 
5ecd486
e55502b
a30219c
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
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import gradio as gr

# CodeT5 modelini yükle
model_name = "Salesforce/codet5-large"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

# Kod üretme fonksiyonu
def generate_java_code(prompt):
    # Girdi metnini modele uygun bir şekilde biçimlendir
    prompt = f"Generate a complete Java program:\n{prompt}"
    
    # Girdiyi tokenize et ve modele gönder
    inputs = tokenizer(prompt, return_tensors="pt", max_length=512, truncation=True)
    outputs = model.generate(
        inputs["input_ids"],
        max_length=300,  # Çıktının uzunluğunu artır
        num_beams=5,     # Beam search ile kaliteyi artır
        early_stopping=True
    )
    # Tokenize edilmiş çıktıyı kod olarak döndür
    code = tokenizer.decode(outputs[0], skip_special_tokens=True)
    
    # Post-processing: Eksik yapıları düzelt
    if "public static void main" not in code:
        code = f"public class Main {{\n{code}\n}}"
    if code.strip().endswith("{"):
        code += "\n    // Complete the logic here\n}"
    
    return code

# Gradio UI tasarımı
with gr.Blocks() as demo:
    gr.Markdown("<h1 style='text-align: center;'>Java Kod Üretici (CodeT5)</h1>")
    prompt = gr.Textbox(
        label="Doğal Dil Girdisi",
        placeholder="Örnek: Write a Java program to find the larger of two numbers."
    )
    output_code = gr.Textbox(
        label="Üretilen Java Kodu",
        lines=15,  # Çıktı alanı için daha fazla satır
    )
    btn = gr.Button("Kod Üret")
    btn.click(generate_java_code, inputs=prompt, outputs=output_code)

demo.launch()