diff --git a/pyproject.toml b/pyproject.toml index a8e43d4c..00bb804b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,15 +29,10 @@ dependencies = [ "mcp==1.23.0", # There might be some async generator problem logs in mcp 1.25.0 "cookiecutter==2.6.0", # For cloud deploy "omegaconf==2.3.0", # For agent builder - "llama-index==0.14.0", - "llama-index-embeddings-openai-like==0.2.2", - "llama-index-llms-openai-like==0.5.1", - "llama-index-vector-stores-opensearch==0.6.1", "psycopg2-binary==2.9.10", # For PostgreSQL database (short term memory) "asyncpg>=0.29.0", # For async PostgreSQL database (short term memory) "pymysql==1.1.1", # For MySQL database (short term memory) "aiomysql==0.3.2", # For async MySQL database (short term memory) - "opensearch-py==2.8.0", "filetype==1.2.0", "vikingdb-python-sdk>=0.1.3", "agentkit-sdk-python>=0.2.0", @@ -49,13 +44,18 @@ veadk = "veadk.cli.cli:veadk" [project.optional-dependencies] extensions = [ - "redis>=5.0", # For Redis database - "tos>=2.8.4", # For TOS storage and Viking DB - "llama-index-vector-stores-redis>=0.6.1", - "cozeloop>=0.1.21", #For Cozeloop Prompt manager + "redis>=5.0", # For Redis database + "tos>=2.8.4", # For TOS storage and Viking DB + "cozeloop>=0.1.21", # For Cozeloop Prompt manager + "llama-index==0.14.0", # For KnowledgeBase and LongTermMemory + "llama-index-embeddings-openai-like==0.2.2", # For Embeddings + "llama-index-llms-openai-like==0.5.1", # For KnowledgeBase and LongTermMemory + "llama-index-vector-stores-redis>=0.6.1", # For Redis database + "llama-index-vector-stores-opensearch==0.6.1", # For Opensearch database + "opensearch-py==2.8.0", ] database = [ - "redis>=5.0", # For Redis database + "redis>=5.0", # For Redis database "pymysql>=1.1.1", # For MySQL database "volcengine>=1.0.193", # For Viking DB "tos>=2.8.4", # For TOS storage and Viking DB diff --git a/veadk/knowledgebase/knowledgebase.py b/veadk/knowledgebase/knowledgebase.py index 854c8d66..9ba70900 100644 --- a/veadk/knowledgebase/knowledgebase.py +++ b/veadk/knowledgebase/knowledgebase.py @@ -27,39 +27,47 @@ def _get_backend_cls(backend: str) -> type[BaseKnowledgebaseBackend]: - match backend: - case "local": - from veadk.knowledgebase.backends.in_memory_backend import ( - InMemoryKnowledgeBackend, - ) - - return InMemoryKnowledgeBackend - case "opensearch": - from veadk.knowledgebase.backends.opensearch_backend import ( - OpensearchKnowledgeBackend, - ) + try: + match backend: + case "local": + from veadk.knowledgebase.backends.in_memory_backend import ( + InMemoryKnowledgeBackend, + ) - return OpensearchKnowledgeBackend - case "viking": - from veadk.knowledgebase.backends.vikingdb_knowledge_backend import ( - VikingDBKnowledgeBackend, - ) + return InMemoryKnowledgeBackend + case "opensearch": + from veadk.knowledgebase.backends.opensearch_backend import ( + OpensearchKnowledgeBackend, + ) - return VikingDBKnowledgeBackend - case "redis": - from veadk.knowledgebase.backends.redis_backend import ( - RedisKnowledgeBackend, - ) + return OpensearchKnowledgeBackend + case "redis": + from veadk.knowledgebase.backends.redis_backend import ( + RedisKnowledgeBackend, + ) - return RedisKnowledgeBackend - case "tos_vector": - from veadk.knowledgebase.backends.tos_vector_backend import ( - TosVectorKnowledgeBackend, - ) + return RedisKnowledgeBackend + case "tos_vector": + from veadk.knowledgebase.backends.tos_vector_backend import ( + TosVectorKnowledgeBackend, + ) - return TosVectorKnowledgeBackend + return TosVectorKnowledgeBackend + case "viking": + from veadk.knowledgebase.backends.vikingdb_knowledge_backend import ( + VikingDBKnowledgeBackend, + ) - raise ValueError(f"Unsupported knowledgebase backend: {backend}") + return VikingDBKnowledgeBackend + case _: + raise ValueError(f"Unsupported knowledgebase backend: {backend}") + except ImportError as e: + if "llama_index" in str(e) or "llama-index" in str(e): + raise ImportError( + "KnowledgeBase functionality requires 'veadk-python[extensions]'. " + "Please install it via `pip install veadk-python[extensions]`." + ) from e + raise e class KnowledgeBase(BaseModel): diff --git a/veadk/memory/long_term_memory.py b/veadk/memory/long_term_memory.py index 7f64a8c9..df5b4577 100644 --- a/veadk/memory/long_term_memory.py +++ b/veadk/memory/long_term_memory.py @@ -37,39 +37,47 @@ def _get_backend_cls(backend: str) -> type[BaseLongTermMemoryBackend]: - match backend: - case "local": - from veadk.memory.long_term_memory_backends.in_memory_backend import ( - InMemoryLTMBackend, - ) - - return InMemoryLTMBackend - case "opensearch": - from veadk.memory.long_term_memory_backends.opensearch_backend import ( - OpensearchLTMBackend, - ) + try: + match backend: + case "local": + from veadk.memory.long_term_memory_backends.in_memory_backend import ( + InMemoryLTMBackend, + ) - return OpensearchLTMBackend - case "viking": - from veadk.memory.long_term_memory_backends.vikingdb_memory_backend import ( - VikingDBLTMBackend, - ) + return InMemoryLTMBackend + case "opensearch": + from veadk.memory.long_term_memory_backends.opensearch_backend import ( + OpensearchLTMBackend, + ) - return VikingDBLTMBackend - case "redis": - from veadk.memory.long_term_memory_backends.redis_backend import ( - RedisLTMBackend, - ) + return OpensearchLTMBackend + case "viking": + from veadk.memory.long_term_memory_backends.vikingdb_memory_backend import ( + VikingDBLTMBackend, + ) - return RedisLTMBackend - case "mem0": - from veadk.memory.long_term_memory_backends.mem0_backend import ( - Mem0LTMBackend, - ) + return VikingDBLTMBackend + case "redis": + from veadk.memory.long_term_memory_backends.redis_backend import ( + RedisLTMBackend, + ) - return Mem0LTMBackend + return RedisLTMBackend + case "mem0": + from veadk.memory.long_term_memory_backends.mem0_backend import ( + Mem0LTMBackend, + ) - raise ValueError(f"Unsupported long term memory backend: {backend}") + return Mem0LTMBackend + case _: + raise ValueError(f"Unsupported long term memory backend: {backend}") + except ImportError as e: + if "llama_index" in str(e) or "llama-index" in str(e): + raise ImportError( + "LongTermMemory functionality requires 'veadk-python[extensions]'. " + "Please install it via `pip install veadk-python[extensions]`." + ) from e + raise e class LongTermMemory(BaseMemoryService, BaseModel):