@@ -129,15 +131,17 @@ For more advanced usage and API documentation, visit our [documentation](https:/
## Demos
-- AI Companion: Experience personalized conversations with an AI that remembers your preferences and past interactions
+- Mem0 - ChatGPT with Memory: A personalized AI chat app powered by Mem0 that remembers your preferences, facts, and memories.
-[AI Companion Demo](https://github.com/user-attachments/assets/3fc72023-a72c-4593-8be0-3cee3ba744da)
+[Mem0 - ChatGPT with Memory](https://github.com/user-attachments/assets/cebc4f8e-bdb9-4837-868d-13c5ab7bb433)
+
+Try live [demo](https://mem0.dev/demo/)
-- Mem0 Demo: A personalized AI chat app powered by Mem0 that remembers your preferences, facts, and memories.
+- AI Companion: Experience personalized conversations with an AI that remembers your preferences and past interactions
-[Mem0 Demo](https://github.com/user-attachments/assets/cebc4f8e-bdb9-4837-868d-13c5ab7bb433)
+[AI Companion Demo](https://github.com/user-attachments/assets/3fc72023-a72c-4593-8be0-3cee3ba744da)
diff --git a/docs/docs.json b/docs/docs.json
index 1b50d8c3..2b14c619 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -277,7 +277,7 @@
},
{
"anchor": "Demo",
- "href": "https://demo.mem0.ai",
+ "href": "https://mem0.dev/demo",
"icon": "play"
},
{
diff --git a/docs/examples/mem0-demo.mdx b/docs/examples/mem0-demo.mdx
index 7b5b31c5..e5d2a379 100644
--- a/docs/examples/mem0-demo.mdx
+++ b/docs/examples/mem0-demo.mdx
@@ -13,6 +13,8 @@ You can create a personalized AI Companion using Mem0. This guide will walk you
src="https://github.com/user-attachments/assets/cebc4f8e-bdb9-4837-868d-13c5ab7bb433"
>
+You can try the [Mem0 Demo](https://mem0.dev/demo) live here.
+
## Overview
The Personalized AI Companion leverages Mem0 to retain information across interactions, enabling a tailored learning experience. It creates memories for each user interaction and integrates with OpenAI's GPT models to provide detailed and context-aware responses to user queries.
diff --git a/docs/open-source/graph_memory/overview.mdx b/docs/open-source/graph_memory/overview.mdx
index 0e3bfe67..1867539b 100644
--- a/docs/open-source/graph_memory/overview.mdx
+++ b/docs/open-source/graph_memory/overview.mdx
@@ -52,10 +52,6 @@ Currently, we support Neo4j as a graph store provider. You can setup [Neo4j](htt
If you are using Neo4j locally, then you need to install [APOC plugins](https://neo4j.com/labs/apoc/4.1/installation/).
-
-If you are using NodeSDK, you need to pass `enableGraph` as `true` in the `config` object.
-
-
User can also customize the LLM for Graph Memory from the [Supported LLM list](https://docs.mem0.ai/components/llms/overview) with three levels of configuration:
1. **Main Configuration**: If `llm` is set in the main config, it will be used for all graph operations.
@@ -163,6 +159,10 @@ const memory = new Memory(config);
```
+
+If you are using NodeSDK, you need to pass `enableGraph` as `true` in the `config` object.
+
+
## Graph Operations
The Mem0's graph supports the following operations:
diff --git a/docs/open-source/node-quickstart.mdx b/docs/open-source/node-quickstart.mdx
index 0dc4cf62..1fc1abd7 100644
--- a/docs/open-source/node-quickstart.mdx
+++ b/docs/open-source/node-quickstart.mdx
@@ -74,14 +74,14 @@ const messages = [
{"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."}
]
-await memory.add(messages, { userId: "user123", metadata: { category: "movie_recommendations" } });
+await memory.add(messages, { userId: "alice", metadata: { category: "movie_recommendations" } });
```
```json Output
{
"results": [
{
- "id": "c03c9045-df76-4949-bbc5-d5dc1932aa5c",
+ "id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
"memory": "User is planning to watch a movie tonight.",
"metadata": {
"category": "movie_recommendations"
@@ -111,7 +111,7 @@ await memory.add(messages, { userId: "user123", metadata: { category: "movie_rec
```typescript Code
// Get all memories
-const allMemories = await memory.getAll({ userId: "user123" });
+const allMemories = await memory.getAll({ userId: "alice" });
console.log(allMemories)
```
@@ -127,7 +127,7 @@ console.log(allMemories)
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
},
{
"id": "475bde34-21e6-42ab-8bef-0ab84474f156",
@@ -138,7 +138,7 @@ console.log(allMemories)
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
},
{
"id": "cbb1fe73-0bf1-4067-8c1f-63aa53e7b1a4",
@@ -149,7 +149,7 @@ console.log(allMemories)
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
}
]
}
@@ -176,7 +176,7 @@ console.log(singleMemory);
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
}
```
@@ -185,7 +185,7 @@ console.log(singleMemory);
```typescript Code
-const result = await memory.search('What do you know about me?', { userId: "user123" });
+const result = await memory.search('What do you know about me?', { userId: "alice" });
console.log(result);
```
@@ -202,7 +202,7 @@ console.log(result);
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
},
{
"id": "475bde34-21e6-42ab-8bef-0ab84474f156",
@@ -214,7 +214,7 @@ console.log(result);
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
},
{
"id": "cbb1fe73-0bf1-4067-8c1f-63aa53e7b1a4",
@@ -226,7 +226,7 @@ console.log(result);
"metadata": {
"category": "movie_recommendations"
},
- "userId": "user123"
+ "userId": "alice"
}
]
}
@@ -263,23 +263,23 @@ console.log(history);
[
{
"id": 39,
- "memory_id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
- "previous_value": "User is planning to watch a movie tonight.",
- "new_value": "I love India, it is my favorite country.",
+ "memoryId": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "previousValue": "User is planning to watch a movie tonight.",
+ "newValue": "I love India, it is my favorite country.",
"action": "UPDATE",
- "created_at": "2025-02-27T16:33:20.557Z",
- "updated_at": "2025-02-27T16:33:27.051Z",
- "is_deleted": 0
+ "createdAt": "2025-02-27T16:33:20.557Z",
+ "updatedAt": "2025-02-27T16:33:27.051Z",
+ "isDeleted": 0
},
{
"id": 37,
- "memory_id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
- "previous_value": null,
- "new_value": "User is planning to watch a movie tonight.",
+ "memoryId": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "previousValue": null,
+ "newValue": "User is planning to watch a movie tonight.",
"action": "ADD",
- "created_at": "2025-02-27T16:33:20.557Z",
- "updated_at": null,
- "is_deleted": 0
+ "createdAt": "2025-02-27T16:33:20.557Z",
+ "updatedAt": null,
+ "isDeleted": 0
}
]
```
@@ -292,7 +292,7 @@ console.log(history);
await memory.delete('892db2ae-06d9-49e5-8b3e-585ef9b85b8e');
// Delete all memories for a user
-await memory.deleteAll({ userId: "user123" });
+await memory.deleteAll({ userId: "alice" });
```
### Reset Memory
@@ -327,6 +327,15 @@ Mem0 offers extensive configuration options to customize its behavior according
| `openaiBaseUrl` | Base URL for OpenAI API | OpenAI |
+
+| Parameter | Description | Default |
+|-------------|---------------------------------|-------------|
+| `provider` | Graph store provider (e.g., "neo4j") | "neo4j" |
+| `url` | Connection URL | env.NEO4J_URL |
+| `username` | Authentication username | env.NEO4J_USERNAME |
+| `password` | Authentication password | env.NEO4J_PASSWORD |
+
+
| Parameter | Description | Default |
|-------------|---------------------------------|------------------------------|
diff --git a/docs/open-source/python-quickstart.mdx b/docs/open-source/python-quickstart.mdx
index b52399db..eec2b6c0 100644
--- a/docs/open-source/python-quickstart.mdx
+++ b/docs/open-source/python-quickstart.mdx
@@ -85,20 +85,43 @@ m = Memory.from_config(config_dict=config)
```python Code
-# For a user
-result = m.add("Likes to play cricket on weekends", user_id="alice", metadata={"category": "hobbies"})
+const messages = [
+ {"role": "user", "content": "I'm planning to watch a movie tonight. Any recommendations?"},
+ {"role": "assistant", "content": "How about a thriller movies? They can be quite engaging."},
+ {"role": "user", "content": "I'm not a big fan of thriller movies but I love sci-fi movies."},
+ {"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."}
+]
-# messages = [
-# {"role": "user", "content": "Hi, I'm Alex. I like to play cricket on weekends."},
-# {"role": "assistant", "content": "Hello Alex! It's great to know that you enjoy playing cricket on weekends. I'll remember that for future reference."}
-# ]
-# client.add(messages, user_id="alice")
+result = m.add(messages, user_id="alice", metadata={"category": "movie_recommendations"})
```
```json Output
{
"results": [
- {"id": "bf4d4092-cf91-4181-bfeb-b6fa2ed3061b", "memory": "Likes to play cricket on weekends", "event": "ADD"}
+ {
+ "id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "memory": "User is planning to watch a movie tonight.",
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "event": "ADD"
+ },
+ {
+ "id": "cbb1fe73-0bf1-4067-8c1f-63aa53e7b1a4",
+ "memory": "User is not a big fan of thriller movies.",
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "event": "ADD"
+ },
+ {
+ "id": "475bde34-21e6-42ab-8bef-0ab84474f156",
+ "memory": "User loves sci-fi movies.",
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "event": "ADD"
+ }
]
}
```
@@ -115,14 +138,38 @@ all_memories = m.get_all(user_id="alice")
```json Output
{
"results": [
+ {
+ "id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "memory": "User is planning to watch a movie tonight.",
+ "hash": "1a271c007316c94377175ee80e746a19",
+ "created_at": "2025-02-27T16:33:20.557Z",
+ "updated_at": "2025-02-27T16:33:27.051Z",
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
+ },
{
- "id": "bf4d4092-cf91-4181-bfeb-b6fa2ed3061b",
- "memory": "Likes to play cricket on weekends",
- "hash": "285d07801ae42054732314853e9eadd7",
- "metadata": {"category": "hobbies"},
- "created_at": "2024-10-28T12:32:07.744891-07:00",
- "updated_at": None,
- "user_id": "alice"
+ "id": "475bde34-21e6-42ab-8bef-0ab84474f156",
+ "memory": "User loves sci-fi movies.",
+ "hash": "285d07801ae42054732314853e9eadd7",
+ "created_at": "2025-02-27T16:33:20.560Z",
+ "updated_at": None,
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
+ },
+ {
+ "id": "cbb1fe73-0bf1-4067-8c1f-63aa53e7b1a4",
+ "memory": "User is not a big fan of thriller movies.",
+ "hash": "285d07801ae42054732314853e9eadd7",
+ "created_at": "2025-02-27T16:33:20.560Z",
+ "updated_at": None,
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
}
]
}
@@ -135,18 +182,20 @@ all_memories = m.get_all(user_id="alice")
```python Code
# Get a single memory by ID
-specific_memory = m.get("bf4d4092-cf91-4181-bfeb-b6fa2ed3061b")
+specific_memory = m.get("892db2ae-06d9-49e5-8b3e-585ef9b85b8e")
```
```json Output
{
- "id": "bf4d4092-cf91-4181-bfeb-b6fa2ed3061b",
- "memory": "Likes to play cricket on weekends",
- "hash": "285d07801ae42054732314853e9eadd7",
- "metadata": {"category": "hobbies"},
- "created_at": "2024-10-28T12:32:07.744891-07:00",
- "updated_at": None,
- "user_id": "alice"
+ "id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "memory": "User is planning to watch a movie tonight.",
+ "hash": "1a271c007316c94377175ee80e746a19",
+ "created_at": "2025-02-27T16:33:20.557Z",
+ "updated_at": None,
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
}
```
@@ -155,23 +204,49 @@ specific_memory = m.get("bf4d4092-cf91-4181-bfeb-b6fa2ed3061b")
```python Code
-related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
+related_memories = m.search(query="What do you know about me?", user_id="alice")
```
```json Output
{
- "results": [
- {
- "id": "bf4d4092-cf91-4181-bfeb-b6fa2ed3061b",
- "memory": "Likes to play cricket on weekends",
- "hash": "285d07801ae42054732314853e9eadd7",
- "metadata": {"category": "hobbies"},
- "score": 0.30808347,
- "created_at": "2024-10-28T12:32:07.744891-07:00",
- "updated_at": None,
- "user_id": "alice"
- }
- ]
+ "results": [
+ {
+ "id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "memory": "User is planning to watch a movie tonight.",
+ "hash": "1a271c007316c94377175ee80e746a19",
+ "created_at": "2025-02-27T16:33:20.557Z",
+ "updated_at": None,
+ "score": 0.38920719231944799,
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
+ },
+ {
+ "id": "475bde34-21e6-42ab-8bef-0ab84474f156",
+ "memory": "User loves sci-fi movies.",
+ "hash": "285d07801ae42054732314853e9eadd7",
+ "created_at": "2025-02-27T16:33:20.560Z",
+ "updated_at": None,
+ "score": 0.36869761478135689,
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
+ },
+ {
+ "id": "cbb1fe73-0bf1-4067-8c1f-63aa53e7b1a4",
+ "memory": "User is not a big fan of thriller movies.",
+ "hash": "285d07801ae42054732314853e9eadd7",
+ "created_at": "2025-02-27T16:33:20.560Z",
+ "updated_at": None,
+ "score": 0.33855272141248272,
+ "metadata": {
+ "category": "movie_recommendations"
+ },
+ "user_id": "alice"
+ }
+ ]
}
```
@@ -180,7 +255,7 @@ related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
```python Code
-result = m.update(memory_id="bf4d4092-cf91-4181-bfeb-b6fa2ed3061b", data="Likes to play tennis on weekends")
+result = m.update(memory_id="892db2ae-06d9-49e5-8b3e-585ef9b85b8e", data="I love India, it is my favorite country.")
```
```json Output
@@ -192,29 +267,31 @@ result = m.update(memory_id="bf4d4092-cf91-4181-bfeb-b6fa2ed3061b", data="Likes
```python Code
-history = m.history(memory_id="bf4d4092-cf91-4181-bfeb-b6fa2ed3061b")
+history = m.history(memory_id="892db2ae-06d9-49e5-8b3e-585ef9b85b8e")
```
```json Output
[
- {
- "id": "96d2821d-e551-4089-aa57-9398c421d450",
- "memory_id": "bf4d4092-cf91-4181-bfeb-b6fa2ed3061b",
- "old_memory": None,
- "new_memory": "Likes to play cricket on weekends",
- "event": "ADD",
- "created_at": "2024-10-28T12:32:07.744891-07:00",
- "updated_at": None
- },
- {
- "id": "3db4cb58-c0f1-4dd0-b62a-8123068ebfe7",
- "memory_id": "bf4d4092-cf91-4181-bfeb-b6fa2ed3061b",
- "old_memory": "Likes to play cricket on weekends",
- "new_memory": "Likes to play tennis on weekends",
- "event": "UPDATE",
- "created_at": "2024-10-28T12:32:07.744891-07:00",
- "updated_at": "2024-10-28T13:05:46.987978-07:00"
- }
+ {
+ "id": 39,
+ "memory_id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "previous_value": "User is planning to watch a movie tonight.",
+ "new_value": "I love India, it is my favorite country.",
+ "action": "UPDATE",
+ "created_at": "2025-02-27T16:33:20.557Z",
+ "updated_at": "2025-02-27T16:33:27.051Z",
+ "is_deleted": 0
+ },
+ {
+ "id": 37,
+ "memory_id": "892db2ae-06d9-49e5-8b3e-585ef9b85b8e",
+ "previous_value": null,
+ "new_value": "User is planning to watch a movie tonight.",
+ "action": "ADD",
+ "created_at": "2025-02-27T16:33:20.557Z",
+ "updated_at": null,
+ "is_deleted": 0
+ }
]
```
@@ -223,7 +300,7 @@ history = m.history(memory_id="bf4d4092-cf91-4181-bfeb-b6fa2ed3061b")
```python
# Delete a memory by id
-m.delete(memory_id="bf4d4092-cf91-4181-bfeb-b6fa2ed3061b")
+m.delete(memory_id="892db2ae-06d9-49e5-8b3e-585ef9b85b8e")
# Delete all memories for a user
m.delete_all(user_id="alice")
```
diff --git a/examples/mem0-demo/app/assistant.tsx b/examples/mem0-demo/app/assistant.tsx
index 2dc79391..89ee5448 100644
--- a/examples/mem0-demo/app/assistant.tsx
+++ b/examples/mem0-demo/app/assistant.tsx
@@ -92,8 +92,8 @@ export const Assistant = () => {
-
-
+
+
diff --git a/examples/mem0-demo/app/layout.tsx b/examples/mem0-demo/app/layout.tsx
index 3d954690..8ccf822f 100644
--- a/examples/mem0-demo/app/layout.tsx
+++ b/examples/mem0-demo/app/layout.tsx
@@ -13,8 +13,8 @@ const geistMono = Geist_Mono({
});
export const metadata: Metadata = {
- title: "Mem0-Demo",
- description: "Mem0-Demo: By Mem0",
+ title: "Mem0 - ChatGPT with Memory",
+ description: "Mem0 - ChatGPT with Memory is a personalized AI chat app powered by Mem0 that remembers your preferences, facts, and memories.",
};
export default function RootLayout({
diff --git a/examples/mem0-demo/components/assistant-ui/thread-list.tsx b/examples/mem0-demo/components/assistant-ui/thread-list.tsx
index 87dcef51..2457634c 100644
--- a/examples/mem0-demo/components/assistant-ui/thread-list.tsx
+++ b/examples/mem0-demo/components/assistant-ui/thread-list.tsx
@@ -19,55 +19,73 @@ import {
AlertDialogTitle,
AlertDialogTrigger,
} from "@/components/ui/alert-dialog";
-
+import ThemeAwareLogo from "@/components/assistant-ui/theme-aware-logo";
+import Link from "next/link";
interface ThreadListProps {
onResetUserId?: () => void;
+ isDarkMode: boolean;
}
-export const ThreadList: FC = ({ onResetUserId }) => {
+export const ThreadList: FC = ({ onResetUserId, isDarkMode }) => {
const [open, setOpen] = useState(false);
return (
-
-
-
-
Recent Chats
- {onResetUserId && (
-
-
-
-
-
-
-
-
- Reset Memory
-
- This will permanently delete all your chat history and memories. This action cannot be undone.
-
-
-
- Cancel
- {
- onResetUserId();
- setOpen(false);
- }}
- className="bg-[#4f46e5] hover:bg-[#4338ca] dark:bg-[#6366f1] dark:hover:bg-[#4f46e5] text-white"
+
+
+
+
+
+ Recent Chats
+
+ {onResetUserId && (
+
+
+
- Reset
-
-
-
-
- )}
+
+
+
+
+
+
+ Reset Memory
+
+
+ This will permanently delete all your chat history and
+ memories. This action cannot be undone.
+
+
+
+
+ Cancel
+
+ {
+ onResetUserId();
+ setOpen(false);
+ }}
+ className="bg-[#4f46e5] hover:bg-[#4338ca] dark:bg-[#6366f1] dark:hover:bg-[#4f46e5] text-white"
+ >
+ Reset
+
+
+
+
+ )}
+
{onResetUserId && (
-
+ = ({ sidebarOpen, setSidebarOpen, onResetUs
- Reset Memory
+
+ Reset Memory
+
- This will permanently delete all your chat history and memories. This action cannot be undone.
+ This will permanently delete all your chat history and
+ memories. This action cannot be undone.
- Cancel
+
+ Cancel
+ {
onResetUserId();
@@ -109,9 +127,9 @@ export const Thread: FC = ({ sidebarOpen, setSidebarOpen, onResetUs
)}
-
- A personalized AI chat app powered by Mem0 that remembers your preferences, facts, and memories.
+ A personalized AI chat app powered by Mem0 that remembers your
+ preferences, facts, and memories.
-
+
How can I help you today?
-
+
@@ -212,21 +250,27 @@ const ThreadWelcomeSuggestions: FC = () => {
prompt="I like to travel to "
method="replace"
>
- Travel
+
+ Travel
+
- Food
+
+ Food
+
- Project details
+
+ Project details
+