M17idd commited on
Commit
1e34f68
·
verified ·
1 Parent(s): 07e178a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -27
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
- # فرض بر این است که شما می‌خواهید ستون خاصی از CSV را برای ایندکس کردن استفاده کنید
236
- texts = df['your_column_name'].tolist() # ستون مورد نظر خود را مشخص کنید
 
 
237
 
238
  # ایجاد embeddings
239
  embeddings = TogetherEmbeddings(
@@ -242,33 +243,25 @@ def get_csv_index(csv_file):
242
  )
243
 
244
  # استفاده از VectorstoreIndexCreator برای ساخت ایندکس
245
- return VectorstoreIndexCreator(
246
  embedding=embeddings,
247
  text_splitter=RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=0)
248
- ).from_documents(texts)
 
 
 
 
 
 
249
 
250
- # مسیر فایل CSV به صورت دستی
251
  csv_file_path = 'output (1).csv'
252
 
253
- # در اینجا فایل را به صورت دستی می‌خوانیم
254
- if csv_file_path:
255
- csv_index = get_csv_index(csv_file_path)
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=index.vectorstore.as_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