File size: 2,551 Bytes
dc9c0ba
e224dd2
d36e659
dc9c0ba
cda7074
ae4c9a7
e224dd2
cda7074
9131901
 
cda7074
9131901
53c5213
4384755
dc9c0ba
e224dd2
dc9c0ba
 
 
 
 
 
 
53c5213
dc9c0ba
 
e224dd2
dc9c0ba
 
 
 
 
53c5213
e224dd2
 
 
 
 
 
 
 
 
 
 
 
 
9554c74
e224dd2
9554c74
 
 
 
 
 
 
 
 
 
 
 
 
e224dd2
 
 
53c5213
e224dd2
 
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
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}])

            # استخراج پاسخ مدل
            if isinstance(response, dict) and 'choices' in response:
                rewritten = response['choices'][0]['message']['content'].strip()
                st.markdown("🎨 **بازنویسی شده با LLM:**")
                st.write(rewritten)
            else:
                st.warning("پاسخ دریافتی معتبر نیست.")

            found = True
            break

    if not found:
        st.warning("عبارت موردنظر در متن یافت نشد.")