File size: 2,367 Bytes
bc23008 293840d f6afc8f bc23008 d8fad44 5a87c2f 293840d d8fad44 19a84e6 d8fad44 19a84e6 5264200 f5b923e bc23008 293840d bc23008 5264200 bc23008 293840d bc23008 5264200 293840d a951f7e 293840d a951f7e a6c1dbc 293840d 5264200 293840d |
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 |
import streamlit as st
from hazm import Normalizer, SentenceTokenizer
import os
import docx
from langchain.chat_models import ChatOpenAI
# LLM setup
llm = ChatOpenAI(
base_url="https://api.together.xyz/v1",
api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
model="deepseek-ai/DeepSeek-R1"
)
folder_path = '46'
texts = []
for filename in os.listdir(folder_path):
if filename.endswith(".docx"):
full_path = os.path.join(folder_path, filename)
doc = docx.Document(full_path)
file_text = "\n".join([para.text for para in doc.paragraphs])
if file_text.strip():
texts.append(file_text)
normalizer = Normalizer()
sentence_tokenizer = SentenceTokenizer()
all_sentences = []
for text in texts:
normalized = normalizer.normalize(text)
sentences = sentence_tokenizer.tokenize(normalized)
all_sentences.extend(sentences)
query = st.text_input("🔎 کلمه یا عبارت موردنظر خود را وارد کنید:")
# ✅ نمایش جمله و ۵ جمله بعدی + بازنویسی با LLM
if query:
found = False
for idx, sentence in enumerate(all_sentences):
if query in sentence:
next_sentences = []
for i in range(1, 6):
if idx + i < len(all_sentences):
next_sentences.append(all_sentences[idx + i])
# ↪️ آمادهسازی پرامپت برای ارسال به مدل
total_text = sentence + " " + " ".join(next_sentences)
prompt = f"پاسخی که باید بازنویسی شود:\n{total_text}\n\nلطفاً این پاسخ را با در نظر گرفتن محتوای سوال زیر و لحن آن بازنویسی کن:\n\nسوال: {query}"
# ارسال پرامپت به مدل و دریافت پاسخ
response = llm([{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}])
rewritten = response.strip()
st.markdown("🎨 **بازنویسی شده با LLM:**")
st.write(rewritten)
st.warning("پاسخ دریافتی معتبر نیست.")
found = True
break
if not found:
st.warning("عبارت موردنظر در متن یافت نشد.")
|