memorisdk 1.0.0__tar.gz → 1.0.2__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.0/memorisdk.egg-info → memorisdk-1.0.2}/PKG-INFO +121 -38
- {memorisdk-1.0.0 → memorisdk-1.0.2}/README.md +114 -31
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/core/memory.py +40 -5
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/integrations/__init__.py +1 -1
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/integrations/anthropic_integration.py +1 -1
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/integrations/litellm_integration.py +1 -1
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/integrations/openai_integration.py +1 -1
- {memorisdk-1.0.0 → memorisdk-1.0.2/memorisdk.egg-info}/PKG-INFO +121 -38
- memorisdk-1.0.2/memorisdk.egg-info/SOURCES.txt +47 -0
- memorisdk-1.0.2/memorisdk.egg-info/entry_points.txt +2 -0
- memorisdk-1.0.2/memorisdk.egg-info/top_level.txt +1 -0
- {memorisdk-1.0.0 → memorisdk-1.0.2}/pyproject.toml +13 -13
- memorisdk-1.0.0/memorisdk.egg-info/SOURCES.txt +0 -47
- memorisdk-1.0.0/memorisdk.egg-info/entry_points.txt +0 -2
- memorisdk-1.0.0/memorisdk.egg-info/top_level.txt +0 -1
- {memorisdk-1.0.0 → memorisdk-1.0.2}/LICENSE +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/agents/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/agents/conscious_agent.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/agents/memory_agent.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/agents/retrieval_agent.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/config/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/config/manager.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/config/settings.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/core/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/core/database.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/connectors/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/connectors/mysql_connector.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/connectors/postgres_connector.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/connectors/sqlite_connector.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/queries/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/queries/base_queries.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/queries/chat_queries.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/queries/entity_queries.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/queries/memory_queries.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/templates/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/templates/basic_template.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/templates/schemas/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/scripts/llm_text.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/tools/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/tools/memory_tool.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/__init__.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/exceptions.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/helpers.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/logging.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/pydantic_models.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/schemas.py +0 -0
- {memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/utils/validators.py +0 -0
- {memorisdk-1.0.0 → memorisdk-1.0.2}/memorisdk.egg-info/dependency_links.txt +0 -0
- {memorisdk-1.0.0 → memorisdk-1.0.2}/memorisdk.egg-info/requires.txt +0 -0
- {memorisdk-1.0.0 → memorisdk-1.0.2}/setup.cfg +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memorisdk
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: The Open-Source Memory Layer for AI Agents & Multi-Agent Systems
|
|
5
|
-
Author-email:
|
|
5
|
+
Author-email: GibsonAI Team <noc@gibsonai.com>
|
|
6
6
|
License: Apache-2.0
|
|
7
|
-
Project-URL: Homepage, https://github.com/GibsonAI/
|
|
8
|
-
Project-URL: Documentation, https://gibsonai.github.io/
|
|
9
|
-
Project-URL: Repository, https://github.com/GibsonAI/
|
|
10
|
-
Project-URL: Bug Tracker, https://github.com/GibsonAI/
|
|
11
|
-
Project-URL: Changelog, https://github.com/GibsonAI/
|
|
12
|
-
Project-URL: Contributing, https://github.com/GibsonAI/
|
|
7
|
+
Project-URL: Homepage, https://github.com/GibsonAI/memori
|
|
8
|
+
Project-URL: Documentation, https://gibsonai.github.io/memori
|
|
9
|
+
Project-URL: Repository, https://github.com/GibsonAI/memori.git
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/GibsonAI/memori/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/GibsonAI/memori/blob/main/CHANGELOG.md
|
|
12
|
+
Project-URL: Contributing, https://github.com/GibsonAI/memori/blob/main/CONTRIBUTING.md
|
|
13
13
|
Keywords: ai,memory,agents,llm,artificial-intelligence,multi-agent
|
|
14
14
|
Classifier: Development Status :: 3 - Alpha
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
@@ -70,15 +70,38 @@ Requires-Dist: litellm>=1.0.0; extra == "all"
|
|
|
70
70
|
Requires-Dist: anthropic>=0.3.0; extra == "all"
|
|
71
71
|
Dynamic: license-file
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
[](https://gibsonai.com/)
|
|
74
|
+
|
|
75
|
+
# memori
|
|
76
|
+
|
|
77
|
+
<p align="center">
|
|
78
|
+
<strong>Open-Source Memory Engine for LLMs, AI Agents & Multi-Agent Systems</strong>
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
<p align="center">
|
|
82
|
+
<i>Make LLMs context-aware with human-like memory, dual-mode retrieval, and automatic context injection.</i>
|
|
83
|
+
</p>
|
|
84
|
+
|
|
85
|
+
<p align="center">
|
|
86
|
+
<a href="https://gibsonai.github.io/memori/">Learn more</a>
|
|
87
|
+
·
|
|
88
|
+
<a href="https://www.gibsonai.com/discord">Join Discord</a>
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
<p align="center">
|
|
92
|
+
<a href="https://badge.fury.io/py/memorisdk">
|
|
93
|
+
<img src="https://badge.fury.io/py/memori.svg" alt="PyPI version">
|
|
94
|
+
</a>
|
|
95
|
+
<a href="https://pepy.tech/projects/memorisdk">
|
|
96
|
+
<img src="https://static.pepy.tech/badge/memorisdk" alt="Downloads">
|
|
97
|
+
</a>
|
|
98
|
+
<a href="https://opensource.org/licenses/MIT">
|
|
99
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT">
|
|
100
|
+
</a>
|
|
101
|
+
<a href="https://www.python.org/downloads/">
|
|
102
|
+
<img src="https://img.shields.io/badge/python-3.8+-blue.svg" alt="Python 3.8+">
|
|
103
|
+
</a>
|
|
104
|
+
</p>
|
|
82
105
|
|
|
83
106
|
---
|
|
84
107
|
|
|
@@ -92,32 +115,69 @@ Dynamic: license-file
|
|
|
92
115
|
|
|
93
116
|
## ⚡ Quick Start
|
|
94
117
|
|
|
118
|
+
Install Memori:
|
|
119
|
+
|
|
95
120
|
```bash
|
|
96
|
-
pip install
|
|
121
|
+
pip install memorisdk
|
|
97
122
|
```
|
|
98
123
|
|
|
99
|
-
|
|
100
|
-
from memoriai import Memori
|
|
124
|
+
### Example with LiteLLM
|
|
101
125
|
|
|
102
|
-
|
|
103
|
-
office_work = Memori(
|
|
104
|
-
database_connect="sqlite:///office_memory.db",
|
|
105
|
-
conscious_ingest=True, # Short-term working memory (one-shot context)
|
|
106
|
-
openai_api_key="your-key"
|
|
107
|
-
)
|
|
126
|
+
1. Install LiteLLM:
|
|
108
127
|
|
|
109
|
-
|
|
128
|
+
```bash
|
|
129
|
+
pip install litellm
|
|
130
|
+
```
|
|
110
131
|
|
|
111
|
-
|
|
132
|
+
2. Set OpenAI API Key:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
export OPENAI_API_KEY="sk-your-openai-key-here"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
3. Run this Python script:
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from memori import Memori
|
|
112
142
|
from litellm import completion
|
|
113
143
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
144
|
+
# Initialize memory
|
|
145
|
+
memori = Memori(conscious_ingest=True)
|
|
146
|
+
memori.enable()
|
|
147
|
+
|
|
148
|
+
print("=== First Conversation - Establishing Context ===")
|
|
149
|
+
response1 = completion(
|
|
150
|
+
model="gpt-4o-mini",
|
|
151
|
+
messages=[{
|
|
152
|
+
"role": "user",
|
|
153
|
+
"content": "I'm working on a Python FastAPI project"
|
|
154
|
+
}]
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
print("Assistant:", response1.choices[0].message.content)
|
|
158
|
+
print("\n" + "="*50)
|
|
159
|
+
print("=== Second Conversation - Memory Provides Context ===")
|
|
160
|
+
|
|
161
|
+
response2 = completion(
|
|
162
|
+
model="gpt-4o-mini",
|
|
163
|
+
messages=[{
|
|
164
|
+
"role": "user",
|
|
165
|
+
"content": "Help me add user authentication"
|
|
166
|
+
}]
|
|
117
167
|
)
|
|
118
|
-
|
|
168
|
+
print("Assistant:", response2.choices[0].message.content)
|
|
169
|
+
print("\n💡 Notice: Memori automatically knows about your FastAPI Python project!")
|
|
119
170
|
```
|
|
120
171
|
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
**🚀 Ready to explore more?**
|
|
175
|
+
- [📖 Examples](#examples) - Basic usage patterns and code samples
|
|
176
|
+
- [🔌 Framework Integrations](#framework-integrations) - LangChain, Agno & CrewAI examples
|
|
177
|
+
- [🎮 Interactive Demos](#interactive-demos) - Live applications & tutorials
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
121
181
|
## 🧠 How It Works
|
|
122
182
|
|
|
123
183
|
### 1. **Universal Recording**
|
|
@@ -222,7 +282,7 @@ memori = Memori(
|
|
|
222
282
|
|
|
223
283
|
### Simple Setup
|
|
224
284
|
```python
|
|
225
|
-
from
|
|
285
|
+
from memori import Memori
|
|
226
286
|
|
|
227
287
|
# Conscious mode - Short-term working memory
|
|
228
288
|
memori = Memori(
|
|
@@ -249,7 +309,7 @@ memori = Memori(
|
|
|
249
309
|
|
|
250
310
|
### Advanced Configuration
|
|
251
311
|
```python
|
|
252
|
-
from
|
|
312
|
+
from memori import Memori, ConfigManager
|
|
253
313
|
|
|
254
314
|
# Load from memori.json or environment
|
|
255
315
|
config = ConfigManager()
|
|
@@ -317,7 +377,7 @@ essential = memori.get_essential_conversations(limit=5)
|
|
|
317
377
|
|
|
318
378
|
### **Memory Retrieval Tools**
|
|
319
379
|
```python
|
|
320
|
-
from
|
|
380
|
+
from memori.tools import create_memory_tool
|
|
321
381
|
|
|
322
382
|
# Create memory search tool for your LLM
|
|
323
383
|
memory_tool = create_memory_tool(memori)
|
|
@@ -355,7 +415,7 @@ memory_relationships # Entity connections
|
|
|
355
415
|
## 📁 Project Structure
|
|
356
416
|
|
|
357
417
|
```
|
|
358
|
-
|
|
418
|
+
memori/
|
|
359
419
|
├── core/ # Main Memori class, database manager
|
|
360
420
|
├── agents/ # Memory processing with Pydantic
|
|
361
421
|
├── database/ # SQLite/PostgreSQL/MySQL support
|
|
@@ -365,7 +425,7 @@ memoriai/
|
|
|
365
425
|
└── tools/ # Memory search tools
|
|
366
426
|
```
|
|
367
427
|
|
|
368
|
-
##
|
|
428
|
+
## Examples
|
|
369
429
|
|
|
370
430
|
- **[Basic Usage](./examples/basic_usage.py)** - Simple memory setup with conscious ingestion
|
|
371
431
|
- **[Personal Assistant](./examples/personal_assistant.py)** - AI assistant with intelligent memory
|
|
@@ -373,9 +433,32 @@ memoriai/
|
|
|
373
433
|
- **[Advanced Config](./examples/advanced_config.py)** - Production configuration
|
|
374
434
|
- **[Interactive Demo](./memori_example.py)** - Live conscious ingestion showcase
|
|
375
435
|
|
|
436
|
+
## Framework Integrations
|
|
437
|
+
|
|
438
|
+
Memori works seamlessly with popular AI frameworks:
|
|
439
|
+
|
|
440
|
+
| Framework | Description | Example | Features |
|
|
441
|
+
|-----------|-------------|---------|----------|
|
|
442
|
+
| 🤖 [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search | Memory tools, conversation persistence, contextual responses |
|
|
443
|
+
| 👥 [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory | Agent coordination, shared memory, task-based workflows |
|
|
444
|
+
| 🌊 [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 | Context injection, session continuity, support analytics |
|
|
445
|
+
| 🔗 [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory | Custom tools, agent executors, memory persistence, error handling |
|
|
446
|
+
| 🚀 [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion | Agent memory persistence, multi-agent coordination, contextual awareness |
|
|
447
|
+
|
|
448
|
+
## Interactive Demos
|
|
449
|
+
|
|
450
|
+
Explore Memori's capabilities through these interactive demonstrations:
|
|
451
|
+
|
|
452
|
+
| Title | Description | Tools Used | Live Demo |
|
|
453
|
+
|------------|-------------|------------|-----------|
|
|
454
|
+
| 🌟 [Personal Diary Assistant](./demos/personal_diary_assistant/) | A comprehensive diary assistant with mood tracking, pattern analysis, and personalized recommendations. | Streamlit, LiteLLM, OpenAI, SQLite | [Run Demo](https://personal-diary-assistant.streamlit.app/) |
|
|
455
|
+
| 🌍 [Travel Planner Agent](./demos/travel_planner/) | Intelligent travel planning with CrewAI agents, real-time web search, and memory-based personalization. Plans complete itineraries with budget analysis. | CrewAI, Streamlit, OpenAI, SQLite | |
|
|
456
|
+
| 🧑🔬 [Researcher Agent](./demos/researcher_agent/) | Advanced AI research assistant with persistent memory, real-time web search, and comprehensive report generation. Builds upon previous research sessions. | Agno, Streamlit, OpenAI, ExaAI, SQLite | [Run Demo](https://researcher-agent-memori.streamlit.app/) |
|
|
457
|
+
|
|
376
458
|
## 🤝 Contributing
|
|
377
459
|
|
|
378
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
460
|
+
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
461
|
+
- Community: [Discord](https://www.gibsonai.com/discord)
|
|
379
462
|
|
|
380
463
|
## 📄 License
|
|
381
464
|
|
|
@@ -1,12 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
[](https://gibsonai.com/)
|
|
2
|
+
|
|
3
|
+
# memori
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Open-Source Memory Engine for LLMs, AI Agents & Multi-Agent Systems</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<i>Make LLMs context-aware with human-like memory, dual-mode retrieval, and automatic context injection.</i>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://gibsonai.github.io/memori/">Learn more</a>
|
|
15
|
+
·
|
|
16
|
+
<a href="https://www.gibsonai.com/discord">Join Discord</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="https://badge.fury.io/py/memorisdk">
|
|
21
|
+
<img src="https://badge.fury.io/py/memori.svg" alt="PyPI version">
|
|
22
|
+
</a>
|
|
23
|
+
<a href="https://pepy.tech/projects/memorisdk">
|
|
24
|
+
<img src="https://static.pepy.tech/badge/memorisdk" alt="Downloads">
|
|
25
|
+
</a>
|
|
26
|
+
<a href="https://opensource.org/licenses/MIT">
|
|
27
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT">
|
|
28
|
+
</a>
|
|
29
|
+
<a href="https://www.python.org/downloads/">
|
|
30
|
+
<img src="https://img.shields.io/badge/python-3.8+-blue.svg" alt="Python 3.8+">
|
|
31
|
+
</a>
|
|
32
|
+
</p>
|
|
10
33
|
|
|
11
34
|
---
|
|
12
35
|
|
|
@@ -20,32 +43,69 @@
|
|
|
20
43
|
|
|
21
44
|
## ⚡ Quick Start
|
|
22
45
|
|
|
46
|
+
Install Memori:
|
|
47
|
+
|
|
23
48
|
```bash
|
|
24
|
-
pip install
|
|
49
|
+
pip install memorisdk
|
|
25
50
|
```
|
|
26
51
|
|
|
27
|
-
|
|
28
|
-
from memoriai import Memori
|
|
52
|
+
### Example with LiteLLM
|
|
29
53
|
|
|
30
|
-
|
|
31
|
-
office_work = Memori(
|
|
32
|
-
database_connect="sqlite:///office_memory.db",
|
|
33
|
-
conscious_ingest=True, # Short-term working memory (one-shot context)
|
|
34
|
-
openai_api_key="your-key"
|
|
35
|
-
)
|
|
54
|
+
1. Install LiteLLM:
|
|
36
55
|
|
|
37
|
-
|
|
56
|
+
```bash
|
|
57
|
+
pip install litellm
|
|
58
|
+
```
|
|
38
59
|
|
|
39
|
-
|
|
60
|
+
2. Set OpenAI API Key:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
export OPENAI_API_KEY="sk-your-openai-key-here"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
3. Run this Python script:
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from memori import Memori
|
|
40
70
|
from litellm import completion
|
|
41
71
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
72
|
+
# Initialize memory
|
|
73
|
+
memori = Memori(conscious_ingest=True)
|
|
74
|
+
memori.enable()
|
|
75
|
+
|
|
76
|
+
print("=== First Conversation - Establishing Context ===")
|
|
77
|
+
response1 = completion(
|
|
78
|
+
model="gpt-4o-mini",
|
|
79
|
+
messages=[{
|
|
80
|
+
"role": "user",
|
|
81
|
+
"content": "I'm working on a Python FastAPI project"
|
|
82
|
+
}]
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
print("Assistant:", response1.choices[0].message.content)
|
|
86
|
+
print("\n" + "="*50)
|
|
87
|
+
print("=== Second Conversation - Memory Provides Context ===")
|
|
88
|
+
|
|
89
|
+
response2 = completion(
|
|
90
|
+
model="gpt-4o-mini",
|
|
91
|
+
messages=[{
|
|
92
|
+
"role": "user",
|
|
93
|
+
"content": "Help me add user authentication"
|
|
94
|
+
}]
|
|
45
95
|
)
|
|
46
|
-
|
|
96
|
+
print("Assistant:", response2.choices[0].message.content)
|
|
97
|
+
print("\n💡 Notice: Memori automatically knows about your FastAPI Python project!")
|
|
47
98
|
```
|
|
48
99
|
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
**🚀 Ready to explore more?**
|
|
103
|
+
- [📖 Examples](#examples) - Basic usage patterns and code samples
|
|
104
|
+
- [🔌 Framework Integrations](#framework-integrations) - LangChain, Agno & CrewAI examples
|
|
105
|
+
- [🎮 Interactive Demos](#interactive-demos) - Live applications & tutorials
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
49
109
|
## 🧠 How It Works
|
|
50
110
|
|
|
51
111
|
### 1. **Universal Recording**
|
|
@@ -150,7 +210,7 @@ memori = Memori(
|
|
|
150
210
|
|
|
151
211
|
### Simple Setup
|
|
152
212
|
```python
|
|
153
|
-
from
|
|
213
|
+
from memori import Memori
|
|
154
214
|
|
|
155
215
|
# Conscious mode - Short-term working memory
|
|
156
216
|
memori = Memori(
|
|
@@ -177,7 +237,7 @@ memori = Memori(
|
|
|
177
237
|
|
|
178
238
|
### Advanced Configuration
|
|
179
239
|
```python
|
|
180
|
-
from
|
|
240
|
+
from memori import Memori, ConfigManager
|
|
181
241
|
|
|
182
242
|
# Load from memori.json or environment
|
|
183
243
|
config = ConfigManager()
|
|
@@ -245,7 +305,7 @@ essential = memori.get_essential_conversations(limit=5)
|
|
|
245
305
|
|
|
246
306
|
### **Memory Retrieval Tools**
|
|
247
307
|
```python
|
|
248
|
-
from
|
|
308
|
+
from memori.tools import create_memory_tool
|
|
249
309
|
|
|
250
310
|
# Create memory search tool for your LLM
|
|
251
311
|
memory_tool = create_memory_tool(memori)
|
|
@@ -283,7 +343,7 @@ memory_relationships # Entity connections
|
|
|
283
343
|
## 📁 Project Structure
|
|
284
344
|
|
|
285
345
|
```
|
|
286
|
-
|
|
346
|
+
memori/
|
|
287
347
|
├── core/ # Main Memori class, database manager
|
|
288
348
|
├── agents/ # Memory processing with Pydantic
|
|
289
349
|
├── database/ # SQLite/PostgreSQL/MySQL support
|
|
@@ -293,7 +353,7 @@ memoriai/
|
|
|
293
353
|
└── tools/ # Memory search tools
|
|
294
354
|
```
|
|
295
355
|
|
|
296
|
-
##
|
|
356
|
+
## Examples
|
|
297
357
|
|
|
298
358
|
- **[Basic Usage](./examples/basic_usage.py)** - Simple memory setup with conscious ingestion
|
|
299
359
|
- **[Personal Assistant](./examples/personal_assistant.py)** - AI assistant with intelligent memory
|
|
@@ -301,9 +361,32 @@ memoriai/
|
|
|
301
361
|
- **[Advanced Config](./examples/advanced_config.py)** - Production configuration
|
|
302
362
|
- **[Interactive Demo](./memori_example.py)** - Live conscious ingestion showcase
|
|
303
363
|
|
|
364
|
+
## Framework Integrations
|
|
365
|
+
|
|
366
|
+
Memori works seamlessly with popular AI frameworks:
|
|
367
|
+
|
|
368
|
+
| Framework | Description | Example | Features |
|
|
369
|
+
|-----------|-------------|---------|----------|
|
|
370
|
+
| 🤖 [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search | Memory tools, conversation persistence, contextual responses |
|
|
371
|
+
| 👥 [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory | Agent coordination, shared memory, task-based workflows |
|
|
372
|
+
| 🌊 [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 | Context injection, session continuity, support analytics |
|
|
373
|
+
| 🔗 [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory | Custom tools, agent executors, memory persistence, error handling |
|
|
374
|
+
| 🚀 [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion | Agent memory persistence, multi-agent coordination, contextual awareness |
|
|
375
|
+
|
|
376
|
+
## Interactive Demos
|
|
377
|
+
|
|
378
|
+
Explore Memori's capabilities through these interactive demonstrations:
|
|
379
|
+
|
|
380
|
+
| Title | Description | Tools Used | Live Demo |
|
|
381
|
+
|------------|-------------|------------|-----------|
|
|
382
|
+
| 🌟 [Personal Diary Assistant](./demos/personal_diary_assistant/) | A comprehensive diary assistant with mood tracking, pattern analysis, and personalized recommendations. | Streamlit, LiteLLM, OpenAI, SQLite | [Run Demo](https://personal-diary-assistant.streamlit.app/) |
|
|
383
|
+
| 🌍 [Travel Planner Agent](./demos/travel_planner/) | Intelligent travel planning with CrewAI agents, real-time web search, and memory-based personalization. Plans complete itineraries with budget analysis. | CrewAI, Streamlit, OpenAI, SQLite | |
|
|
384
|
+
| 🧑🔬 [Researcher Agent](./demos/researcher_agent/) | Advanced AI research assistant with persistent memory, real-time web search, and comprehensive report generation. Builds upon previous research sessions. | Agno, Streamlit, OpenAI, ExaAI, SQLite | [Run Demo](https://researcher-agent-memori.streamlit.app/) |
|
|
385
|
+
|
|
304
386
|
## 🤝 Contributing
|
|
305
387
|
|
|
306
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
388
|
+
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
389
|
+
- Community: [Discord](https://www.gibsonai.com/discord)
|
|
307
390
|
|
|
308
391
|
## 📄 License
|
|
309
392
|
|
|
@@ -311,4 +394,4 @@ MIT License - see [LICENSE](./LICENSE) for details.
|
|
|
311
394
|
|
|
312
395
|
---
|
|
313
396
|
|
|
314
|
-
*Made for developers who want their AI agents to remember and learn*
|
|
397
|
+
*Made for developers who want their AI agents to remember and learn*
|
|
@@ -89,6 +89,7 @@ class Memori:
|
|
|
89
89
|
self.search_engine = None
|
|
90
90
|
self.conscious_agent = None
|
|
91
91
|
self._background_task = None
|
|
92
|
+
self._conscious_init_pending = False
|
|
92
93
|
|
|
93
94
|
if conscious_ingest or auto_ingest:
|
|
94
95
|
try:
|
|
@@ -168,16 +169,44 @@ class Memori:
|
|
|
168
169
|
"Conscious-ingest: Starting conscious agent analysis at startup"
|
|
169
170
|
)
|
|
170
171
|
|
|
171
|
-
#
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
# Check if there's a running event loop
|
|
173
|
+
try:
|
|
174
|
+
loop = asyncio.get_running_loop()
|
|
175
|
+
# If we're in an event loop, create the task
|
|
176
|
+
if self._background_task is None or self._background_task.done():
|
|
177
|
+
self._background_task = loop.create_task(
|
|
178
|
+
self._run_conscious_initialization()
|
|
179
|
+
)
|
|
180
|
+
logger.debug(
|
|
181
|
+
"Conscious-ingest: Background initialization task started"
|
|
182
|
+
)
|
|
183
|
+
except RuntimeError:
|
|
184
|
+
# No event loop running, defer initialization until first async call
|
|
185
|
+
logger.debug(
|
|
186
|
+
"Conscious-ingest: No event loop available, deferring initialization"
|
|
175
187
|
)
|
|
176
|
-
|
|
188
|
+
self._conscious_init_pending = True
|
|
177
189
|
|
|
178
190
|
except Exception as e:
|
|
179
191
|
logger.error(f"Failed to initialize conscious memory: {e}")
|
|
180
192
|
|
|
193
|
+
def _check_deferred_initialization(self):
|
|
194
|
+
"""Check and handle deferred conscious memory initialization"""
|
|
195
|
+
if self._conscious_init_pending and self.conscious_agent:
|
|
196
|
+
try:
|
|
197
|
+
loop = asyncio.get_running_loop()
|
|
198
|
+
if self._background_task is None or self._background_task.done():
|
|
199
|
+
self._background_task = loop.create_task(
|
|
200
|
+
self._run_conscious_initialization()
|
|
201
|
+
)
|
|
202
|
+
logger.debug(
|
|
203
|
+
"Conscious-ingest: Deferred initialization task started"
|
|
204
|
+
)
|
|
205
|
+
self._conscious_init_pending = False
|
|
206
|
+
except RuntimeError:
|
|
207
|
+
# Still no event loop, keep pending
|
|
208
|
+
pass
|
|
209
|
+
|
|
181
210
|
async def _run_conscious_initialization(self):
|
|
182
211
|
"""Run conscious agent initialization in background"""
|
|
183
212
|
try:
|
|
@@ -475,6 +504,8 @@ class Memori:
|
|
|
475
504
|
def _inject_openai_context(self, kwargs):
|
|
476
505
|
"""Inject context for OpenAI calls"""
|
|
477
506
|
try:
|
|
507
|
+
# Check for deferred conscious initialization
|
|
508
|
+
self._check_deferred_initialization()
|
|
478
509
|
# Extract user input from messages
|
|
479
510
|
user_input = ""
|
|
480
511
|
for msg in reversed(kwargs.get("messages", [])):
|
|
@@ -513,6 +544,8 @@ class Memori:
|
|
|
513
544
|
def _inject_anthropic_context(self, kwargs):
|
|
514
545
|
"""Inject context for Anthropic calls"""
|
|
515
546
|
try:
|
|
547
|
+
# Check for deferred conscious initialization
|
|
548
|
+
self._check_deferred_initialization()
|
|
516
549
|
# Extract user input from messages
|
|
517
550
|
user_input = ""
|
|
518
551
|
for msg in reversed(kwargs.get("messages", [])):
|
|
@@ -563,6 +596,8 @@ class Memori:
|
|
|
563
596
|
mode: "conscious" (one-shot short-term) or "auto" (continuous retrieval)
|
|
564
597
|
"""
|
|
565
598
|
try:
|
|
599
|
+
# Check for deferred conscious initialization
|
|
600
|
+
self._check_deferred_initialization()
|
|
566
601
|
# Extract user input from messages
|
|
567
602
|
user_input = ""
|
|
568
603
|
messages = params.get("messages", [])
|
|
@@ -5,7 +5,7 @@ RECOMMENDED: Use LiteLLM instead for unified API and native callback support.
|
|
|
5
5
|
This integration is provided for direct Anthropic SDK usage.
|
|
6
6
|
|
|
7
7
|
Usage:
|
|
8
|
-
from
|
|
8
|
+
from memori.integrations.anthropic_integration import MemoriAnthropic
|
|
9
9
|
|
|
10
10
|
# Initialize with your memori instance
|
|
11
11
|
client = MemoriAnthropic(memori_instance, api_key="your-key")
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
LiteLLM Integration - DEPRECATED
|
|
3
3
|
|
|
4
4
|
This integration is deprecated. LiteLLM now uses native callbacks
|
|
5
|
-
implemented directly in
|
|
5
|
+
implemented directly in memori/core/memory.py
|
|
6
6
|
|
|
7
7
|
The native callback system is more robust and uses LiteLLM's official
|
|
8
8
|
extension mechanism instead of monkey-patching.
|
|
@@ -5,7 +5,7 @@ RECOMMENDED: Use LiteLLM instead for unified API and native callback support.
|
|
|
5
5
|
This integration is provided for direct OpenAI SDK usage.
|
|
6
6
|
|
|
7
7
|
Usage:
|
|
8
|
-
from
|
|
8
|
+
from memori.integrations.openai_integration import MemoriOpenAI
|
|
9
9
|
|
|
10
10
|
# Initialize with your memori instance
|
|
11
11
|
client = MemoriOpenAI(memori_instance, api_key="your-key")
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memorisdk
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: The Open-Source Memory Layer for AI Agents & Multi-Agent Systems
|
|
5
|
-
Author-email:
|
|
5
|
+
Author-email: GibsonAI Team <noc@gibsonai.com>
|
|
6
6
|
License: Apache-2.0
|
|
7
|
-
Project-URL: Homepage, https://github.com/GibsonAI/
|
|
8
|
-
Project-URL: Documentation, https://gibsonai.github.io/
|
|
9
|
-
Project-URL: Repository, https://github.com/GibsonAI/
|
|
10
|
-
Project-URL: Bug Tracker, https://github.com/GibsonAI/
|
|
11
|
-
Project-URL: Changelog, https://github.com/GibsonAI/
|
|
12
|
-
Project-URL: Contributing, https://github.com/GibsonAI/
|
|
7
|
+
Project-URL: Homepage, https://github.com/GibsonAI/memori
|
|
8
|
+
Project-URL: Documentation, https://gibsonai.github.io/memori
|
|
9
|
+
Project-URL: Repository, https://github.com/GibsonAI/memori.git
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/GibsonAI/memori/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/GibsonAI/memori/blob/main/CHANGELOG.md
|
|
12
|
+
Project-URL: Contributing, https://github.com/GibsonAI/memori/blob/main/CONTRIBUTING.md
|
|
13
13
|
Keywords: ai,memory,agents,llm,artificial-intelligence,multi-agent
|
|
14
14
|
Classifier: Development Status :: 3 - Alpha
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
@@ -70,15 +70,38 @@ Requires-Dist: litellm>=1.0.0; extra == "all"
|
|
|
70
70
|
Requires-Dist: anthropic>=0.3.0; extra == "all"
|
|
71
71
|
Dynamic: license-file
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
[](https://gibsonai.com/)
|
|
74
|
+
|
|
75
|
+
# memori
|
|
76
|
+
|
|
77
|
+
<p align="center">
|
|
78
|
+
<strong>Open-Source Memory Engine for LLMs, AI Agents & Multi-Agent Systems</strong>
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
<p align="center">
|
|
82
|
+
<i>Make LLMs context-aware with human-like memory, dual-mode retrieval, and automatic context injection.</i>
|
|
83
|
+
</p>
|
|
84
|
+
|
|
85
|
+
<p align="center">
|
|
86
|
+
<a href="https://gibsonai.github.io/memori/">Learn more</a>
|
|
87
|
+
·
|
|
88
|
+
<a href="https://www.gibsonai.com/discord">Join Discord</a>
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
<p align="center">
|
|
92
|
+
<a href="https://badge.fury.io/py/memorisdk">
|
|
93
|
+
<img src="https://badge.fury.io/py/memori.svg" alt="PyPI version">
|
|
94
|
+
</a>
|
|
95
|
+
<a href="https://pepy.tech/projects/memorisdk">
|
|
96
|
+
<img src="https://static.pepy.tech/badge/memorisdk" alt="Downloads">
|
|
97
|
+
</a>
|
|
98
|
+
<a href="https://opensource.org/licenses/MIT">
|
|
99
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT">
|
|
100
|
+
</a>
|
|
101
|
+
<a href="https://www.python.org/downloads/">
|
|
102
|
+
<img src="https://img.shields.io/badge/python-3.8+-blue.svg" alt="Python 3.8+">
|
|
103
|
+
</a>
|
|
104
|
+
</p>
|
|
82
105
|
|
|
83
106
|
---
|
|
84
107
|
|
|
@@ -92,32 +115,69 @@ Dynamic: license-file
|
|
|
92
115
|
|
|
93
116
|
## ⚡ Quick Start
|
|
94
117
|
|
|
118
|
+
Install Memori:
|
|
119
|
+
|
|
95
120
|
```bash
|
|
96
|
-
pip install
|
|
121
|
+
pip install memorisdk
|
|
97
122
|
```
|
|
98
123
|
|
|
99
|
-
|
|
100
|
-
from memoriai import Memori
|
|
124
|
+
### Example with LiteLLM
|
|
101
125
|
|
|
102
|
-
|
|
103
|
-
office_work = Memori(
|
|
104
|
-
database_connect="sqlite:///office_memory.db",
|
|
105
|
-
conscious_ingest=True, # Short-term working memory (one-shot context)
|
|
106
|
-
openai_api_key="your-key"
|
|
107
|
-
)
|
|
126
|
+
1. Install LiteLLM:
|
|
108
127
|
|
|
109
|
-
|
|
128
|
+
```bash
|
|
129
|
+
pip install litellm
|
|
130
|
+
```
|
|
110
131
|
|
|
111
|
-
|
|
132
|
+
2. Set OpenAI API Key:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
export OPENAI_API_KEY="sk-your-openai-key-here"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
3. Run this Python script:
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from memori import Memori
|
|
112
142
|
from litellm import completion
|
|
113
143
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
144
|
+
# Initialize memory
|
|
145
|
+
memori = Memori(conscious_ingest=True)
|
|
146
|
+
memori.enable()
|
|
147
|
+
|
|
148
|
+
print("=== First Conversation - Establishing Context ===")
|
|
149
|
+
response1 = completion(
|
|
150
|
+
model="gpt-4o-mini",
|
|
151
|
+
messages=[{
|
|
152
|
+
"role": "user",
|
|
153
|
+
"content": "I'm working on a Python FastAPI project"
|
|
154
|
+
}]
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
print("Assistant:", response1.choices[0].message.content)
|
|
158
|
+
print("\n" + "="*50)
|
|
159
|
+
print("=== Second Conversation - Memory Provides Context ===")
|
|
160
|
+
|
|
161
|
+
response2 = completion(
|
|
162
|
+
model="gpt-4o-mini",
|
|
163
|
+
messages=[{
|
|
164
|
+
"role": "user",
|
|
165
|
+
"content": "Help me add user authentication"
|
|
166
|
+
}]
|
|
117
167
|
)
|
|
118
|
-
|
|
168
|
+
print("Assistant:", response2.choices[0].message.content)
|
|
169
|
+
print("\n💡 Notice: Memori automatically knows about your FastAPI Python project!")
|
|
119
170
|
```
|
|
120
171
|
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
**🚀 Ready to explore more?**
|
|
175
|
+
- [📖 Examples](#examples) - Basic usage patterns and code samples
|
|
176
|
+
- [🔌 Framework Integrations](#framework-integrations) - LangChain, Agno & CrewAI examples
|
|
177
|
+
- [🎮 Interactive Demos](#interactive-demos) - Live applications & tutorials
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
121
181
|
## 🧠 How It Works
|
|
122
182
|
|
|
123
183
|
### 1. **Universal Recording**
|
|
@@ -222,7 +282,7 @@ memori = Memori(
|
|
|
222
282
|
|
|
223
283
|
### Simple Setup
|
|
224
284
|
```python
|
|
225
|
-
from
|
|
285
|
+
from memori import Memori
|
|
226
286
|
|
|
227
287
|
# Conscious mode - Short-term working memory
|
|
228
288
|
memori = Memori(
|
|
@@ -249,7 +309,7 @@ memori = Memori(
|
|
|
249
309
|
|
|
250
310
|
### Advanced Configuration
|
|
251
311
|
```python
|
|
252
|
-
from
|
|
312
|
+
from memori import Memori, ConfigManager
|
|
253
313
|
|
|
254
314
|
# Load from memori.json or environment
|
|
255
315
|
config = ConfigManager()
|
|
@@ -317,7 +377,7 @@ essential = memori.get_essential_conversations(limit=5)
|
|
|
317
377
|
|
|
318
378
|
### **Memory Retrieval Tools**
|
|
319
379
|
```python
|
|
320
|
-
from
|
|
380
|
+
from memori.tools import create_memory_tool
|
|
321
381
|
|
|
322
382
|
# Create memory search tool for your LLM
|
|
323
383
|
memory_tool = create_memory_tool(memori)
|
|
@@ -355,7 +415,7 @@ memory_relationships # Entity connections
|
|
|
355
415
|
## 📁 Project Structure
|
|
356
416
|
|
|
357
417
|
```
|
|
358
|
-
|
|
418
|
+
memori/
|
|
359
419
|
├── core/ # Main Memori class, database manager
|
|
360
420
|
├── agents/ # Memory processing with Pydantic
|
|
361
421
|
├── database/ # SQLite/PostgreSQL/MySQL support
|
|
@@ -365,7 +425,7 @@ memoriai/
|
|
|
365
425
|
└── tools/ # Memory search tools
|
|
366
426
|
```
|
|
367
427
|
|
|
368
|
-
##
|
|
428
|
+
## Examples
|
|
369
429
|
|
|
370
430
|
- **[Basic Usage](./examples/basic_usage.py)** - Simple memory setup with conscious ingestion
|
|
371
431
|
- **[Personal Assistant](./examples/personal_assistant.py)** - AI assistant with intelligent memory
|
|
@@ -373,9 +433,32 @@ memoriai/
|
|
|
373
433
|
- **[Advanced Config](./examples/advanced_config.py)** - Production configuration
|
|
374
434
|
- **[Interactive Demo](./memori_example.py)** - Live conscious ingestion showcase
|
|
375
435
|
|
|
436
|
+
## Framework Integrations
|
|
437
|
+
|
|
438
|
+
Memori works seamlessly with popular AI frameworks:
|
|
439
|
+
|
|
440
|
+
| Framework | Description | Example | Features |
|
|
441
|
+
|-----------|-------------|---------|----------|
|
|
442
|
+
| 🤖 [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search | Memory tools, conversation persistence, contextual responses |
|
|
443
|
+
| 👥 [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory | Agent coordination, shared memory, task-based workflows |
|
|
444
|
+
| 🌊 [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 | Context injection, session continuity, support analytics |
|
|
445
|
+
| 🔗 [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory | Custom tools, agent executors, memory persistence, error handling |
|
|
446
|
+
| 🚀 [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion | Agent memory persistence, multi-agent coordination, contextual awareness |
|
|
447
|
+
|
|
448
|
+
## Interactive Demos
|
|
449
|
+
|
|
450
|
+
Explore Memori's capabilities through these interactive demonstrations:
|
|
451
|
+
|
|
452
|
+
| Title | Description | Tools Used | Live Demo |
|
|
453
|
+
|------------|-------------|------------|-----------|
|
|
454
|
+
| 🌟 [Personal Diary Assistant](./demos/personal_diary_assistant/) | A comprehensive diary assistant with mood tracking, pattern analysis, and personalized recommendations. | Streamlit, LiteLLM, OpenAI, SQLite | [Run Demo](https://personal-diary-assistant.streamlit.app/) |
|
|
455
|
+
| 🌍 [Travel Planner Agent](./demos/travel_planner/) | Intelligent travel planning with CrewAI agents, real-time web search, and memory-based personalization. Plans complete itineraries with budget analysis. | CrewAI, Streamlit, OpenAI, SQLite | |
|
|
456
|
+
| 🧑🔬 [Researcher Agent](./demos/researcher_agent/) | Advanced AI research assistant with persistent memory, real-time web search, and comprehensive report generation. Builds upon previous research sessions. | Agno, Streamlit, OpenAI, ExaAI, SQLite | [Run Demo](https://researcher-agent-memori.streamlit.app/) |
|
|
457
|
+
|
|
376
458
|
## 🤝 Contributing
|
|
377
459
|
|
|
378
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
460
|
+
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
|
|
461
|
+
- Community: [Discord](https://www.gibsonai.com/discord)
|
|
379
462
|
|
|
380
463
|
## 📄 License
|
|
381
464
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
memori/__init__.py
|
|
5
|
+
memori/agents/__init__.py
|
|
6
|
+
memori/agents/conscious_agent.py
|
|
7
|
+
memori/agents/memory_agent.py
|
|
8
|
+
memori/agents/retrieval_agent.py
|
|
9
|
+
memori/config/__init__.py
|
|
10
|
+
memori/config/manager.py
|
|
11
|
+
memori/config/settings.py
|
|
12
|
+
memori/core/__init__.py
|
|
13
|
+
memori/core/database.py
|
|
14
|
+
memori/core/memory.py
|
|
15
|
+
memori/database/__init__.py
|
|
16
|
+
memori/database/connectors/__init__.py
|
|
17
|
+
memori/database/connectors/mysql_connector.py
|
|
18
|
+
memori/database/connectors/postgres_connector.py
|
|
19
|
+
memori/database/connectors/sqlite_connector.py
|
|
20
|
+
memori/database/queries/__init__.py
|
|
21
|
+
memori/database/queries/base_queries.py
|
|
22
|
+
memori/database/queries/chat_queries.py
|
|
23
|
+
memori/database/queries/entity_queries.py
|
|
24
|
+
memori/database/queries/memory_queries.py
|
|
25
|
+
memori/database/templates/__init__.py
|
|
26
|
+
memori/database/templates/basic_template.py
|
|
27
|
+
memori/database/templates/schemas/__init__.py
|
|
28
|
+
memori/integrations/__init__.py
|
|
29
|
+
memori/integrations/anthropic_integration.py
|
|
30
|
+
memori/integrations/litellm_integration.py
|
|
31
|
+
memori/integrations/openai_integration.py
|
|
32
|
+
memori/scripts/llm_text.py
|
|
33
|
+
memori/tools/__init__.py
|
|
34
|
+
memori/tools/memory_tool.py
|
|
35
|
+
memori/utils/__init__.py
|
|
36
|
+
memori/utils/exceptions.py
|
|
37
|
+
memori/utils/helpers.py
|
|
38
|
+
memori/utils/logging.py
|
|
39
|
+
memori/utils/pydantic_models.py
|
|
40
|
+
memori/utils/schemas.py
|
|
41
|
+
memori/utils/validators.py
|
|
42
|
+
memorisdk.egg-info/PKG-INFO
|
|
43
|
+
memorisdk.egg-info/SOURCES.txt
|
|
44
|
+
memorisdk.egg-info/dependency_links.txt
|
|
45
|
+
memorisdk.egg-info/entry_points.txt
|
|
46
|
+
memorisdk.egg-info/requires.txt
|
|
47
|
+
memorisdk.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
memori
|
|
@@ -4,9 +4,9 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "memorisdk"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.2"
|
|
8
8
|
description = "The Open-Source Memory Layer for AI Agents & Multi-Agent Systems"
|
|
9
|
-
authors = [{name = "
|
|
9
|
+
authors = [{name = "GibsonAI Team", email = "noc@gibsonai.com"}]
|
|
10
10
|
license = {text = "Apache-2.0"}
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
requires-python = ">=3.8"
|
|
@@ -76,22 +76,22 @@ all = [
|
|
|
76
76
|
]
|
|
77
77
|
|
|
78
78
|
[project.urls]
|
|
79
|
-
Homepage = "https://github.com/GibsonAI/
|
|
80
|
-
Documentation = "https://gibsonai.github.io/
|
|
81
|
-
Repository = "https://github.com/GibsonAI/
|
|
82
|
-
"Bug Tracker" = "https://github.com/GibsonAI/
|
|
83
|
-
"Changelog" = "https://github.com/GibsonAI/
|
|
84
|
-
"Contributing" = "https://github.com/GibsonAI/
|
|
79
|
+
Homepage = "https://github.com/GibsonAI/memori"
|
|
80
|
+
Documentation = "https://gibsonai.github.io/memori"
|
|
81
|
+
Repository = "https://github.com/GibsonAI/memori.git"
|
|
82
|
+
"Bug Tracker" = "https://github.com/GibsonAI/memori/issues"
|
|
83
|
+
"Changelog" = "https://github.com/GibsonAI/memori/blob/main/CHANGELOG.md"
|
|
84
|
+
"Contributing" = "https://github.com/GibsonAI/memori/blob/main/CONTRIBUTING.md"
|
|
85
85
|
|
|
86
86
|
[project.scripts]
|
|
87
|
-
memori = "
|
|
87
|
+
memori = "memori.cli:main"
|
|
88
88
|
|
|
89
89
|
[tool.setuptools.packages.find]
|
|
90
|
-
include = ["
|
|
90
|
+
include = ["memori*"]
|
|
91
91
|
exclude = ["tests*", "docs*", "examples*", "scripts*", "archive*"]
|
|
92
92
|
|
|
93
93
|
[tool.setuptools.package-data]
|
|
94
|
-
|
|
94
|
+
memori = ["py.typed", "*.json", "*.sql"]
|
|
95
95
|
|
|
96
96
|
[tool.black]
|
|
97
97
|
line-length = 88
|
|
@@ -151,7 +151,7 @@ include_trailing_comma = true
|
|
|
151
151
|
force_grid_wrap = 0
|
|
152
152
|
use_parentheses = true
|
|
153
153
|
ensure_newline_before_comments = true
|
|
154
|
-
src_paths = ["
|
|
154
|
+
src_paths = ["memori", "tests"]
|
|
155
155
|
|
|
156
156
|
[tool.mypy]
|
|
157
157
|
python_version = "3.9"
|
|
@@ -200,7 +200,7 @@ filterwarnings = [
|
|
|
200
200
|
]
|
|
201
201
|
|
|
202
202
|
[tool.coverage.run]
|
|
203
|
-
source = ["
|
|
203
|
+
source = ["memori"]
|
|
204
204
|
omit = [
|
|
205
205
|
"*/tests/*",
|
|
206
206
|
"*/test_*",
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
LICENSE
|
|
2
|
-
README.md
|
|
3
|
-
pyproject.toml
|
|
4
|
-
memoriai/__init__.py
|
|
5
|
-
memoriai/agents/__init__.py
|
|
6
|
-
memoriai/agents/conscious_agent.py
|
|
7
|
-
memoriai/agents/memory_agent.py
|
|
8
|
-
memoriai/agents/retrieval_agent.py
|
|
9
|
-
memoriai/config/__init__.py
|
|
10
|
-
memoriai/config/manager.py
|
|
11
|
-
memoriai/config/settings.py
|
|
12
|
-
memoriai/core/__init__.py
|
|
13
|
-
memoriai/core/database.py
|
|
14
|
-
memoriai/core/memory.py
|
|
15
|
-
memoriai/database/__init__.py
|
|
16
|
-
memoriai/database/connectors/__init__.py
|
|
17
|
-
memoriai/database/connectors/mysql_connector.py
|
|
18
|
-
memoriai/database/connectors/postgres_connector.py
|
|
19
|
-
memoriai/database/connectors/sqlite_connector.py
|
|
20
|
-
memoriai/database/queries/__init__.py
|
|
21
|
-
memoriai/database/queries/base_queries.py
|
|
22
|
-
memoriai/database/queries/chat_queries.py
|
|
23
|
-
memoriai/database/queries/entity_queries.py
|
|
24
|
-
memoriai/database/queries/memory_queries.py
|
|
25
|
-
memoriai/database/templates/__init__.py
|
|
26
|
-
memoriai/database/templates/basic_template.py
|
|
27
|
-
memoriai/database/templates/schemas/__init__.py
|
|
28
|
-
memoriai/integrations/__init__.py
|
|
29
|
-
memoriai/integrations/anthropic_integration.py
|
|
30
|
-
memoriai/integrations/litellm_integration.py
|
|
31
|
-
memoriai/integrations/openai_integration.py
|
|
32
|
-
memoriai/scripts/llm_text.py
|
|
33
|
-
memoriai/tools/__init__.py
|
|
34
|
-
memoriai/tools/memory_tool.py
|
|
35
|
-
memoriai/utils/__init__.py
|
|
36
|
-
memoriai/utils/exceptions.py
|
|
37
|
-
memoriai/utils/helpers.py
|
|
38
|
-
memoriai/utils/logging.py
|
|
39
|
-
memoriai/utils/pydantic_models.py
|
|
40
|
-
memoriai/utils/schemas.py
|
|
41
|
-
memoriai/utils/validators.py
|
|
42
|
-
memorisdk.egg-info/PKG-INFO
|
|
43
|
-
memorisdk.egg-info/SOURCES.txt
|
|
44
|
-
memorisdk.egg-info/dependency_links.txt
|
|
45
|
-
memorisdk.egg-info/entry_points.txt
|
|
46
|
-
memorisdk.egg-info/requires.txt
|
|
47
|
-
memorisdk.egg-info/top_level.txt
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
memoriai
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{memorisdk-1.0.0/memoriai → memorisdk-1.0.2/memori}/database/connectors/postgres_connector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|