From a59c96ad6b446f0565f819c5043e54fd73d16056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D0=B8=D0=BB=20=D0=92=D0=B8=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2?= Date: Thu, 2 Jul 2026 08:35:10 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20tools.py=20=E2=80=94=20=D0=90=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=20=D1=81=20RAG-=D0=BF=D0=B0=D0=BC=D1=8F?= =?UTF-8?q?=D1=82=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tools.py diff --git a/tools.py b/tools.py new file mode 100644 index 0000000..44fd120 --- /dev/null +++ b/tools.py @@ -0,0 +1,28 @@ +import os +from langchain.tools import tool +from langchain_text_splitters import RecursiveCharacterTextSplitter +from langchain_core.documents import Document +from rag_store import KnowledgeBase + +kb = KnowledgeBase() + +splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) + +@tool +def search_knowledge_base(query: str, max_results: int = 3) -> str: + """Search the knowledge base for relevant information.""" + docs = kb.similarity_search(query, k=max_results) + if not docs: + return "No results found." + return "\n\n".join( + f"Title: {doc.metadata.get('title', 'N/A')}\nContent: {doc.page_content}" + for doc in docs + ) + +@tool +def add_to_knowledge_base(content: str, title: str = "Untitled") -> str: + """Add content to the knowledge base.""" + chunks = splitter.split_text(content) + docs = [Document(page_content=chunk, metadata={"title": title}) for chunk in chunks] + kb.add_documents(docs) + return f"Added document '{title}'." \ No newline at end of file