Refactor startup event in app.py to streamline knowledge base loading; improve error handling and logging
Browse files
app.py
CHANGED
|
@@ -299,29 +299,19 @@ vector_store = None
|
|
| 299 |
async def startup_event():
|
| 300 |
global vector_store
|
| 301 |
try:
|
| 302 |
-
#
|
| 303 |
-
1/0
|
| 304 |
-
except:
|
| 305 |
-
pass
|
| 306 |
-
|
| 307 |
-
try:
|
| 308 |
-
# Сразу запускаем полную пересборку базы знаний
|
| 309 |
-
vector_store = await build_knowledge_base_async(embeddings, force_rebuild=True)
|
| 310 |
-
logger.info("Successfully rebuilt knowledge base on startup")
|
| 311 |
-
except Exception as e:
|
| 312 |
-
logger.error(f"Failed to rebuild knowledge base on startup: {str(e)}")
|
| 313 |
-
# Пробуем загрузить существующую базу как fallback
|
| 314 |
if os.path.exists(os.path.join(VECTOR_STORE_PATH, "index.faiss")):
|
| 315 |
-
|
| 316 |
-
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
|
|
|
| 325 |
|
| 326 |
# API endpoints
|
| 327 |
@app.post("/chat", response_model=ChatResponse)
|
|
|
|
| 299 |
async def startup_event():
|
| 300 |
global vector_store
|
| 301 |
try:
|
| 302 |
+
# Проверяем существование базы знаний
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
if os.path.exists(os.path.join(VECTOR_STORE_PATH, "index.faiss")):
|
| 304 |
+
vector_store = FAISS.load_local(
|
| 305 |
+
VECTOR_STORE_PATH,
|
| 306 |
+
embeddings,
|
| 307 |
+
allow_dangerous_deserialization=True
|
| 308 |
+
)
|
| 309 |
+
logger.info("Existing knowledge base loaded successfully")
|
| 310 |
+
else:
|
| 311 |
+
logger.info("No existing knowledge base found. Use /rebuild-kb endpoint to create one")
|
| 312 |
+
except Exception as e:
|
| 313 |
+
logger.error(f"Error during startup: {str(e)}")
|
| 314 |
+
vector_store = None
|
| 315 |
|
| 316 |
# API endpoints
|
| 317 |
@app.post("/chat", response_model=ChatResponse)
|