fix: rag_tools.py — lazy RAG + build_* для автопроверки
This commit is contained in:
+8
-4
@@ -3,12 +3,16 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from langchain.tools import tool
|
from langchain.tools import tool
|
||||||
|
|
||||||
from knowledge_base import KnowledgeBase
|
from knowledge_base import KnowledgeBase, build_knowledge_base
|
||||||
|
|
||||||
_kb = KnowledgeBase()
|
_kb: KnowledgeBase | None = None
|
||||||
|
|
||||||
|
|
||||||
def get_knowledge_base() -> KnowledgeBase:
|
def get_knowledge_base() -> KnowledgeBase:
|
||||||
|
"""Ленивая инициализация — не подключаем Ollama при импорте модуля."""
|
||||||
|
global _kb
|
||||||
|
if _kb is None:
|
||||||
|
_kb = build_knowledge_base()
|
||||||
return _kb
|
return _kb
|
||||||
|
|
||||||
|
|
||||||
@@ -20,7 +24,7 @@ def search_knowledge_base(query: str, max_results: int = 5) -> str:
|
|||||||
query: Поисковый запрос на естественном языке.
|
query: Поисковый запрос на естественном языке.
|
||||||
max_results: Максимум результатов (по умолчанию 5).
|
max_results: Максимум результатов (по умолчанию 5).
|
||||||
"""
|
"""
|
||||||
results = _kb.search(query, max_results=max_results)
|
results = get_knowledge_base().search(query, max_results=max_results)
|
||||||
if not results:
|
if not results:
|
||||||
return "По запросу ничего не найдено."
|
return "По запросу ничего не найдено."
|
||||||
lines = [f"Найдено: {len(results)} фрагмент(ов)\n"]
|
lines = [f"Найдено: {len(results)} фрагмент(ов)\n"]
|
||||||
@@ -43,5 +47,5 @@ def add_to_knowledge_base(content: str, title: str) -> str:
|
|||||||
return "Ошибка: пустой content."
|
return "Ошибка: пустой content."
|
||||||
if not title.strip():
|
if not title.strip():
|
||||||
return "Ошибка: пустой title."
|
return "Ошибка: пустой title."
|
||||||
chunks = _kb.add_document(content.strip(), title.strip())
|
chunks = get_knowledge_base().add_document(content.strip(), title.strip())
|
||||||
return f"Документ «{title}» добавлен ({chunks} чанк(ов))."
|
return f"Документ «{title}» добавлен ({chunks} чанк(ов))."
|
||||||
|
|||||||
Reference in New Issue
Block a user