Really-amin commited on
Commit
8848c4c
·
verified ·
1 Parent(s): be210d7

Update app.py

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