> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mem0.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LLM Configuration Reference

> Reference for LLM configuration options in Mem0 for Python and TypeScript, including value precedence rules.

## How to define configurations?

<Tabs>
  <Tab title="Python">
    The `config` is defined as a Python dictionary with two main keys:

    * `llm`: Specifies the llm provider and its configuration
      * `provider`: The name of the llm (e.g., "openai", "groq")
      * `config`: A nested dictionary containing provider-specific settings
  </Tab>

  <Tab title="TypeScript">
    The `config` is defined as a TypeScript object with these keys:

    * `llm`: Specifies the LLM provider and its configuration (required)
      * `provider`: The name of the LLM (e.g., "openai", "groq")
      * `config`: A nested object containing provider-specific settings
    * `embedder`: Specifies the embedder provider and its configuration (optional)
    * `vectorStore`: Specifies the vector store provider and its configuration (optional)
    * `historyDbPath`: Path to the history database file (optional)
  </Tab>
</Tabs>

### Config Values Precedence

Config values are applied in the following order of precedence (from highest to lowest):

1. Values explicitly set in the `config` object/dictionary
2. Environment variables (e.g., `OPENAI_API_KEY`, `OPENAI_BASE_URL`)
3. Default values defined in the LLM implementation

This means that values specified in the `config` will override corresponding environment variables, which in turn override default values.

## How to Use Config

Here's a general example of how to use the config with Mem0:

<CodeGroup>
  ```python Python theme={null}
  import os
  from mem0 import Memory

  os.environ["OPENAI_API_KEY"] = "sk-xx" # for embedder

  config = {
      "llm": {
          "provider": "your_chosen_provider",
          "config": {
              # Provider-specific settings go here
          }
      }
  }

  m = Memory.from_config(config)
  m.add("Your text here", user_id="user", metadata={"category": "example"})

  ```

  ```typescript TypeScript theme={null}
  import { Memory } from 'mem0ai/oss';

  // Minimal configuration with just the LLM settings
  const config = {
    llm: {
      provider: 'your_chosen_provider',
      config: {
        // Provider-specific settings go here
      }
    }
  };

  const memory = new Memory(config);
  await memory.add("Your text here", { userId: "user123", metadata: { category: "example" } });
  ```
</CodeGroup>

## Why is Config Needed?

Config is essential for:

1. Specifying which LLM to use.
2. Providing necessary connection details (e.g., model, api\_key, temperature).
3. Ensuring proper initialization and connection to your chosen LLM.

## Master List of All Params in Config

Here's a comprehensive list of all parameters that can be used across different LLMs:

<Tabs>
  <Tab title="Python">
    | Parameter | Description | Provider |
    | - | - | - |
    | `model` | Embedding model to use | All |
    | `temperature` | Temperature of the model | All |
    | `api_key` | API key to use | All |
    | `max_tokens` | Tokens to generate | All |
    | `top_p` | Probability threshold for nucleus sampling | All |
    | `top_k` | Number of highest probability tokens to keep | All |
    | `http_client_proxies` | Allow proxy server settings | All |
    | `models` | List of models | Openrouter |
    | `route` | Routing strategy | Openrouter |
    | `openrouter_base_url` | Base URL for Openrouter API | Openrouter |
    | `site_url` | Site URL | Openrouter |
    | `app_name` | Application name | Openrouter |
    | `ollama_base_url` | Base URL for Ollama API | Ollama |
    | `openai_base_url` | Base URL for OpenAI API | OpenAI |
    | `azure_kwargs` | Azure LLM args for initialization | AzureOpenAI |
    | `deepseek_base_url` | Base URL for DeepSeek API | DeepSeek |
    | `xai_base_url` | Base URL for XAI API | XAI |
    | `sarvam_base_url` | Base URL for Sarvam API | Sarvam |
    | `reasoning_effort` | Reasoning level (low, medium, high) | All |
    | `frequency_penalty` | Penalize frequent tokens (-2.0 to 2.0) | Sarvam |
    | `presence_penalty` | Penalize existing tokens (-2.0 to 2.0) | Sarvam |
    | `seed` | Seed for deterministic sampling | Sarvam |
    | `stop` | Stop sequences (max 4) | Sarvam |
    | `lmstudio_base_url` | Base URL for LM Studio API | LM Studio |
    | `response_callback` | LLM response callback function | OpenAI |
  </Tab>

  <Tab title="TypeScript">
    | Parameter | Description | Provider |
    | - | - | - |
    | `model` | Embedding model to use | All |
    | `temperature` | Temperature of the model | All |
    | `apiKey` | API key to use | All |
    | `maxTokens` | Tokens to generate | All |
    | `topP` | Probability threshold for nucleus sampling | All |
    | `topK` | Number of highest probability tokens to keep | All |
    | `openaiBaseUrl` | Base URL for OpenAI API | OpenAI |
  </Tab>
</Tabs>

## Supported LLMs

For detailed information on configuring specific LLMs, please visit the [LLMs](./overview) section. There you'll find information for each supported LLM with provider-specific usage examples and configuration details.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.