File size: 2,657 Bytes
a15cdfd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import streamlit.components.v1 as components
from transformers import pipeline
import os

def main():
    # تكوين الصفحة
    st.set_page_config(
        page_title="سبيدي",
        page_icon="💬",
        layout="wide"
    )
    
    # إخفاء عناصر Streamlit الافتراضية
    hide_streamlit_style = """
        <style>
        #MainMenu {visibility: hidden;}
        footer {visibility: hidden;}
        header {visibility: hidden;}
        </style>
    """
    st.markdown(hide_streamlit_style, unsafe_allow_html=True)
    
    # قراءة ملف HTML
    def read_html():
        with open('index.html', 'r', encoding='utf-8') as file:
            return file.read()
    
    # تهيئة نموذج Hugging Face
    @st.cache_resource
    def load_model():
        # يمكنك تغيير اسم النموذج حسب احتياجك
        return pipeline("text-generation", model="facebook/opt-350m", device=-1)
    
    # معالجة الرسائل
    def process_message(message):
        model = load_model()
        response = model(message, max_length=100, num_return_sequences=1)
        return response[0]['generated_text']
    
    # إعداد API للتواصل بين JavaScript و Python
    if 'messages' not in st.session_state:
        st.session_state.messages = []
    
    # استقبال الرسائل من JavaScript
    result = components.html(
        read_html() + """
        <script>
        // تعديل دالة sendMessage لتتواصل مع Python
        async function sendMessage() {
            var input = document.getElementById('message-input');
            var message = input.value.trim();
            if (message !== '') {
                appendMessage('user-message', message);
                input.value = '';
                
                // إرسال الرسالة إلى Python
                const response = await fetch('/_stcore/message', {
                    method: 'POST',
                    headers: {'Content-Type': 'application/json'},
                    body: JSON.stringify({message: message})
                });
                
                const data = await response.json();
                appendMessage('bot-message', data.response);
            }
        }
        </script>
        """,
        height=800
    )
    
    # معالجة الرسائل المستلمة من JavaScript
    if st.session_state.messages:
        last_message = st.session_state.messages[-1]
        response = process_message(last_message)
        st.session_state.messages.append(response)

if __name__ == "__main__":
    main()