Update app.py
Browse files
app.py
CHANGED
|
@@ -182,6 +182,8 @@ st.markdown('<div class="chat-message">👋 سلام! چطور میتونم کم
|
|
| 182 |
#if user_input:
|
| 183 |
# st.markdown(f'<div class="chat-message">📩 شما: {user_input}</div>', unsafe_allow_html=True)
|
| 184 |
|
|
|
|
|
|
|
| 185 |
# ----------------- لود PDF و ساخت ایندکس -----------------
|
| 186 |
class TogetherEmbeddings(Embeddings):
|
| 187 |
def __init__(self, model_name: str, api_key: str):
|
|
@@ -209,7 +211,66 @@ def get_pdf_index():
|
|
| 209 |
).from_loaders(loader)
|
| 210 |
|
| 211 |
index = get_pdf_index()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 213 |
llm = ChatOpenAI(
|
| 214 |
base_url="https://api.together.xyz/v1",
|
| 215 |
api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
|
|
|
|
| 182 |
#if user_input:
|
| 183 |
# st.markdown(f'<div class="chat-message">📩 شما: {user_input}</div>', unsafe_allow_html=True)
|
| 184 |
|
| 185 |
+
|
| 186 |
+
""""
|
| 187 |
# ----------------- لود PDF و ساخت ایندکس -----------------
|
| 188 |
class TogetherEmbeddings(Embeddings):
|
| 189 |
def __init__(self, model_name: str, api_key: str):
|
|
|
|
| 211 |
).from_loaders(loader)
|
| 212 |
|
| 213 |
index = get_pdf_index()
|
| 214 |
+
"""
|
| 215 |
+
|
| 216 |
+
# ----------------- لود csv و ساخت ایندکس -----------------
|
| 217 |
+
|
| 218 |
+
|
| 219 |
+
class TogetherEmbeddings(Embeddings):
|
| 220 |
+
def __init__(self, model_name: str, api_key: str):
|
| 221 |
+
self.model_name = model_name
|
| 222 |
+
self.client = Together(api_key=api_key)
|
| 223 |
+
|
| 224 |
+
def embed_documents(self, texts: List[str]) -> List[List[float]]:
|
| 225 |
+
response = self.client.embeddings.create(model=self.model_name, input=texts)
|
| 226 |
+
return [item.embedding for item in response.data]
|
| 227 |
+
|
| 228 |
+
def embed_query(self, text: str) -> List[float]:
|
| 229 |
+
return self.embed_documents([text])[0]
|
| 230 |
+
|
| 231 |
+
@st.cache_resource
|
| 232 |
+
def get_csv_index(csv_file):
|
| 233 |
+
with st.spinner('📄 در حال پردازش فایل CSV...'):
|
| 234 |
+
# خواندن دادههای CSV
|
| 235 |
+
df = pd.read_csv(csv_file)
|
| 236 |
+
|
| 237 |
+
# فرض بر این است که شما میخواهید ستون خاصی از CSV را برای ایندکس کردن استفاده کنید
|
| 238 |
+
texts = df['your_column_name'].tolist() # ستون مورد نظر خود را مشخص کنید
|
| 239 |
+
|
| 240 |
+
# ایجاد embeddings
|
| 241 |
+
embeddings = TogetherEmbeddings(
|
| 242 |
+
model_name="togethercomputer/m2-bert-80M-8k-retrieval",
|
| 243 |
+
api_key="0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979"
|
| 244 |
+
)
|
| 245 |
+
|
| 246 |
+
# استفاده از VectorstoreIndexCreator برای ساخت ایندکس
|
| 247 |
+
return VectorstoreIndexCreator(
|
| 248 |
+
embedding=embeddings,
|
| 249 |
+
text_splitter=RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=0)
|
| 250 |
+
).from_documents(texts)
|
| 251 |
+
|
| 252 |
+
# مسیر فایل CSV به صورت دستی
|
| 253 |
+
csv_file_path = 'testttt.csv'
|
| 254 |
+
|
| 255 |
+
# در اینجا فایل را به صورت دستی میخوانیم
|
| 256 |
+
if csv_file_path:
|
| 257 |
+
csv_index = get_csv_index(csv_file_path)
|
| 258 |
+
st.success("ایندکس فایل CSV با موفقیت ساخته شد!")
|
| 259 |
+
|
| 260 |
+
|
| 261 |
|
| 262 |
+
|
| 263 |
+
|
| 264 |
+
|
| 265 |
+
index = get_csv_index()
|
| 266 |
+
|
| 267 |
+
|
| 268 |
+
#------------------------------------------
|
| 269 |
+
|
| 270 |
+
|
| 271 |
+
|
| 272 |
+
|
| 273 |
+
|
| 274 |
llm = ChatOpenAI(
|
| 275 |
base_url="https://api.together.xyz/v1",
|
| 276 |
api_key='0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979',
|