|
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() |