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("عبارت موردنظر در متن یافت نشد.")