Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| # ============================== | |
| # PAGE CONFIG | |
| # ============================== | |
| st.set_page_config(page_title="💻 AI Code Generator", layout="wide") | |
| # ============================== | |
| # LOAD MODEL | |
| # ============================== | |
| def load_model(): | |
| model_name = "deepseek-ai/deepseek-coder-6.7b-instruct" # 🔥 BEST MODEL | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| torch_dtype=torch.float32, | |
| device_map="auto" # auto uses GPU if available | |
| ) | |
| return tokenizer, model | |
| tokenizer, model = load_model() | |
| # ============================== | |
| # CLEAN OUTPUT | |
| # ============================== | |
| def clean_code(code): | |
| code = code.strip() | |
| remove_words = [ | |
| "Explanation:", | |
| "Here is the code:", | |
| "Output:", | |
| "Answer:" | |
| ] | |
| for word in remove_words: | |
| code = code.replace(word, "") | |
| # Remove markdown formatting | |
| code = code.replace("```python", "").replace("```", "") | |
| return code.strip() | |
| # ============================== | |
| # GENERATE CODE | |
| # ============================== | |
| def generate_code(prompt, language): | |
| full_prompt = f""" | |
| You are an expert {language} developer. | |
| Generate clean, correct, and complete code. | |
| Rules: | |
| - Only return code | |
| - No explanation | |
| - Proper syntax | |
| - Complete working solution | |
| Task: | |
| {prompt} | |
| Code: | |
| """ | |
| inputs = tokenizer(full_prompt, return_tensors="pt", truncation=True) | |
| with torch.no_grad(): | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=350, | |
| do_sample=True, | |
| temperature=0.2, | |
| top_p=0.9, | |
| repetition_penalty=1.1, | |
| eos_token_id=tokenizer.eos_token_id, | |
| pad_token_id=tokenizer.eos_token_id | |
| ) | |
| result = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| if "Code:" in result: | |
| result = result.split("Code:")[-1] | |
| return clean_code(result) | |
| # ============================== | |
| # SESSION STATE (CHAT HISTORY) | |
| # ============================== | |
| if "history" not in st.session_state: | |
| st.session_state.history = [] | |
| # ============================== | |
| # UI | |
| # ============================== | |
| st.title("💻 AI Code Generator (Advanced)") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| user_prompt = st.text_area("Describe your task", height=200) | |
| with col2: | |
| language = st.selectbox( | |
| "Select Programming Language", | |
| ["Python", "JavaScript", "SQL", "Java", "C++", "HTML", "CSS"] | |
| ) | |
| # ============================== | |
| # GENERATE BUTTON | |
| # ============================== | |
| if st.button("Generate Code"): | |
| if not user_prompt.strip(): | |
| st.warning("⚠️ Please enter a task") | |
| else: | |
| with st.spinner("⚡ Generating high-quality code..."): | |
| code = generate_code(user_prompt, language) | |
| st.session_state.history.append((user_prompt, code)) | |
| # ============================== | |
| # DISPLAY HISTORY | |
| # ============================== | |
| for q, c in reversed(st.session_state.history): | |
| st.markdown(f"### 🧑 Task:\n{q}") | |
| st.code(c, language=language.lower()) |