File size: 1,833 Bytes
60c2e3a
9345df8
07ee8fe
19c7c87
7545181
f0d1ea9
60c2e3a
 
9345df8
60c2e3a
07ee8fe
a1094ec
f0d1ea9
7545181
 
07ee8fe
 
 
7545181
f0d1ea9
7545181
 
 
 
 
 
 
 
 
9345df8
 
 
19c7c87
9345df8
 
a1094ec
9345df8
 
 
 
 
 
 
 
 
 
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
import os
import streamlit as st
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import torch
import subprocess

# Force CPU usage & prevent model download issues
os.environ["HF_HOME"] = "./cache"  # Store model locally
MODEL_NAME = "Salesforce/codegen-350M-mono"  # Updated model

tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)

def generate_code(description, language):
    prompt = f"Generate {language} code: {description}"
    inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True)
    outputs = model.generate(**inputs, max_length=400)
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return response.strip()

def execute_code(code, language):
    if language == "Python":
        try:
            result = subprocess.run(['python3', '-c', code], capture_output=True, text=True, timeout=5)
            return result.stdout if result.stdout else result.stderr
        except Exception as e:
            return str(e)
    return "Code execution only supported for Python."

# Streamlit UI
st.title("Multi-Language Text-to-Code AI")
st.write("Convert natural language descriptions into code in different programming languages! Run Python code directly in the app.")

description = st.text_area("Describe your coding task...")
language = st.selectbox("Select Programming Language", ["Python", "JavaScript", "Java"])

if st.button("Generate Code"):
    if description:
        code = generate_code(description, language)
        st.code(code, language=language.lower())
        
        if language == "Python":
            output = execute_code(code, language)
            st.text_area("Execution Output", output, height=150)
    else:
        st.warning("Please enter a description to generate code.")