import streamlit as st from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM # تنظیمات ادمین ADMIN_USERNAME = "admin" ADMIN_PASSWORD = "admin" # CSS برای ظاهر برنامه CUSTOM_CSS = """ """ st.markdown(CUSTOM_CSS, unsafe_allow_html=True) class ModernChatbot: def __init__(self): # تنظیم بارگذاری تنبل مدل if "model_loaded" not in st.session_state: st.session_state.model_loaded = False def load_model(self): """بارگذاری مدل و توکنایزر تنها در صورت نیاز""" if not st.session_state.model_loaded: model_name = "HuggingFaceH4/zephyr-7b-beta" st.session_state.tokenizer = AutoTokenizer.from_pretrained(model_name) st.session_state.model = AutoModelForCausalLM.from_pretrained(model_name) st.session_state.chat_pipeline = pipeline( "text-generation", model=st.session_state.model, tokenizer=st.session_state.tokenizer ) st.session_state.model_loaded = True def generate_response(self, message): """تولید پاسخ با مدل بارگذاری شده""" self.load_model() response = st.session_state.chat_pipeline( message, max_length=50, num_return_sequences=1 )[0]['generated_text'] return response def login_admin(self, username, password): """ورود به عنوان مدیر""" return username == ADMIN_USERNAME and password == ADMIN_PASSWORD # ذخیره تاریخچه مکالمات و وضعیت ورود ادمین در session_state if "conversation_history" not in st.session_state: st.session_state.conversation_history = [] # ایجاد نمونه چتبات chatbot = ModernChatbot() # آیکون و پاپآپ ورود ادمین if st.sidebar.button("ورود ادمین"): username = st.sidebar.text_input("نام کاربری") password = st.sidebar.text_input("رمز عبور", type="password") if st.sidebar.button("تایید"): if chatbot.login_admin(username, password): st.session_state.admin_logged_in = True st.sidebar.success("ورود موفقیتآمیز بود") else: st.sidebar.error("نام کاربری یا رمز عبور اشتباه است") # نمایش مکالمات st.markdown("