Group2255's picture
Update app.py
d5cf00e verified
Raw History Blame Contribute Delete
3.93 kB
# app.py
# PromptPilot: Unified AI Chatbot with 5 Modes (AML-3304 Assignment)
import streamlit as st
from transformers import AutoTokenizer, AutoModelForCausalLM, AutoModelForSeq2SeqLM
import torch
st.set_page_config(page_title="PromptPilot - Unified AI Chatbot", layout="centered")
st.title("πŸ€– PromptPilot - Unified AI Chatbot")
st.markdown("AML-3304 Assignment: From Tokens to Transformers")
# Initialize session state
if 'mode' not in st.session_state:
st.session_state.mode = 'Code Generator'
# UI Buttons
cols = st.columns(5)
with cols[0]:
if st.button("πŸ§‘β€πŸ’» Code Generator"):
st.session_state.mode = 'Code Generator'
with cols[1]:
if st.button("πŸ“˜ General Q&A"):
st.session_state.mode = 'General Q&A'
with cols[2]:
if st.button("πŸ“Š Bayesian Q&A"):
st.session_state.mode = 'Bayesian Q&A'
with cols[3]:
if st.button("🌐 Deep Coder"):
st.session_state.mode = 'Deep Coder'
with cols[4]:
if st.button("πŸ” Transformer Explorer"):
st.session_state.mode = 'Transformer Explorer'
st.markdown(f"### πŸ”„ Current Mode: **{st.session_state.mode}**")
# User input
user_input = st.text_area("Enter your prompt/question:")
# Load models
@st.cache_resource
def load_codegen():
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-mono")
return tokenizer, model
@st.cache_resource
def load_flan():
tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-base")
model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-base")
return tokenizer, model
# Inference
if user_input and st.session_state.mode:
with st.spinner("Generating response..."):
if st.session_state.mode == 'Code Generator':
tokenizer, model = load_codegen()
inputs = tokenizer(user_input, return_tensors="pt")
outputs = model.generate(inputs["input_ids"], max_new_tokens=128, do_sample=True, temperature=0.7, pad_token_id=tokenizer.eos_token_id)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.subheader("πŸ’» Generated Code:")
st.code(result, language="python")
elif st.session_state.mode == 'General Q&A':
tokenizer, model = load_flan()
inputs = tokenizer(user_input, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=150)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.subheader("πŸ“˜ Answer:")
st.write(result)
elif st.session_state.mode == 'Bayesian Q&A':
tokenizer, model = load_flan()
inputs = tokenizer(user_input, return_tensors="pt")
outputs = model.generate(**inputs, do_sample=True, top_k=40, temperature=0.9, max_new_tokens=100)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.subheader("πŸ“Š Bayesian-style Answer:")
st.write(result)
elif st.session_state.mode == 'Deep Coder':
tokenizer, model = load_codegen()
inputs = tokenizer(user_input, return_tensors="pt")
outputs = model.generate(inputs["input_ids"], max_new_tokens=128, do_sample=True, temperature=0.8)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.subheader("🌐 Code Output:")
st.code(result, language="python")
elif st.session_state.mode == 'Transformer Explorer':
tokenizer, model = load_flan()
prompt = f"Paraphrase this: {user_input}"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.subheader("πŸ” Paraphrased Text:")
st.write(result)