Group2255 commited on
Commit
950d6d9
Β·
verified Β·
1 Parent(s): 884dc6f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +78 -92
app.py CHANGED
@@ -1,117 +1,103 @@
1
  # app.py
2
- # PromptPilot: Unified Multi-Model Chatbot (AML-3304 Final Submission)
3
 
4
  import streamlit as st
5
- from transformers import (
6
- AutoTokenizer,
7
- AutoModelForCausalLM,
8
- AutoModelForSeq2SeqLM
9
- )
10
  import torch
11
 
12
- st.set_page_config(page_title="PromptPilot", layout="centered")
13
  st.title("πŸ€– PromptPilot - Unified AI Chatbot")
14
-
15
  st.markdown("AML-3304 Assignment: From Tokens to Transformers")
16
 
17
- # Track current mode
18
- if "mode" not in st.session_state:
19
- st.session_state.mode = "Code Generator"
20
 
21
- # Mode selection buttons
22
  cols = st.columns(5)
23
- mode_labels = [
24
- ("πŸ‘¨β€πŸ’» Code Generator", "Code Generator"),
25
- ("πŸ“˜ General Q&A", "General Q&A"),
26
- ("πŸ“Š Bayesian Q&A", "Bayesian Q&A"),
27
- ("🌐 DeepSeek Coder", "DeepSeek"),
28
- ("πŸ” Tokenizer Introspector", "Tokenizer")
29
- ]
30
-
31
- for i, (label, mode) in enumerate(mode_labels):
32
- if cols[i].button(label):
33
- st.session_state.mode = mode
 
 
 
 
34
 
35
  st.markdown(f"### πŸ”„ Current Mode: **{st.session_state.mode}**")
36
 
37
- # Input field
38
- user_input = st.text_area("Enter your prompt/question:", height=100)
39
 
40
- # Cached model loaders
41
  @st.cache_resource
42
  def load_codegen():
43
- tok = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
44
- mod = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-mono")
45
- return tok, mod
46
 
47
  @st.cache_resource
48
  def load_flan():
49
- tok = AutoTokenizer.from_pretrained("google/flan-t5-base")
50
- mod = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-base")
51
- return tok, mod
52
 
53
  @st.cache_resource
54
  def load_deepseek():
55
- tok = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-coder-1.3b-instruct")
56
- mod = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-coder-1.3b-instruct")
57
- return tok, mod
58
 
59
- # Run selected model logic
60
- if user_input:
61
- with st.spinner("Generating response..."):
62
- if st.session_state.mode == "Code Generator":
63
- tok, mod = load_codegen()
64
- inputs = tok(user_input, return_tensors="pt")
65
- outputs = mod.generate(
66
- inputs.input_ids,
67
- max_new_tokens=128,
68
- do_sample=True,
69
- temperature=0.7,
70
- pad_token_id=tok.eos_token_id
71
- )
72
- res = tok.decode(outputs[0], skip_special_tokens=True)
73
- st.subheader("πŸ’» Code Output")
74
- st.code(res, language="python")
75
 
76
- elif st.session_state.mode == "General Q&A":
77
- tok, mod = load_flan()
78
- inputs = tok(user_input, return_tensors="pt")
79
- outputs = mod.generate(inputs.input_ids, max_new_tokens=100)
80
- res = tok.decode(outputs[0], skip_special_tokens=True)
 
 
 
 
 
 
 
 
 
 
 
81
  st.subheader("πŸ“˜ Answer")
82
- st.write(res)
83
-
84
- elif st.session_state.mode == "Bayesian Q&A":
85
- tok, mod = load_flan()
86
- inputs = tok(user_input, return_tensors="pt")
87
- outputs = mod.generate(
88
- inputs.input_ids,
89
- do_sample=True,
90
- top_k=50,
91
- temperature=0.9,
92
- max_new_tokens=100
93
- )
94
- res = tok.decode(outputs[0], skip_special_tokens=True)
95
- st.subheader("πŸ“Š Bayesian-style Sampled Answer")
96
- st.write(res)
97
-
98
- elif st.session_state.mode == "DeepSeek":
99
- tok, mod = load_deepseek()
100
- inputs = tok(user_input, return_tensors="pt")
101
- outputs = mod.generate(
102
- inputs.input_ids,
103
- max_new_tokens=128,
104
- temperature=0.7,
105
- do_sample=True,
106
- pad_token_id=tok.eos_token_id
107
- )
108
- res = tok.decode(outputs[0], skip_special_tokens=True)
109
- st.subheader("🌐 DeepSeek Coder Output")
110
- st.code(res, language="python")
111
-
112
- elif st.session_state.mode == "Tokenizer":
113
- tok, _ = load_flan()
114
- tokens = tok.tokenize(user_input)
115
- ids = tok.convert_tokens_to_ids(tokens)
116
- st.subheader("πŸ” Tokenization Breakdown")
117
- st.write({"Tokens": tokens, "Token IDs": ids})
 
1
  # app.py
