docs/platform/features/group-chat.mdx
The Group Chat feature enables Mem0 to process conversations involving multiple participants and automatically attribute memories to individual speakers. This allows for precise tracking of each participant's preferences, characteristics, and contributions in collaborative discussions, team meetings, or multi-agent conversations.
When you provide messages with participant names, Mem0 automatically:
user_id or agent_idMem0 automatically detects group chat scenarios when messages contain a name field:
{
"role": "user",
"name": "Alice",
"content": "Hey team, I think we should use React for the frontend"
}
When names are present, Mem0:
"Alice (user): content" for processinguser_id (for users) or agent_id (for assistants/agents)name field becomes the user_id in stored memoriesname field becomes the agent_id in stored memoriesAdd memories from a multi-participant conversation:
<CodeGroup>from mem0 import MemoryClient
client = MemoryClient(api_key="your-api-key")
# Group chat with multiple users
messages = [
{"role": "user", "name": "Alice", "content": "Hey team, I think we should use React for the frontend"},
{"role": "user", "name": "Bob", "content": "I disagree, Vue.js would be better for our use case"},
{"role": "user", "name": "Charlie", "content": "What about considering Angular? It has great enterprise support"},
{"role": "assistant", "content": "All three frameworks have their merits. Let me summarize the pros and cons of each."}
]
response = client.add(
messages,
run_id="group_chat_1",
infer=True
)
print(response)
{
"results": [
{
"id": "4d82478a-8d50-47e6-9324-1f65efff5829",
"event": "ADD",
"memory": "prefers using React for the frontend"
},
{
"id": "1d8b8f39-7b17-4d18-8632-ab1c64fa35b9",
"event": "ADD",
"memory": "prefers Vue.js for our use case"
},
{
"id": "147559a8-c5f7-44d0-9418-91f53f7a89a4",
"event": "ADD",
"memory": "suggests considering Angular because it has great enterprise support"
}
]
}
Retrieve all memories from a specific group chat session:
<CodeGroup># Get all memories for a specific run_id
# Use wildcard "*" for user_id to match all participants
filters = {
"AND": [
{"user_id": "*"},
{"run_id": "group_chat_1"}
]
}
all_memories = client.get_all(filters=filters, page=1)
print(all_memories)
[
{
"id": "147559a8-c5f7-44d0-9418-91f53f7a89a4",
"memory": "suggests considering Angular because it has great enterprise support",
"user_id": "charlie",
"run_id": "group_chat_1",
"created_at": "2025-06-21T05:51:11.007223-07:00",
"updated_at": "2025-06-21T05:51:11.626562-07:00"
},
{
"id": "1d8b8f39-7b17-4d18-8632-ab1c64fa35b9",
"memory": "prefers Vue.js for our use case",
"user_id": "bob",
"run_id": "group_chat_1",
"created_at": "2025-06-21T05:51:08.675301-07:00",
"updated_at": "2025-06-21T05:51:09.319269-07:00",
},
{
"id": "4d82478a-8d50-47e6-9324-1f65efff5829",
"memory": "prefers using React for the frontend",
"user_id": "alice",
"run_id": "group_chat_1",
"created_at": "2025-06-21T05:51:05.943223-07:00",
"updated_at": "2025-06-21T05:51:06.982539-07:00",
}
]
Retrieve memories from a specific participant in a group chat:
<CodeGroup># Get memories for a specific participant
filters = {
"AND": [
{"user_id": "charlie"},
{"run_id": "group_chat_1"}
]
}
charlie_memories = client.get_all(filters=filters, page=1)
print(charlie_memories)
[
{
"id": "147559a8-c5f7-44d0-9418-91f53f7a89a4",
"memory": "suggests considering Angular because it has great enterprise support",
"user_id": "charlie",
"run_id": "group_chat_1",
"created_at": "2025-06-21T05:51:11.007223-07:00",
"updated_at": "2025-06-21T05:51:11.626562-07:00",
}
]
Search for specific information within a group chat session:
<CodeGroup># Search within group chat context
filters = {
"AND": [
{"user_id": "charlie"},
{"run_id": "group_chat_1"}
]
}
search_response = client.search(
query="What are the tasks?",
filters=filters
)
print(search_response)
[
{
"id": "147559a8-c5f7-44d0-9418-91f53f7a89a4",
"memory": "suggests considering Angular because it has great enterprise support",
"user_id": "charlie",
"run_id": "group_chat_1",
"created_at": "2025-06-21T05:51:11.007223-07:00",
"updated_at": "2025-06-21T05:51:11.626562-07:00",
}
]
Group chat supports async processing for improved performance. Memory additions are processed asynchronously by default.
<CodeGroup># Group chat — async processing is the default
response = client.add(
messages,
run_id="groupchat_async",
infer=True,
)
print(response)
Each message in a group chat must include:
role: The participant's role ("user", "assistant", "agent")content: The message contentname: The participant's name (required for group chat detection){
"role": "user",
"name": "Alice",
"content": "I think we should use React for the frontend"
}
user: Human participants (memories stored with user_id)assistant: AI assistants (memories stored with agent_id)Consistent Naming: Use consistent names for participants across sessions to maintain proper memory attribution.
Clear Role Assignment: Ensure each participant has the correct role (user, assistant, or agent) for proper memory categorization.
Session Management: Use meaningful run_id values to organize group chat sessions and enable easy retrieval.
Memory Filtering: Use filters to retrieve memories from specific participants or sessions when needed.
Async Processing: Memory additions are processed asynchronously by default, which is ideal for large group conversations.
Search Context: Leverage the search functionality to find specific information within group chat contexts.
If you have any questions, please feel free to reach out to us using one of the following methods:
<Snippet file="get-help.mdx" />