Spaces:
Running
Running
Update app.py
Browse files
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=
|
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 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
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()
|