2
+ # PromptPilot: Unified AI Chatbot with 5 Models (AML-3304 Assignment)
3
 
4
  import streamlit as st
5
+ from transformers import AutoTokenizer, AutoModelForCausalLM, AutoModelForSeq2SeqLM
 
 
 
 
6
  import torch
7
 
8
+ st.set_page_config(page_title="PromptPilot - Unified AI Chatbot", layout="centered")
9
  st.title("πŸ€– PromptPilot - Unified AI Chatbot")
 
10
  st.markdown("AML-3304 Assignment: From Tokens to Transformers")
11
 
12
+ # Initialize session state
13
+ if 'mode' not in st.session_state:
14
+ st.session_state.mode = 'Code Generator'
15
 
16
+ # UI Buttons for mode switching
17
  cols = st.columns(5)
18
+ with cols[0]:
19
+ if st.button("πŸ§‘β€πŸ’» Code Generator"):
20
+ st.session_state.mode = 'Code Generator'
21
+ with cols[1]:
22
+ if st.button("πŸ“˜ General Q&A"):
23
+ st.session_state.mode = 'General Q&A'
24
+ with cols[2]:
25
+ if st.button("πŸ“Š Bayesian Q&A"):
26
+ st.session_state.mode = 'Bayesian Q&A'
27
+ with cols[3]:
28
+ if st.button("🌐 DeepSeek Coder"):
29
+ st.session_state.mode = 'DeepSeek Coder'
30
+ with cols[4]:
31
+ if st.button("πŸ” Tokenizer Introspector"):
32
+ st.session_state.mode = 'Tokenizer'
33
 
34
  st.markdown(f"### πŸ”„ Current Mode: **{st.session_state.mode}**")
35
 
36
+ # User input
37
+ user_input = st.text_area("Enter your prompt/question:")
38
 
39
+ # Cache model loaders
40
  @st.cache_resource
41
  def load_codegen():
42
+ tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
43
+ model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-mono")
44
+ return tokenizer, model
45
 
46
  @st.cache_resource
47
  def load_flan():
48
+ tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-base")
49
+ model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-base")
50
+ return tokenizer, model
51
 
52
  @st.cache_resource
53
  def load_deepseek():
54
+ tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-llm-7b-instruct")
55
+ model = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-llm-7b-instruct")
56
+ return tokenizer, model
57
 
58
+ @st.cache_resource
59
+ def load_deepseek_coder():
60
+ tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-coder-6.7b-instruct")
61
+ model = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-coder-6.7b-instruct")
62
+ return tokenizer, model
 
 
 
 
 
 
 
 
 
 
 
63
 
64
+ # Model inference
65
+ if user_input and st.session_state.mode:
66
+ with st.spinner("Generating response..."):
67
+ if st.session_state.mode == 'Code Generator':
68
+ tokenizer, model = load_codegen()
69
+ inputs = tokenizer(user_input, return_tensors="pt")
70
+ outputs = model.generate(inputs["input_ids"], max_new_tokens=128, do_sample=True, temperature=0.7, pad_token_id=tokenizer.eos_token_id)
71
+ result = tokenizer.decode(outputs[0], skip_special_tokens=True)
72
+ st.subheader("πŸ’» Generated Code:")
73
+ st.code(result, language="python")
74
+
75
+ elif st.session_state.mode == 'General Q&A':
76
+ tokenizer, model = load_deepseek()
77
+ inputs = tokenizer(user_input, return_tensors="pt")
78
+ outputs = model.generate(**inputs, max_new_tokens=150)
79
+ result = tokenizer.decode(outputs[0], skip_special_tokens=True)
80
  st.subheader("πŸ“˜ Answer")
81
+ st.write(result)
82
+
83
+ elif st.session_state.mode == 'Bayesian Q&A':
84
+ tokenizer, model = load_deepseek()
85
+ inputs = tokenizer(user_input, return_tensors="pt")
86
+ outputs = model.generate(**inputs, do_sample=True, temperature=0.9, top_k=40, max_new_tokens=100)
87
+ result = tokenizer.decode(outputs[0], skip_special_tokens=True)
88
+ st.subheader("πŸ“Š Bayesian-style Answer:")
89
+ st.write(result)
90
+
91
+ elif st.session_state.mode == 'DeepSeek Coder':
92
+ tokenizer, model = load_deepseek_coder()
93
+ inputs = tokenizer(user_input, return_tensors="pt")
94
+ outputs = model.generate(inputs["input_ids"], max_new_tokens=128, do_sample=True, temperature=0.8)
95
+ result = tokenizer.decode(outputs[0], skip_special_tokens=True)
96
+ st.subheader("🌐 DeepSeek Code:")
97
+ st.code(result, language="python")
98
+
99
+ elif st.session_state.mode == 'Tokenizer':
100
+ tokenizer, _ = load_flan()
101
+ tokens = tokenizer.tokenize(user_input)
102
+ st.subheader("πŸ”¬ Tokenized Output:")
103
+ st.write(tokens)