Update app.py
Browse files
app.py
CHANGED
@@ -211,9 +211,8 @@ def get_pdf_index():
|
|
211 |
index = get_pdf_index()
|
212 |
"""
|
213 |
|
214 |
-
# ----------------- لود csv و ساخت ایندکس -----------------
|
215 |
-
|
216 |
|
|
|
217 |
class TogetherEmbeddings(Embeddings):
|
218 |
def __init__(self, model_name: str, api_key: str):
|
219 |
self.model_name = model_name
|
@@ -232,8 +231,10 @@ def get_csv_index(csv_file):
|
|
232 |
# خواندن دادههای CSV
|
233 |
df = pd.read_csv(csv_file)
|
234 |
|
235 |
-
#
|
236 |
-
|
|
|
|
|
237 |
|
238 |
# ایجاد embeddings
|
239 |
embeddings = TogetherEmbeddings(
|
@@ -242,33 +243,25 @@ def get_csv_index(csv_file):
|
|
242 |
)
|
243 |
|
244 |
# استفاده از VectorstoreIndexCreator برای ساخت ایندکس
|
245 |
-
|
246 |
embedding=embeddings,
|
247 |
text_splitter=RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=0)
|
248 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
|
250 |
-
# مسیر فایل CSV
|
251 |
csv_file_path = 'output (1).csv'
|
252 |
|
253 |
-
#
|
254 |
-
|
255 |
-
|
256 |
-
st.success("ایندکس فایل CSV با موفقیت ساخته شد!")
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
index = get_csv_index()
|
264 |
-
|
265 |
|
266 |
#------------------------------------------
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
llm = ChatOpenAI(
|
273 |
base_url="https://api.together.xyz/v1",
|
274 |
api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
|
@@ -278,7 +271,7 @@ llm = ChatOpenAI(
|
|
278 |
chain = RetrievalQA.from_chain_type(
|
279 |
llm=llm,
|
280 |
chain_type='stuff',
|
281 |
-
retriever=
|
282 |
input_key='question'
|
283 |
)
|
284 |
|
@@ -305,7 +298,7 @@ if st.session_state.pending_prompt:
|
|
305 |
thinking.markdown("🤖 در حال فکر کردن...")
|
306 |
|
307 |
response = chain.run(f'پاسخ را فقط به زبان فارسی جواب بده به هیچ عنوان از زبان چینی در پاسخ استفاده نکن. سوال: {st.session_state.pending_prompt}')
|
308 |
-
answer = response.split("Helpful Answer:")[-1].strip()
|
309 |
if not answer:
|
310 |
answer = "متأسفم، اطلاعات دقیقی در این مورد ندارم."
|
311 |
|
@@ -319,4 +312,4 @@ if st.session_state.pending_prompt:
|
|
319 |
|
320 |
placeholder.markdown(full_response)
|
321 |
st.session_state.messages.append({'role': 'ai', 'content': full_response})
|
322 |
-
st.session_state.pending_prompt = None
|
|
|
211 |
index = get_pdf_index()
|
212 |
"""
|
213 |
|
|
|
|
|
214 |
|
215 |
+
# ----------------- لود csv و ساخت ایندکس -----------------
|
216 |
class TogetherEmbeddings(Embeddings):
|
217 |
def __init__(self, model_name: str, api_key: str):
|
218 |
self.model_name = model_name
|
|
|
231 |
# خواندن دادههای CSV
|
232 |
df = pd.read_csv(csv_file)
|
233 |
|
234 |
+
# تبدیل DataFrame به لیست از متون
|
235 |
+
# فرض میکنیم همه ستونها را میخواهیم یا یک ستون خاص
|
236 |
+
# اگر فقط یک ستون دارید، نام آن را جایگزین کنید
|
237 |
+
texts = df.iloc[:, 0].astype(str).tolist() # ستون اول را میگیرد
|
238 |
|
239 |
# ایجاد embeddings
|
240 |
embeddings = TogetherEmbeddings(
|
|
|
243 |
)
|
244 |
|
245 |
# استفاده از VectorstoreIndexCreator برای ساخت ایندکس
|
246 |
+
index_creator = VectorstoreIndexCreator(
|
247 |
embedding=embeddings,
|
248 |
text_splitter=RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=0)
|
249 |
+
)
|
250 |
+
|
251 |
+
# تبدیل متون به اسناد (documents)
|
252 |
+
from langchain.docstore.document import Document
|
253 |
+
documents = [Document(page_content=text) for text in texts]
|
254 |
+
|
255 |
+
return index_creator.from_documents(documents)
|
256 |
|
257 |
+
# مسیر فایل CSV
|
258 |
csv_file_path = 'output (1).csv'
|
259 |
|
260 |
+
# ساخت ایندکس
|
261 |
+
csv_index = get_csv_index(csv_file_path)
|
262 |
+
st.success("ایندکس فایل CSV با موفقیت ساخته شد!")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
|
264 |
#------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
265 |
llm = ChatOpenAI(
|
266 |
base_url="https://api.together.xyz/v1",
|
267 |
api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
|
|
|
271 |
chain = RetrievalQA.from_chain_type(
|
272 |
llm=llm,
|
273 |
chain_type='stuff',
|
274 |
+
retriever=csv_index.vectorstore.as_retriever(),
|
275 |
input_key='question'
|
276 |
)
|
277 |
|
|
|
298 |
thinking.markdown("🤖 در حال فکر کردن...")
|
299 |
|
300 |
response = chain.run(f'پاسخ را فقط به زبان فارسی جواب بده به هیچ عنوان از زبان چینی در پاسخ استفاده نکن. سوال: {st.session_state.pending_prompt}')
|
301 |
+
answer = response.split("Helpful Answer:")[-1].strip() if "Helpful Answer:" in response else response.strip()
|
302 |
if not answer:
|
303 |
answer = "متأسفم، اطلاعات دقیقی در این مورد ندارم."
|
304 |
|
|
|
312 |
|
313 |
placeholder.markdown(full_response)
|
314 |
st.session_state.messages.append({'role': 'ai', 'content': full_response})
|
315 |
+
st.session_state.pending_prompt = None
|