File size: 4,043 Bytes
88b8225
98bbc63
ecb9c1c
98bbc63
329231e
1f65606
98bbc63
 
 
8fbe768
98bbc63
0489530
98bbc63
 
 
 
 
 
 
 
8fbe768
1ca069a
7fb592c
 
493ea2f
8848c4c
 
 
 
8ad085f
 
 
8848c4c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ad085f
 
8848c4c
 
 
 
 
 
 
 
 
 
7fb592c
88b8225
8848c4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import streamlit as st
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification

# بارگذاری مدل "HooshvareLab/bert-fa-base-uncased" از Hugging Face
@st.cache_resource
def load_model():
    tokenizer = AutoTokenizer.from_pretrained("HooshvareLab/bert-fa-base-uncased")
    model = AutoModelForSequenceClassification.from_pretrained("HooshvareLab/bert-fa-base-uncased")
    return tokenizer, model

tokenizer, model = load_model()

# تابع برای تولید پاسخ (فعلا فقط متن ورودی را برمی‌گرداند)
def generate_response(text):
    inputs = tokenizer(text, return_tensors="pt")
    outputs = model(**inputs)
    # TODO: پردازش خروجی مدل و تولید پاسخ مناسب
    # در حال حاضر، فقط متن ورودی را برمی‌گردانیم
    response = text
    return response

def main():
    st.set_page_config(page_title="دستیار هوش مصنوعی", layout="wide")
    st.title("دستیار هوش مصنوعی پیشرفته (Hugging Face)")

    # مقداردهی اولیه Session State
    if "messages" not in st.session_state:
        st.session_state.messages = []

    # نمایش HTML
    with open("index.html", "r", encoding="utf-8") as file:
        html_content = file.read()

    # اضافه کردن کد Javascript برای ارتباط با Streamlit
    html_content = html_content.replace("</body>", """
        <script>
            // تابع ارسال پیام به Streamlit
            function sendMessage() {
                var userInput = document.getElementById("user-input").value;
                document.getElementById("user-input").value = ""; // پاک کردن ورودی
                // اضافه کردن پیام کاربر به لیست پیام‌ها
                var chatMessages = document.getElementById("chat-messages");
                var newMessage = document.createElement("div");
                newMessage.classList.add("message", "user-message");
                newMessage.innerText = userInput;
                chatMessages.appendChild(newMessage);
                // ارسال پیام به Streamlit
                Streamlit.setComponentValue("user-input", userInput);
            }

            // دریافت پاسخ از Streamlit و نمایش اون
            Streamlit.on('update', function() {
                var response = Streamlit.getComponentValue("response");
                if (response) {
                    // اضافه کردن پیام به لیست پیام‌ها
                    var chatMessages = document.getElementById("chat-messages");
                    var newMessage = document.createElement("div");
                    newMessage.classList.add("message", "assistant-message");
                    newMessage.innerText = response;
                    chatMessages.appendChild(newMessage);
                }
            });

            // ارسال پیام با فشردن Enter
            var userInput = document.getElementById("user-input");
            userInput.addEventListener("keyup", function(event) {
                if (event.keyCode === 13) {
                    event.preventDefault();
                    document.getElementById("send-button").click();
                }
            });
        </script>
    </body>
    """)

    st.components.v1.html(html_content, height=700, scrolling=True)

    # دریافت پیام از Session State
    user_input = st.components.v1.text_input("user-input", value="", key="user_input")
    if user_input:
        st.session_state.messages.append({"role": "user", "content": user_input})
        response = generate_response(user_input)
        st.session_state.messages.append({"role": "assistant", "content": response})

    # ارسال پاسخ به Session State
    if st.session_state.messages:
        st.components.v1.text_area("response", value=st.session_state.messages[-1]["content"], key="response")

if __name__ == "__main__":
    main()