Really-amin commited on
Commit
3bb2a07
·
verified ·
1 Parent(s): c6417ce

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -56
app.py CHANGED
@@ -3,77 +3,74 @@ from transformers import pipeline
3
  import logging
4
 
5
  # تنظیم لاگینگ
6
- logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
7
 
8
- # تنظیمات برنامه
9
- st.set_page_config(
10
- page_title="چت‌بات هوش مصنوعی",
11
- page_icon="💬",
12
- layout="wide",
13
- initial_sidebar_state="expanded",
14
- )
15
-
16
- # بارگذاری مدل
17
- model_name = "distilgpt2" # مدل سبک‌تر برای عملکرد بهتر
18
  try:
19
- generator = pipeline("text-generation", model=model_name)
20
- st.sidebar.success("مدل با موفقیت بارگذاری شد!")
21
  except Exception as e:
22
- st.sidebar.error("مدل بارگذاری نشد!")
23
  logging.error(f"Error loading model: {e}")
24
  generator = None
25
 
26
- # تاریخچه چت در حالت جلسه
27
- if "chat_history" not in st.session_state:
28
  st.session_state.chat_history = []
29
 
30
- # افزودن پیام به تاریخچه
31
- def add_message(message, sender):
32
- st.session_state.chat_history.append({"sender": sender, "message": message})
33
 
34
- # نمایش تاریخچه چت
35
- def display_chat():
36
- st.markdown("### 💬 گفتگو")
37
- for chat in st.session_state.chat_history:
38
- sender = "شما" if chat["sender"] == "user" else "دستیار"
39
- st.markdown(f"**{sender}:** {chat['message']}")
40
- st.divider()
41
 
42
- # ارسال پیام
43
  def send_message(user_input):
44
- if user_input and generator:
45
- add_message(user_input, "user")
46
  try:
47
- response = generator(user_input, max_length=50, num_return_sequences=1)
48
- generated_text = response[0]["generated_text"]
49
- add_message(generated_text, "assistant")
 
 
 
 
 
50
  except Exception as e:
51
- error_message = "مشکلی در تولید پاسخ رخ داد!"
52
- logging.error(f"Error generating text: {e}")
53
- add_message(error_message, "assistant")
54
 
55
- # طراحی رابط کاربری
56
- st.title("💬 چت‌بات هوش مصنوعی برای تحلیل ارزهای دیجیتال")
57
- st.sidebar.header("تنظیمات")
58
- st.sidebar.info(
59
- """
60
- **راهنما**:
61
- - این چت‌بات از مدل GPT استفاده می‌کند.
62
- - می‌توانید سوالات مرتبط با ارزهای دیجیتال را بپرسید.
63
- """
64
- )
65
 
66
- # پیام خوش‌آمدگویی (فقط یک‌بار)
67
- if not st.session_state.chat_history:
68
- add_message("سلام! من دستیار هوش مصنوعی شما هستم. چطور می‌توانم کمکتان کنم؟", "assistant")
 
 
 
69
 
70
  # نمایش تاریخچه چت
71
- display_chat()
 
72
 
73
- # ورودی پیام
74
- st.text_input(
75
- "سوال خود را اینجا وارد کنید:",
76
- placeholder="مثلاً تحلیل قیمت بیت‌کوین...",
77
- key="user_input",
78
- on_change=lambda: send_message(st.session_state.user_input),
79
- )
 
 
 
 
 
 
3
  import logging
4
 
5
  # تنظیم لاگینگ
6
+ logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
7
 
8
+ # تغییر مدل به FinBERT
9
+ model_name = "yiyanghkust/finbert-tone" # مدل FinBERT برای تحلیل احساسات مالی
 
 
 
 
 
 
 
 
10
  try:
11
+ generator = pipeline('sentiment-analysis', model=model_name) # بارگذاری مدل
12
+ st.sidebar.success(f"مدل '{model_name}' با موفقیت بارگذاری شد.")
13
  except Exception as e:
14
+ st.sidebar.error("مدل بارگذاری نشد. لطفاً بررسی کنید.")
15
  logging.error(f"Error loading model: {e}")
16
  generator = None
17
 
18
+ # ایجاد حالت‌های جلسه برای ذخیره تاریخچه چت
19
+ if 'chat_history' not in st.session_state:
20
  st.session_state.chat_history = []
21
 
22
+ # تابع برای افزودن پیام
23
+ def add_message(text, is_user):
24
+ st.session_state.chat_history.append((text, is_user))
25
 
26
+ # تابع نمایش تاریخچه چت
27
+ def display_chat_history():
28
+ for message, is_user in st.session_state.chat_history:
29
+ if is_user:
30
+ st.chat_message("user").markdown(message)
31
+ else:
32
+ st.chat_message("assistant").markdown(message)
33
 
34
+ # تابع ارسال پیام و دریافت پاسخ
35
  def send_message(user_input):
36
+ if user_input:
37
+ add_message(user_input, True) # افزودن پیام کاربر به تاریخچه
38
  try:
39
+ if generator:
40
+ response = generator(user_input)
41
+ sentiment = response[0]['label'] # تحلیل احساسات
42
+ score = response[0]['score'] # امتیاز پیش‌بینی
43
+ reply = f"تحلیل احساسات: {sentiment} (امتیاز: {score:.2f})"
44
+ add_message(reply, False)
45
+ else:
46
+ add_message("مدل در دسترس نیست. لطفاً تنظیمات را بررسی کنید.", False)
47
  except Exception as e:
48
+ logging.error(f"خطا در تولید متن: {e}")
49
+ add_message("متأسفم، مشکلی پیش آمد.", False)
 
50
 
51
+ # تنظیم رابط کاربری Streamlit
52
+ st.set_page_config(page_title="چت‌بات هوش مصنوعی", page_icon="🤖", layout="wide")
 
 
 
 
 
 
 
 
53
 
54
+ # طراحی نوار کناری
55
+ st.sidebar.title("تنظیمات")
56
+ st.sidebar.info("این برنامه از مدل FinBERT برای تحلیل احساسات مالی استفاده می‌کند.")
57
+
58
+ # عنوان برنامه
59
+ st.title("🤖 چت‌بات هوش مصنوعی برای تحلیل ارزهای دیجیتال")
60
 
61
  # نمایش تاریخچه چت
62
+ st.header("📜 تاریخچه چت")
63
+ display_chat_history()
64
 
65
+ # ورودی کاربر
66
+ st.header("✍️ پیام جدید")
67
+ user_input = st.text_input("پیام خود را وارد کنید:", placeholder="مثلاً تحلیل قیمت بیت‌کوین...")
68
+
69
+ # دکمه ارسال
70
+ if st.button("ارسال"):
71
+ send_message(user_input)
72
+
73
+ # پیام خوش‌آمدگویی (اولین بار)
74
+ if not st.session_state.chat_history:
75
+ add_message("سلام! من دستیار هوش مصنوعی شما هستم. چطور می‌توانم کمکتان کنم؟", False)
76
+ display_chat_history()