| from __future__ import annotations |
|
|
| from langchain_core.tools import BaseTool, tool |
|
|
| from memory_agent.knowledge import KnowledgeService |
|
|
|
|
| class KnowledgeToolFactory: |
| def __init__(self, service: KnowledgeService) -> None: |
| self._service = service |
|
|
| def build(self, namespace: str) -> list[BaseTool]: |
| @tool |
| def answer_from_knowledge(question: str) -> str: |
| """Answer a user question using ONLY previously stored knowledge.""" |
|
|
| return self._service.answer_from_knowledge(namespace=namespace, question=question) |
|
|
| @tool |
| def store_knowledge( |
| knowledge_text: str, |
| fact_key: str | None = None, |
| fact_value: str | None = None, |
| ) -> str: |
| """Store or update knowledge in FAISS memory. Use when user shares new facts.""" |
|
|
| return self._service.store_knowledge( |
| namespace=namespace, |
| knowledge_text=knowledge_text, |
| fact_key=fact_key, |
| fact_value=fact_value, |
| ) |
|
|
| return [answer_from_knowledge, store_knowledge] |
|
|