Really-amin commited on
Commit
f8c382e
·
verified ·
1 Parent(s): 98bbc63

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -64
app.py CHANGED
@@ -1,7 +1,8 @@
1
  import streamlit as st
2
- from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
 
3
 
4
- # بارگذاری مدل "HooshvareLab/bert-fa-base-uncased" از Hugging Face
5
  @st.cache_resource
6
  def load_model():
7
  tokenizer = AutoTokenizer.from_pretrained("HooshvareLab/bert-fa-base-uncased")
@@ -10,81 +11,39 @@ def load_model():
10
 
11
  tokenizer, model = load_model()
12
 
13
- # تابع برای تولید پاسخ (فعلا فقط متن ورودی را برمی‌گرداند)
14
  def generate_response(text):
15
- inputs = tokenizer(text, return_tensors="pt")
16
- outputs = model(**inputs)
17
- # TODO: پردازش خروجی مدل و تولید پاسخ مناسب
18
- # در حال حاضر، فقط متن ورودی را برمی‌گردانیم
19
- response = text
 
20
  return response
21
 
 
22
  def main():
23
  st.set_page_config(page_title="دستیار هوش مصنوعی", layout="wide")
24
- st.title("دستیار هوش مصنوعی پیشرفته (Hugging Face)")
25
 
26
- # مقداردهی اولیه Session State
27
  if "messages" not in st.session_state:
28
  st.session_state.messages = []
29
 
30
- # نمایش HTML
31
- with open("index.html", "r", encoding="utf-8") as file:
32
- html_content = file.read()
 
 
 
33
 
34
- # اضافه کردن کد Javascript برای ارتباط با Streamlit
35
- html_content = html_content.replace("</body>", """
36
- <script>
37
- // تابع ارسال پیام به Streamlit
38
- function sendMessage() {
39
- var userInput = document.getElementById("user-input").value;
40
- document.getElementById("user-input").value = ""; // پاک کردن ورودی
41
- // اضافه کردن پیام کاربر به لیست پیام‌ها
42
- var chatMessages = document.getElementById("chat-messages");
43
- var newMessage = document.createElement("div");
44
- newMessage.classList.add("message", "user-message");
45
- newMessage.innerText = userInput;
46
- chatMessages.appendChild(newMessage);
47
- // ارسال پیام به Streamlit
48
- Streamlit.setComponentValue("user-input", userInput);
49
- }
50
-
51
- // دریافت پاسخ از Streamlit و نمایش اون
52
- Streamlit.on('update', function() {
53
- var response = Streamlit.getComponentValue("response");
54
- if (response) {
55
- // اضافه کردن پیام به لیست پیام‌ها
56
- var chatMessages = document.getElementById("chat-messages");
57
- var newMessage = document.createElement("div");
58
- newMessage.classList.add("message", "assistant-message");
59
- newMessage.innerText = response;
60
- chatMessages.appendChild(newMessage);
61
- }
62
- });
63
-
64
- // ارسال پیام با فشردن Enter
65
- var userInput = document.getElementById("user-input");
66
- userInput.addEventListener("keyup", function(event) {
67
- if (event.keyCode === 13) {
68
- event.preventDefault();
69
- document.getElementById("send-button").click();
70
- }
71
- });
72
- </script>
73
- </body>
74
- """)
75
-
76
- st.components.v1.html(html_content, height=700, scrolling=True)
77
-
78
- # دریافت پیام از Session State
79
- user_input = st.components.v1.text_input("user-input", value="", key="user_input")
80
  if user_input:
81
  st.session_state.messages.append({"role": "user", "content": user_input})
82
  response = generate_response(user_input)
83
  st.session_state.messages.append({"role": "assistant", "content": response})
84
-
85
- # ارسال پاسخ به Session State
86
- if st.session_state.messages:
87
- st.components.v1.text_area("response", value=st.session_state.messages[-1]["content"], key="response")
88
 
89
  if __name__ == "__main__":
90
- main()
 
1
  import streamlit as st
2
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
3
+ import torch
4
 
5
+ # بارگذاری مدل
6
  @st.cache_resource
7
  def load_model():
8
  tokenizer = AutoTokenizer.from_pretrained("HooshvareLab/bert-fa-base-uncased")
 
11
 
12
  tokenizer, model = load_model()
13
 
14
+ # تولید پاسخ
15
  def generate_response(text):
16
+ inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
17
+ with torch.no_grad():
18
+ outputs = model(**inputs)
19
+ logits = outputs.logits
20
+ predicted_class = torch.argmax(logits, dim=1).item()
21
+ response = f"پاسخ مدل: دسته‌بندی {predicted_class}"
22
  return response
23
 
24
+ # رابط کاربری
25
  def main():
26
  st.set_page_config(page_title="دستیار هوش مصنوعی", layout="wide")
27
+ st.title("دستیار هوش مصنوعی (BERT فارسی)")
28
 
29
+ # مدیریت پیام‌ها با Session State
30
  if "messages" not in st.session_state:
31
  st.session_state.messages = []
32
 
33
+ # نمایش پیام‌ها
34
+ for message in st.session_state.messages:
35
+ if message["role"] == "user":
36
+ st.write(f"👤 کاربر: {message['content']}")
37
+ else:
38
+ st.write(f"🤖 دستیار: {message['content']}")
39
 
40
+ # ورودی کاربر
41
+ user_input = st.text_input("پیام خود را وارد کنید:")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  if user_input:
43
  st.session_state.messages.append({"role": "user", "content": user_input})
44
  response = generate_response(user_input)
45
  st.session_state.messages.append({"role": "assistant", "content": response})
46
+ st.experimental_rerun()
 
 
 
47
 
48
  if __name__ == "__main__":
49
+ main()