diff --git a/rag_tools.py b/rag_tools.py new file mode 100644 index 0000000..468a1ab --- /dev/null +++ b/rag_tools.py @@ -0,0 +1,41 @@ +# rag_tools.py +""" +Инструменты для LangChain-агента. Используют QdrantClient из qdrant_client.py. +""" +from langchain.tools import tool +from qdrant_client import QdrantClient + +_store = QdrantClient() + +@tool +def search_knowledge_base(query: str, max_results: int = 5) -> list: + """ + Семантический поиск в базе знаний. + + Args: + query: поисковый запрос. + max_results: максимальное количество результатов. + + Returns: + Список найденных фрагментов с оценкой релевантности. + """ + results = _store.search(query, limit=max_results) + return [ + {"title": r["metadata"].get("title", ""), "content": r["text"], "score": r["score"]} + for r in results + ] + +@tool +def add_to_knowledge_base(content: str, title: str) -> str: + """ + Добавляет новый документ в базу знаний. + + Args: + content: полный текст документа. + title: заголовок документа. + + Returns: + Сообщение об успехе. + """ + _store.add_documents([content], [title]) + return f"Документ '{title}' успешно добавлен в базу знаний." \ No newline at end of file