From 78cc11ef1f935fc0aa53113affa2376918d9b025 Mon Sep 17 00:00:00 2001 From: Soumil Rathi Date: Mon, 13 Apr 2026 12:55:36 -0700 Subject: [PATCH] fix: restore lmstudio/deepseek providers in TS factory, add langchain to extras MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Restore LMStudioEmbedder, LMStudioLLM, DeepSeekLLM in TS factory.ts (accidentally removed during graph store cleanup — unrelated to graphs) - Add langchain>=0.1.0 to Python extras dep group (was transitively provided by langchain-neo4j in the removed graph group, still needed by mem0/llms/langchain.py and mem0/embeddings/langchain.py) - Add pytest.importorskip("langchain") to test_langchain.py for graceful skip when langchain isn't installed Co-Authored-By: Claude Opus 4.6 (1M context) --- mem0-ts/src/oss/src/utils/factory.ts | 9 +++++++++ pyproject.toml | 1 + tests/llms/test_langchain.py | 2 ++ 3 files changed, 12 insertions(+) diff --git a/mem0-ts/src/oss/src/utils/factory.ts b/mem0-ts/src/oss/src/utils/factory.ts index 14a22ad46..35c2a21a1 100644 --- a/mem0-ts/src/oss/src/utils/factory.ts +++ b/mem0-ts/src/oss/src/utils/factory.ts @@ -1,5 +1,6 @@ import { OpenAIEmbedder } from "../embeddings/openai"; import { OllamaEmbedder } from "../embeddings/ollama"; +import { LMStudioEmbedder } from "../embeddings/lmstudio"; import { OpenAILLM } from "../llms/openai"; import { OpenAIStructuredLLM } from "../llms/openai_structured"; import { AnthropicLLM } from "../llms/anthropic"; @@ -19,6 +20,8 @@ import { Qdrant } from "../vector_stores/qdrant"; import { VectorizeDB } from "../vector_stores/vectorize"; import { RedisDB } from "../vector_stores/redis"; import { OllamaLLM } from "../llms/ollama"; +import { LMStudioLLM } from "../llms/lmstudio"; +import { DeepSeekLLM } from "../llms/deepseek"; import { SupabaseDB } from "../vector_stores/supabase"; import { SQLiteManager } from "../storage/SQLiteManager"; import { MemoryHistoryManager } from "../storage/MemoryHistoryManager"; @@ -41,6 +44,8 @@ export class EmbedderFactory { return new OpenAIEmbedder(config); case "ollama": return new OllamaEmbedder(config); + case "lmstudio": + return new LMStudioEmbedder(config); case "google": case "gemini": return new GoogleEmbedder(config); @@ -67,6 +72,8 @@ export class LLMFactory { return new GroqLLM(config); case "ollama": return new OllamaLLM(config); + case "lmstudio": + return new LMStudioLLM(config); case "google": case "gemini": return new GoogleLLM(config); @@ -76,6 +83,8 @@ export class LLMFactory { return new MistralLLM(config); case "langchain": return new LangchainLLM(config); + case "deepseek": + return new DeepSeekLLM(config); default: throw new Error(`Unsupported LLM provider: ${provider}`); } diff --git a/pyproject.toml b/pyproject.toml index c7f3f88f9..588055ebf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,7 @@ llms = [ ] extras = [ "boto3>=1.34.0", + "langchain>=0.1.0", "langchain-community>=0.0.0", "sentence-transformers>=5.0.0", "elasticsearch>=8.0.0,<9.0.0", diff --git a/tests/llms/test_langchain.py b/tests/llms/test_langchain.py index c0ab2701c..1b5bf4c18 100644 --- a/tests/llms/test_langchain.py +++ b/tests/llms/test_langchain.py @@ -2,6 +2,8 @@ from unittest.mock import Mock import pytest +pytest.importorskip("langchain", reason="langchain not installed") + from mem0.configs.llms.base import BaseLlmConfig from mem0.llms.langchain import LangchainLLM