sample_coder / src /streamlit_app.py
pradeep4321's picture
Update src/streamlit_app.py
812346b verified
raw
history blame
3.25 kB
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
# ==============================
@st.cache_resource
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())