| 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" |
| ) |
| |
| |
| hide_streamlit_style = """ |
| <style> |
| #MainMenu {visibility: hidden;} |
| footer {visibility: hidden;} |
| header {visibility: hidden;} |
| </style> |
| """ |
| st.markdown(hide_streamlit_style, unsafe_allow_html=True) |
| |
| |
| def read_html(): |
| with open('index.html', 'r', encoding='utf-8') as file: |
| return file.read() |
| |
| |
| @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'] |
| |
| |
| if 'messages' not in st.session_state: |
| st.session_state.messages = [] |
| |
| |
| 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 |
| ) |
| |
| |
| 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() |