import streamlit as st
from streamlit_chat import message
from transformers import AutoModelForCausalLM, AutoTokenizer
import random
# Title and UI Customization
st.set_page_config(page_title="AI Chatbot", page_icon="🤖", layout="wide")
st.markdown(
"""
""",
unsafe_allow_html=True,
)
# Load Hugging Face Model
def load_model():
model_name = "gpt2" # Replace with your preferred Hugging Face model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
return tokenizer, model
tokenizer, model = load_model()
# Store Chat History
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
# User Interface
def chatbot_ui():
st.markdown(
"""
🚀 AI Chatbot
Ask me anything, and I'll do my best to help you!
""",
unsafe_allow_html=True,
)
user_input = st.text_input("Type your question:", "")
if st.button("Send") and user_input:
generate_response(user_input)
# Display Chat History
for i, chat in enumerate(st.session_state.chat_history):
if chat['role'] == 'user':
message(chat['content'], is_user=True, key=f'user_{i}')
else:
message(chat['content'], key=f'bot_{i}')
# Generate Response
def generate_response(user_input):
inputs = tokenizer.encode(user_input + tokenizer.eos_token, return_tensors="pt")
outputs = model.generate(inputs, max_length=200, num_return_sequences=1, do_sample=True, temperature=0.7)
bot_reply = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Update Chat History
st.session_state.chat_history.append({"role": "user", "content": user_input})
st.session_state.chat_history.append({"role": "bot", "content": bot_reply})
chatbot_ui()