memorisdk 1.0.2__tar.gz → 2.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of memorisdk might be problematic. Click here for more details.
- {memorisdk-1.0.2 → memorisdk-2.0.1}/PKG-INFO +56 -23
- {memorisdk-1.0.2 → memorisdk-2.0.1}/README.md +30 -20
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/__init__.py +24 -8
- memorisdk-2.0.1/memori/agents/conscious_agent.py +344 -0
- memorisdk-2.0.1/memori/agents/memory_agent.py +585 -0
- memorisdk-2.0.1/memori/agents/retrieval_agent.py +1002 -0
- memorisdk-2.0.1/memori/config/memory_manager.py +323 -0
- memorisdk-2.0.1/memori/core/conversation.py +393 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/core/database.py +386 -371
- memorisdk-2.0.1/memori/core/memory.py +2535 -0
- memorisdk-2.0.1/memori/core/providers.py +217 -0
- memorisdk-2.0.1/memori/database/adapters/__init__.py +10 -0
- memorisdk-2.0.1/memori/database/adapters/mysql_adapter.py +331 -0
- memorisdk-2.0.1/memori/database/adapters/postgresql_adapter.py +291 -0
- memorisdk-2.0.1/memori/database/adapters/sqlite_adapter.py +229 -0
- memorisdk-2.0.1/memori/database/auto_creator.py +320 -0
- memorisdk-2.0.1/memori/database/connection_utils.py +207 -0
- memorisdk-2.0.1/memori/database/connectors/base_connector.py +283 -0
- memorisdk-2.0.1/memori/database/connectors/mysql_connector.py +381 -0
- memorisdk-2.0.1/memori/database/connectors/postgres_connector.py +431 -0
- memorisdk-2.0.1/memori/database/connectors/sqlite_connector.py +323 -0
- memorisdk-2.0.1/memori/database/models.py +400 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/queries/base_queries.py +1 -1
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/queries/memory_queries.py +91 -2
- memorisdk-2.0.1/memori/database/query_translator.py +222 -0
- memorisdk-2.0.1/memori/database/schema_generators/__init__.py +7 -0
- memorisdk-2.0.1/memori/database/schema_generators/mysql_schema_generator.py +215 -0
- memorisdk-2.0.1/memori/database/search/__init__.py +8 -0
- memorisdk-2.0.1/memori/database/search/mysql_search_adapter.py +255 -0
- memorisdk-2.0.1/memori/database/search/sqlite_search_adapter.py +180 -0
- memorisdk-2.0.1/memori/database/search_service.py +700 -0
- memorisdk-2.0.1/memori/database/sqlalchemy_manager.py +888 -0
- memorisdk-2.0.1/memori/integrations/__init__.py +93 -0
- memorisdk-2.0.1/memori/integrations/litellm_integration.py +345 -0
- memorisdk-2.0.1/memori/integrations/openai_integration.py +539 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/tools/memory_tool.py +94 -4
- memorisdk-2.0.1/memori/utils/input_validator.py +395 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/pydantic_models.py +138 -36
- memorisdk-2.0.1/memori/utils/query_builder.py +530 -0
- memorisdk-2.0.1/memori/utils/security_audit.py +594 -0
- memorisdk-2.0.1/memori/utils/security_integration.py +339 -0
- memorisdk-2.0.1/memori/utils/transaction_manager.py +547 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memorisdk.egg-info/PKG-INFO +56 -23
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memorisdk.egg-info/SOURCES.txt +24 -2
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memorisdk.egg-info/requires.txt +28 -1
- {memorisdk-1.0.2 → memorisdk-2.0.1}/pyproject.toml +42 -5
- memorisdk-1.0.2/memori/agents/conscious_agent.py +0 -506
- memorisdk-1.0.2/memori/agents/memory_agent.py +0 -322
- memorisdk-1.0.2/memori/agents/retrieval_agent.py +0 -579
- memorisdk-1.0.2/memori/core/memory.py +0 -1384
- memorisdk-1.0.2/memori/database/connectors/mysql_connector.py +0 -159
- memorisdk-1.0.2/memori/database/connectors/postgres_connector.py +0 -158
- memorisdk-1.0.2/memori/database/connectors/sqlite_connector.py +0 -148
- memorisdk-1.0.2/memori/integrations/__init__.py +0 -68
- memorisdk-1.0.2/memori/integrations/litellm_integration.py +0 -11
- memorisdk-1.0.2/memori/integrations/openai_integration.py +0 -273
- memorisdk-1.0.2/memori/scripts/llm_text.py +0 -50
- memorisdk-1.0.2/memorisdk.egg-info/entry_points.txt +0 -2
- {memorisdk-1.0.2 → memorisdk-2.0.1}/LICENSE +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/agents/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/config/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/config/manager.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/config/settings.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/core/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/connectors/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/queries/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/queries/chat_queries.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/queries/entity_queries.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/templates/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/templates/basic_template.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/database/templates/schemas/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/integrations/anthropic_integration.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/tools/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/__init__.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/exceptions.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/helpers.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/logging.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/schemas.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memori/utils/validators.py +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memorisdk.egg-info/dependency_links.txt +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/memorisdk.egg-info/top_level.txt +0 -0
- {memorisdk-1.0.2 → memorisdk-2.0.1}/setup.cfg +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memorisdk
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: The Open-Source Memory Layer for AI Agents & Multi-Agent Systems
|
|
5
5
|
Author-email: GibsonAI Team <noc@gibsonai.com>
|
|
6
6
|
License: Apache-2.0
|
|
7
7
|
Project-URL: Homepage, https://github.com/GibsonAI/memori
|
|
8
|
-
Project-URL: Documentation, https://gibsonai.
|
|
8
|
+
Project-URL: Documentation, https://memori.gibsonai.com/docs
|
|
9
9
|
Project-URL: Repository, https://github.com/GibsonAI/memori.git
|
|
10
10
|
Project-URL: Bug Tracker, https://github.com/GibsonAI/memori/issues
|
|
11
11
|
Project-URL: Changelog, https://github.com/GibsonAI/memori/blob/main/CHANGELOG.md
|
|
@@ -31,8 +31,9 @@ License-File: LICENSE
|
|
|
31
31
|
Requires-Dist: loguru>=0.6.0
|
|
32
32
|
Requires-Dist: pydantic>=2.0.0
|
|
33
33
|
Requires-Dist: python-dotenv>=1.0.0
|
|
34
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
|
35
35
|
Requires-Dist: openai>=1.0.0
|
|
36
|
+
Requires-Dist: litellm>=1.0.0
|
|
36
37
|
Provides-Extra: dev
|
|
37
38
|
Requires-Dist: black>=23.0; extra == "dev"
|
|
38
39
|
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
@@ -40,6 +41,9 @@ Requires-Dist: isort>=5.9.0; extra == "dev"
|
|
|
40
41
|
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
41
42
|
Requires-Dist: pre-commit>=2.15; extra == "dev"
|
|
42
43
|
Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: pytest>=6.0; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest-cov>=2.0; extra == "dev"
|
|
46
|
+
Requires-Dist: pytest-asyncio>=0.18.0; extra == "dev"
|
|
43
47
|
Provides-Extra: docs
|
|
44
48
|
Requires-Dist: mkdocs>=1.5.0; extra == "docs"
|
|
45
49
|
Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
|
|
@@ -50,15 +54,31 @@ Provides-Extra: postgres
|
|
|
50
54
|
Requires-Dist: psycopg2-binary>=2.9.0; extra == "postgres"
|
|
51
55
|
Provides-Extra: mysql
|
|
52
56
|
Requires-Dist: PyMySQL>=1.0.0; extra == "mysql"
|
|
57
|
+
Provides-Extra: databases
|
|
58
|
+
Requires-Dist: psycopg2-binary>=2.9.0; extra == "databases"
|
|
59
|
+
Requires-Dist: PyMySQL>=1.0.0; extra == "databases"
|
|
60
|
+
Provides-Extra: anthropic
|
|
61
|
+
Requires-Dist: anthropic>=0.3.0; extra == "anthropic"
|
|
62
|
+
Provides-Extra: litellm
|
|
63
|
+
Requires-Dist: litellm>=1.0.0; extra == "litellm"
|
|
53
64
|
Provides-Extra: integrations
|
|
54
65
|
Requires-Dist: litellm>=1.0.0; extra == "integrations"
|
|
55
66
|
Requires-Dist: anthropic>=0.3.0; extra == "integrations"
|
|
67
|
+
Provides-Extra: demos
|
|
68
|
+
Requires-Dist: streamlit>=1.28.0; extra == "demos"
|
|
69
|
+
Requires-Dist: pandas>=2.0.0; extra == "demos"
|
|
70
|
+
Requires-Dist: plotly>=5.17.0; extra == "demos"
|
|
71
|
+
Requires-Dist: crewai>=0.152.0; extra == "demos"
|
|
72
|
+
Requires-Dist: crewai-tools>=0.59.0; extra == "demos"
|
|
56
73
|
Provides-Extra: all
|
|
57
74
|
Requires-Dist: black>=23.0; extra == "all"
|
|
58
75
|
Requires-Dist: ruff>=0.1.0; extra == "all"
|
|
59
76
|
Requires-Dist: isort>=5.9.0; extra == "all"
|
|
60
77
|
Requires-Dist: mypy>=1.0; extra == "all"
|
|
61
78
|
Requires-Dist: pre-commit>=2.15; extra == "all"
|
|
79
|
+
Requires-Dist: pytest>=6.0; extra == "all"
|
|
80
|
+
Requires-Dist: pytest-cov>=2.0; extra == "all"
|
|
81
|
+
Requires-Dist: pytest-asyncio>=0.18.0; extra == "all"
|
|
62
82
|
Requires-Dist: mkdocs>=1.5.0; extra == "all"
|
|
63
83
|
Requires-Dist: mkdocs-material>=9.0.0; extra == "all"
|
|
64
84
|
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "all"
|
|
@@ -68,6 +88,9 @@ Requires-Dist: psycopg2-binary>=2.9.0; extra == "all"
|
|
|
68
88
|
Requires-Dist: PyMySQL>=1.0.0; extra == "all"
|
|
69
89
|
Requires-Dist: litellm>=1.0.0; extra == "all"
|
|
70
90
|
Requires-Dist: anthropic>=0.3.0; extra == "all"
|
|
91
|
+
Requires-Dist: streamlit>=1.28.0; extra == "all"
|
|
92
|
+
Requires-Dist: pandas>=2.0.0; extra == "all"
|
|
93
|
+
Requires-Dist: plotly>=5.17.0; extra == "all"
|
|
71
94
|
Dynamic: license-file
|
|
72
95
|
|
|
73
96
|
[](https://gibsonai.com/)
|
|
@@ -83,7 +106,7 @@ Dynamic: license-file
|
|
|
83
106
|
</p>
|
|
84
107
|
|
|
85
108
|
<p align="center">
|
|
86
|
-
<a href="https://gibsonai.
|
|
109
|
+
<a href="https://memori.gibsonai.com/docs">Learn more</a>
|
|
87
110
|
·
|
|
88
111
|
<a href="https://www.gibsonai.com/discord">Join Discord</a>
|
|
89
112
|
</p>
|
|
@@ -121,12 +144,12 @@ Install Memori:
|
|
|
121
144
|
pip install memorisdk
|
|
122
145
|
```
|
|
123
146
|
|
|
124
|
-
### Example with
|
|
147
|
+
### Example with OpenAI
|
|
125
148
|
|
|
126
|
-
1. Install
|
|
149
|
+
1. Install OpenAI:
|
|
127
150
|
|
|
128
151
|
```bash
|
|
129
|
-
pip install
|
|
152
|
+
pip install openai
|
|
130
153
|
```
|
|
131
154
|
|
|
132
155
|
2. Set OpenAI API Key:
|
|
@@ -139,14 +162,17 @@ export OPENAI_API_KEY="sk-your-openai-key-here"
|
|
|
139
162
|
|
|
140
163
|
```python
|
|
141
164
|
from memori import Memori
|
|
142
|
-
from
|
|
165
|
+
from openai import OpenAI
|
|
166
|
+
|
|
167
|
+
# Initialize OpenAI client
|
|
168
|
+
openai_client = OpenAI()
|
|
143
169
|
|
|
144
170
|
# Initialize memory
|
|
145
171
|
memori = Memori(conscious_ingest=True)
|
|
146
172
|
memori.enable()
|
|
147
173
|
|
|
148
174
|
print("=== First Conversation - Establishing Context ===")
|
|
149
|
-
response1 =
|
|
175
|
+
response1 = openai_client.chat.completions.create(
|
|
150
176
|
model="gpt-4o-mini",
|
|
151
177
|
messages=[{
|
|
152
178
|
"role": "user",
|
|
@@ -158,7 +184,7 @@ print("Assistant:", response1.choices[0].message.content)
|
|
|
158
184
|
print("\n" + "="*50)
|
|
159
185
|
print("=== Second Conversation - Memory Provides Context ===")
|
|
160
186
|
|
|
161
|
-
response2 =
|
|
187
|
+
response2 = openai_client.chat.completions.create(
|
|
162
188
|
model="gpt-4o-mini",
|
|
163
189
|
messages=[{
|
|
164
190
|
"role": "user",
|
|
@@ -344,15 +370,15 @@ Works with **ANY** LLM library:
|
|
|
344
370
|
```python
|
|
345
371
|
memori.enable() # Enable universal recording
|
|
346
372
|
|
|
347
|
-
# LiteLLM (recommended)
|
|
348
|
-
from litellm import completion
|
|
349
|
-
completion(model="gpt-4", messages=[...])
|
|
350
|
-
|
|
351
373
|
# OpenAI
|
|
352
|
-
import
|
|
353
|
-
client =
|
|
374
|
+
from openai import OpenAI
|
|
375
|
+
client = OpenAI()
|
|
354
376
|
client.chat.completions.create(...)
|
|
355
377
|
|
|
378
|
+
# LiteLLM
|
|
379
|
+
from litellm import completion
|
|
380
|
+
completion(model="gpt-4", messages=[...])
|
|
381
|
+
|
|
356
382
|
# Anthropic
|
|
357
383
|
import anthropic
|
|
358
384
|
client = anthropic.Anthropic()
|
|
@@ -432,18 +458,25 @@ memori/
|
|
|
432
458
|
- **[Memory Retrieval](./memory_retrival_example.py)** - Function calling with memory tools
|
|
433
459
|
- **[Advanced Config](./examples/advanced_config.py)** - Production configuration
|
|
434
460
|
- **[Interactive Demo](./memori_example.py)** - Live conscious ingestion showcase
|
|
461
|
+
- **[Simple Multi-User](./examples/multiple-users/simple_multiuser.py)** - Basic demonstration of user memory isolation with namespaces
|
|
462
|
+
- **[FastAPI Multi-User App](./examples/multiple-users/fastapi_multiuser_app.py)** - Full-featured REST API with Swagger UI for testing multi-user functionality
|
|
435
463
|
|
|
436
464
|
## Framework Integrations
|
|
437
465
|
|
|
438
466
|
Memori works seamlessly with popular AI frameworks:
|
|
439
467
|
|
|
440
|
-
| Framework | Description | Example |
|
|
441
|
-
|
|
442
|
-
|
|
|
443
|
-
|
|
|
444
|
-
|
|
|
445
|
-
|
|
|
446
|
-
|
|
|
468
|
+
| Framework | Description | Example |
|
|
469
|
+
|-----------|-------------|---------|
|
|
470
|
+
| [AgentOps](./examples/integrations/agentops_example.py) | Track and monitor Memori memory operations with comprehensive observability | Memory operation tracking with AgentOps analytics |
|
|
471
|
+
| [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search |
|
|
472
|
+
| [AWS Strands](./examples/integrations/aws_strands_example.py) | Professional development coach with Strands SDK and persistent memory | Career coaching agent with goal tracking |
|
|
473
|
+
| [Azure AI Foundry](./examples/integrations/azure_ai_foundry_example.py) | Azure AI Foundry agents with persistent memory across conversations | Enterprise AI agents with Azure integration |
|
|
474
|
+
| [CamelAI](./examples/integrations/camelai_example.py) | Multi-agent communication framework with automatic memory recording and retrieval | Memory-enhanced chat agents with conversation continuity |
|
|
475
|
+
| [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory |
|
|
476
|
+
| [Digital Ocean AI](./examples/integrations/digital_ocean_example.py) | Memory-enhanced customer support using Digital Ocean's AI platform | Customer support assistant with conversation history |
|
|
477
|
+
| [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory |
|
|
478
|
+
| [OpenAI Agent](./examples/integrations/openai_agent_example.py) | Memory-enhanced OpenAI Agent with function calling and user preference tracking | Interactive assistant with memory search and user info storage |
|
|
479
|
+
| [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion |
|
|
447
480
|
|
|
448
481
|
## Interactive Demos
|
|
449
482
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<a href="https://gibsonai.
|
|
14
|
+
<a href="https://memori.gibsonai.com/docs">Learn more</a>
|
|
15
15
|
·
|
|
16
16
|
<a href="https://www.gibsonai.com/discord">Join Discord</a>
|
|
17
17
|
</p>
|
|
@@ -49,12 +49,12 @@ Install Memori:
|
|
|
49
49
|
pip install memorisdk
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
### Example with
|
|
52
|
+
### Example with OpenAI
|
|
53
53
|
|
|
54
|
-
1. Install
|
|
54
|
+
1. Install OpenAI:
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
pip install
|
|
57
|
+
pip install openai
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
2. Set OpenAI API Key:
|
|
@@ -67,14 +67,17 @@ export OPENAI_API_KEY="sk-your-openai-key-here"
|
|
|
67
67
|
|
|
68
68
|
```python
|
|
69
69
|
from memori import Memori
|
|
70
|
-
from
|
|
70
|
+
from openai import OpenAI
|
|
71
|
+
|
|
72
|
+
# Initialize OpenAI client
|
|
73
|
+
openai_client = OpenAI()
|
|
71
74
|
|
|
72
75
|
# Initialize memory
|
|
73
76
|
memori = Memori(conscious_ingest=True)
|
|
74
77
|
memori.enable()
|
|
75
78
|
|
|
76
79
|
print("=== First Conversation - Establishing Context ===")
|
|
77
|
-
response1 =
|
|
80
|
+
response1 = openai_client.chat.completions.create(
|
|
78
81
|
model="gpt-4o-mini",
|
|
79
82
|
messages=[{
|
|
80
83
|
"role": "user",
|
|
@@ -86,7 +89,7 @@ print("Assistant:", response1.choices[0].message.content)
|
|
|
86
89
|
print("\n" + "="*50)
|
|
87
90
|
print("=== Second Conversation - Memory Provides Context ===")
|
|
88
91
|
|
|
89
|
-
response2 =
|
|
92
|
+
response2 = openai_client.chat.completions.create(
|
|
90
93
|
model="gpt-4o-mini",
|
|
91
94
|
messages=[{
|
|
92
95
|
"role": "user",
|
|
@@ -272,15 +275,15 @@ Works with **ANY** LLM library:
|
|
|
272
275
|
```python
|
|
273
276
|
memori.enable() # Enable universal recording
|
|
274
277
|
|
|
275
|
-
# LiteLLM (recommended)
|
|
276
|
-
from litellm import completion
|
|
277
|
-
completion(model="gpt-4", messages=[...])
|
|
278
|
-
|
|
279
278
|
# OpenAI
|
|
280
|
-
import
|
|
281
|
-
client =
|
|
279
|
+
from openai import OpenAI
|
|
280
|
+
client = OpenAI()
|
|
282
281
|
client.chat.completions.create(...)
|
|
283
282
|
|
|
283
|
+
# LiteLLM
|
|
284
|
+
from litellm import completion
|
|
285
|
+
completion(model="gpt-4", messages=[...])
|
|
286
|
+
|
|
284
287
|
# Anthropic
|
|
285
288
|
import anthropic
|
|
286
289
|
client = anthropic.Anthropic()
|
|
@@ -360,18 +363,25 @@ memori/
|
|
|
360
363
|
- **[Memory Retrieval](./memory_retrival_example.py)** - Function calling with memory tools
|
|
361
364
|
- **[Advanced Config](./examples/advanced_config.py)** - Production configuration
|
|
362
365
|
- **[Interactive Demo](./memori_example.py)** - Live conscious ingestion showcase
|
|
366
|
+
- **[Simple Multi-User](./examples/multiple-users/simple_multiuser.py)** - Basic demonstration of user memory isolation with namespaces
|
|
367
|
+
- **[FastAPI Multi-User App](./examples/multiple-users/fastapi_multiuser_app.py)** - Full-featured REST API with Swagger UI for testing multi-user functionality
|
|
363
368
|
|
|
364
369
|
## Framework Integrations
|
|
365
370
|
|
|
366
371
|
Memori works seamlessly with popular AI frameworks:
|
|
367
372
|
|
|
368
|
-
| Framework | Description | Example |
|
|
369
|
-
|
|
370
|
-
|
|
|
371
|
-
|
|
|
372
|
-
|
|
|
373
|
-
|
|
|
374
|
-
|
|
|
373
|
+
| Framework | Description | Example |
|
|
374
|
+
|-----------|-------------|---------|
|
|
375
|
+
| [AgentOps](./examples/integrations/agentops_example.py) | Track and monitor Memori memory operations with comprehensive observability | Memory operation tracking with AgentOps analytics |
|
|
376
|
+
| [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search |
|
|
377
|
+
| [AWS Strands](./examples/integrations/aws_strands_example.py) | Professional development coach with Strands SDK and persistent memory | Career coaching agent with goal tracking |
|
|
378
|
+
| [Azure AI Foundry](./examples/integrations/azure_ai_foundry_example.py) | Azure AI Foundry agents with persistent memory across conversations | Enterprise AI agents with Azure integration |
|
|
379
|
+
| [CamelAI](./examples/integrations/camelai_example.py) | Multi-agent communication framework with automatic memory recording and retrieval | Memory-enhanced chat agents with conversation continuity |
|
|
380
|
+
| [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory |
|
|
381
|
+
| [Digital Ocean AI](./examples/integrations/digital_ocean_example.py) | Memory-enhanced customer support using Digital Ocean's AI platform | Customer support assistant with conversation history |
|
|
382
|
+
| [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory |
|
|
383
|
+
| [OpenAI Agent](./examples/integrations/openai_agent_example.py) | Memory-enhanced OpenAI Agent with function calling and user preference tracking | Interactive assistant with memory search and user info storage |
|
|
384
|
+
| [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion |
|
|
375
385
|
|
|
376
386
|
## Interactive Demos
|
|
377
387
|
|
|
@@ -5,13 +5,11 @@ Professional-grade memory layer with comprehensive error handling, configuration
|
|
|
5
5
|
management, and modular architecture for production AI systems.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
__version__ = "
|
|
8
|
+
__version__ = "2.0.1"
|
|
9
9
|
__author__ = "Harshal More"
|
|
10
10
|
__email__ = "harshalmore2468@gmail.com"
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
from .agents.memory_agent import MemoryAgent
|
|
14
|
-
from .agents.retrieval_agent import MemorySearchEngine
|
|
12
|
+
from typing import Any, Optional
|
|
15
13
|
|
|
16
14
|
# Configuration system
|
|
17
15
|
from .config import (
|
|
@@ -72,7 +70,22 @@ from .utils import ( # Pydantic models; Enhanced exceptions; Validators and hel
|
|
|
72
70
|
get_logger,
|
|
73
71
|
)
|
|
74
72
|
|
|
75
|
-
|
|
73
|
+
# Memory agents (dynamically imported to avoid import errors)
|
|
74
|
+
MemoryAgent: Optional[Any] = None
|
|
75
|
+
MemorySearchEngine: Optional[Any] = None
|
|
76
|
+
_AGENTS_AVAILABLE = False
|
|
77
|
+
|
|
78
|
+
try:
|
|
79
|
+
from .agents.memory_agent import MemoryAgent
|
|
80
|
+
from .agents.retrieval_agent import MemorySearchEngine
|
|
81
|
+
|
|
82
|
+
_AGENTS_AVAILABLE = True
|
|
83
|
+
except ImportError:
|
|
84
|
+
# Agents are not available, use placeholder None values
|
|
85
|
+
pass
|
|
86
|
+
|
|
87
|
+
# Build __all__ list dynamically based on available components
|
|
88
|
+
_all_components = [
|
|
76
89
|
# Core
|
|
77
90
|
"Memori",
|
|
78
91
|
"DatabaseManager",
|
|
@@ -82,9 +95,6 @@ __all__ = [
|
|
|
82
95
|
"AgentSettings",
|
|
83
96
|
"LoggingSettings",
|
|
84
97
|
"ConfigManager",
|
|
85
|
-
# Agents
|
|
86
|
-
"MemoryAgent",
|
|
87
|
-
"MemorySearchEngine",
|
|
88
98
|
# Database
|
|
89
99
|
"SQLiteConnector",
|
|
90
100
|
"PostgreSQLConnector",
|
|
@@ -138,3 +148,9 @@ __all__ = [
|
|
|
138
148
|
"LoggingManager",
|
|
139
149
|
"get_logger",
|
|
140
150
|
]
|
|
151
|
+
|
|
152
|
+
# Add agents only if available
|
|
153
|
+
if _AGENTS_AVAILABLE:
|
|
154
|
+
_all_components.extend(["MemoryAgent", "MemorySearchEngine"])
|
|
155
|
+
|
|
156
|
+
__all__ = _all_components
|