Skip to content

How can I modify the default config? #1527

Description

@JasonJinAIFT

Issue with current documentation:

I see that Memory object takes a config defined by MemoryConfig class, which has 6 fields configuring different modules. Right now I want to change the llm config. Do I need to import all the Config classes and create a MemoryConfig instance in order to achieve it?

Following is what I am doing, but I think there should be a more elegant way.

`
import os
import mem0
from mem0 import Memory
from typing import Optional
from mem0.vector_stores.configs import VectorStoreConfig
from mem0.llms.configs import LlmConfig
from mem0.embeddings.configs import EmbedderConfig

from pydantic import BaseModel, Field, field_validator

class LlmConfig(BaseModel):
provider: str = Field(
description="Provider of the LLM (e.g., 'ollama', 'openai')", default="openai"
)
config: Optional[dict] = Field(
description="Configuration for the specific LLM", default={}
)

  @field_validator("config")
  def validate_config(cls, v, values):
      provider = values.data.get("provider")
      if provider in ("openai", "ollama", "groq", "together", "aws_bedrock", "litellm"):
          return v
      else:
          raise ValueError(f"Unsupported LLM provider: {provider}")

class MemoryConfig(BaseModel):
vector_store: VectorStoreConfig = Field(
description="Configuration for the vector store",
default_factory=VectorStoreConfig,
)
llm: LlmConfig = Field(
description="Configuration for the language model",
default_factory=LlmConfig,
)
embedder: EmbedderConfig = Field(
description="Configuration for the embedding model",
default_factory=EmbedderConfig,
)
history_db_path: str = Field(
description="Path to the history database",
default=os.path.join("mem0_dir", "history.db"),
)
collection_name: str = Field(default="mem0", description="Name of the collection")
embedding_model_dims: int = Field(
default=1536, description="Dimensions of the embedding model"
)

custom_llm_config = LlmConfig(provider="openai", config={"model":"kimi","temperature":0.3,"max_tokens":3000, "top_p":0.3})
memory_config = MemoryConfig(llm=custom_llm_config)
os.environ["OPENAI_API_KEY"] = "sk-O1q9KvklLakotmFB02AycfIM9gffBa9M97rUvEzXYMx8hkDQ"
mem = Memory(config=memory_config)
`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions