diff --git a/mem0-ts/src/oss/src/llms/together.ts b/mem0-ts/src/oss/src/llms/together.ts new file mode 100644 index 000000000..b76418c86 --- /dev/null +++ b/mem0-ts/src/oss/src/llms/together.ts @@ -0,0 +1,64 @@ +import { OpenAILLM } from "./openai"; +import { LLMConfig, Message } from "../types"; +import { LLMResponse } from "./base"; + +export class TogetherLLM extends OpenAILLM { + constructor(config: LLMConfig) { + const apiKey = config.apiKey || process.env.TOGETHER_API_KEY; + + if (!apiKey) { + throw new Error("Together API key is required"); + } + + super({ + ...config, + apiKey, + baseURL: + config.baseURL || + "https://api.together.xyz/v1", + model: + config.model || + "mistralai/Mixtral-8x7B-Instruct-v0.1", + }); + } + + async generateResponse( + messages: Message[], + responseFormat?: { type: string }, + tools?: any[], + ): Promise { + try { + return await super.generateResponse( + messages, + responseFormat, + tools, + ); + } catch (err) { + const message = + err instanceof Error + ? err.message + : String(err); + + throw new Error( + `Together LLM failed: ${message}`, + ); + } + } + + async generateChat( + messages: Message[], + ): Promise { + try { + return await super.generateChat(messages); + } catch (err) { + const message = + err instanceof Error + ? err.message + : String(err); + + throw new Error( + `Together LLM failed: ${message}`, + ); + } + } +} \ No newline at end of file diff --git a/mem0-ts/src/oss/src/utils/factory.ts b/mem0-ts/src/oss/src/utils/factory.ts index 35c2a21a1..018acb9e2 100644 --- a/mem0-ts/src/oss/src/utils/factory.ts +++ b/mem0-ts/src/oss/src/utils/factory.ts @@ -1,3 +1,4 @@ + import { OpenAIEmbedder } from "../embeddings/openai"; import { OllamaEmbedder } from "../embeddings/ollama"; import { LMStudioEmbedder } from "../embeddings/lmstudio"; @@ -22,6 +23,7 @@ import { RedisDB } from "../vector_stores/redis"; import { OllamaLLM } from "../llms/ollama"; import { LMStudioLLM } from "../llms/lmstudio"; import { DeepSeekLLM } from "../llms/deepseek"; +import { TogetherLLM } from "../llms/together"; import { SupabaseDB } from "../vector_stores/supabase"; import { SQLiteManager } from "../storage/SQLiteManager"; import { MemoryHistoryManager } from "../storage/MemoryHistoryManager"; @@ -85,6 +87,8 @@ export class LLMFactory { return new LangchainLLM(config); case "deepseek": return new DeepSeekLLM(config); + case "together": + return new TogetherLLM(config); default: throw new Error(`Unsupported LLM provider: ${provider}`); }