pradeep4321 commited on
Commit
967d7c5
Β·
verified Β·
1 Parent(s): fae2d0f

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +125 -23
src/streamlit_app.py CHANGED
@@ -1,3 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  def generate_code(prompt, language):
2
 
3
  full_prompt = f"""
@@ -5,11 +64,10 @@ You are an expert {language} programmer.
5
 
6
  Write clean, correct, and complete code.
7
 
8
- Requirements:
 
9
  - No explanations
10
- - Only code
11
- - Proper syntax
12
- - Complete function/program
13
 
14
  Task:
15
  {prompt}
@@ -19,22 +77,66 @@ Code:
19
 
20
  inputs = tokenizer(full_prompt, return_tensors="pt", truncation=True)
21
 
22
- with torch.no_grad():
23
- outputs = model.generate(
24
- **inputs,
25
- max_new_tokens=300,
26
- do_sample=True, # βœ… IMPORTANT
27
- temperature=0.2, # βœ… slight creativity
28
- top_p=0.9, # βœ… better coherence
29
- repetition_penalty=1.1, # βœ… avoid loops
30
- eos_token_id=tokenizer.eos_token_id,
31
- pad_token_id=tokenizer.eos_token_id
32
- )
33
-
34
- result = tokenizer.decode(outputs[0], skip_special_tokens=True)
35
-
36
- # Remove prompt part safely
37
- if "Code:" in result:
38
- result = result.split("Code:")[-1]
39
-
40
- return clean_code(result)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import torch
3
+ from transformers import AutoTokenizer, AutoModelForCausalLM
4
+
5
+ # ==============================
6
+ # PAGE CONFIG
7
+ # ==============================
8
+ st.set_page_config(page_title="πŸ’» AI Code Generator", layout="wide")
9
+
10
+ st.title("πŸ’» AI Code Generator (Stable Version)")
11
+
12
+ # ==============================
13
+ # LOAD MODEL (SAFE)
14
+ # ==============================
15
+ @st.cache_resource
16
+ def load_model():
17
+ model_name = "deepseek-ai/deepseek-coder-1.3b-instruct" # βœ… HF Free Safe
18
+
19
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
20
+
21
+ model = AutoModelForCausalLM.from_pretrained(
22
+ model_name,
23
+ torch_dtype=torch.float32
24
+ )
25
+
26
+ model.eval()
27
+ return tokenizer, model
28
+
29
+ # Load with spinner (IMPORTANT)
30
+ with st.spinner("πŸ”„ Loading AI model... Please wait"):
31
+ tokenizer, model = load_model()
32
+
33
+ st.success("βœ… Model Loaded Successfully")
34
+
35
+ # ==============================
36
+ # CLEAN OUTPUT
37
+ # ==============================
38
+ def clean_code(code):
39
+ code = code.strip()
40
+
41
+ # Remove unwanted text
42
+ remove_words = [
43
+ "Explanation:",
44
+ "Here is the code:",
45
+ "Output:",
46
+ "Answer:"
47
+ ]
48
+
49
+ for word in remove_words:
50
+ code = code.replace(word, "")
51
+
52
+ # Remove markdown
53
+ code = code.replace("```python", "").replace("```", "")
54
+
55
+ return code.strip()
56
+
57
+ # ==============================
58
+ # GENERATE CODE
59
+ # ==============================
60
  def generate_code(prompt, language):
61
 
62
  full_prompt = f"""
 
64
 
65
  Write clean, correct, and complete code.
66
 
67
+ Rules:
68
+ - Only return code
69
  - No explanations
70
+ - Complete solution
 
 
71
 
72
  Task:
73
  {prompt}
 
77
 
78
  inputs = tokenizer(full_prompt, return_tensors="pt", truncation=True)
79
 
80
+ try:
81
+ with torch.no_grad():
82
+ outputs = model.generate(
83
+ **inputs,
84
+ max_new_tokens=200,
85
+ do_sample=True,
86
+ temperature=0.3,
87
+ top_p=0.9,
88
+ repetition_penalty=1.1,
89
+ pad_token_id=tokenizer.eos_token_id
90
+ )
91
+
92
+ result = tokenizer.decode(outputs[0], skip_special_tokens=True)
93
+
94
+ if "Code:" in result:
95
+ result = result.split("Code:")[-1]
96
+
97
+ return clean_code(result)
98
+
99
+ except Exception as e:
100
+ return f"# ERROR: {str(e)}"
101
+
102
+ # ==============================
103
+ # SESSION STATE
104
+ # ==============================
105
+ if "history" not in st.session_state:
106
+ st.session_state.history = []
107
+
108
+ # ==============================
109
+ # UI INPUT
110
+ # ==============================
111
+ col1, col2 = st.columns(2)
112
+
113
+ with col1:
114
+ user_prompt = st.text_area("Describe your task", height=200)
115
+
116
+ with col2:
117
+ language = st.selectbox(
118
+ "Select Programming Language",
119
+ ["Python", "JavaScript", "SQL", "Java", "C++", "HTML", "CSS"]
120
+ )
121
+
122
+ # ==============================
123
+ # GENERATE BUTTON
124
+ # ==============================
125
+ if st.button("Generate Code"):
126
+ if not user_prompt.strip():
127
+ st.warning("⚠️ Please enter a task")
128
+ else:
129
+ with st.spinner("⚑ Generating code..."):
130
+ code = generate_code(user_prompt, language)
131
+
132
+ st.session_state.history.append((user_prompt, code))
133
+
134
+ # ==============================
135
+ # OUTPUT DISPLAY
136
+ # ==============================
137
+ if st.session_state.history:
138
+ st.subheader("πŸ“Œ Generated Results")
139
+
140
+ for q, c in reversed(st.session_state.history):
141
+ st.markdown(f"**πŸ§‘ Task:** {q}")
142
+ st.code(c, language=language.lower())