| import os |
| import streamlit as st |
| from transformers import AutoModelForSeq2SeqLM, AutoTokenizer |
| import torch |
| import subprocess |
|
|
| |
| os.environ["HF_HOME"] = "./cache" |
| MODEL_NAME = "Salesforce/codegen-350M-mono" |
|
|
| 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." |
|
|
| |
| 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.") |
|
|