Spaces:
Running
Running
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() |