MemoryOS 0.2.0__py3-none-any.whl → 0.2.2__py3-none-any.whl
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 MemoryOS might be problematic. Click here for more details.
- {memoryos-0.2.0.dist-info → memoryos-0.2.2.dist-info}/METADATA +67 -26
- memoryos-0.2.2.dist-info/RECORD +169 -0
- memoryos-0.2.2.dist-info/entry_points.txt +3 -0
- memos/__init__.py +1 -1
- memos/api/config.py +562 -0
- memos/api/context/context.py +147 -0
- memos/api/context/dependencies.py +90 -0
- memos/api/exceptions.py +28 -0
- memos/api/mcp_serve.py +502 -0
- memos/api/product_api.py +35 -0
- memos/api/product_models.py +163 -0
- memos/api/routers/__init__.py +1 -0
- memos/api/routers/product_router.py +386 -0
- memos/chunkers/sentence_chunker.py +8 -2
- memos/cli.py +113 -0
- memos/configs/embedder.py +27 -0
- memos/configs/graph_db.py +132 -3
- memos/configs/internet_retriever.py +6 -0
- memos/configs/llm.py +47 -0
- memos/configs/mem_cube.py +1 -1
- memos/configs/mem_os.py +5 -0
- memos/configs/mem_reader.py +9 -0
- memos/configs/mem_scheduler.py +107 -7
- memos/configs/mem_user.py +58 -0
- memos/configs/memory.py +5 -4
- memos/dependency.py +52 -0
- memos/embedders/ark.py +92 -0
- memos/embedders/factory.py +4 -0
- memos/embedders/sentence_transformer.py +8 -2
- memos/embedders/universal_api.py +32 -0
- memos/graph_dbs/base.py +11 -3
- memos/graph_dbs/factory.py +4 -0
- memos/graph_dbs/nebular.py +1364 -0
- memos/graph_dbs/neo4j.py +333 -124
- memos/graph_dbs/neo4j_community.py +300 -0
- memos/llms/base.py +9 -0
- memos/llms/deepseek.py +54 -0
- memos/llms/factory.py +10 -1
- memos/llms/hf.py +170 -13
- memos/llms/hf_singleton.py +114 -0
- memos/llms/ollama.py +4 -0
- memos/llms/openai.py +67 -1
- memos/llms/qwen.py +63 -0
- memos/llms/vllm.py +153 -0
- memos/log.py +1 -1
- memos/mem_cube/general.py +77 -16
- memos/mem_cube/utils.py +109 -0
- memos/mem_os/core.py +251 -51
- memos/mem_os/main.py +94 -12
- memos/mem_os/product.py +1220 -43
- memos/mem_os/utils/default_config.py +352 -0
- memos/mem_os/utils/format_utils.py +1401 -0
- memos/mem_reader/simple_struct.py +18 -10
- memos/mem_scheduler/base_scheduler.py +441 -40
- memos/mem_scheduler/general_scheduler.py +249 -248
- memos/mem_scheduler/modules/base.py +14 -5
- memos/mem_scheduler/modules/dispatcher.py +67 -4
- memos/mem_scheduler/modules/misc.py +104 -0
- memos/mem_scheduler/modules/monitor.py +240 -50
- memos/mem_scheduler/modules/rabbitmq_service.py +319 -0
- memos/mem_scheduler/modules/redis_service.py +32 -22
- memos/mem_scheduler/modules/retriever.py +167 -23
- memos/mem_scheduler/modules/scheduler_logger.py +255 -0
- memos/mem_scheduler/mos_for_test_scheduler.py +140 -0
- memos/mem_scheduler/schemas/__init__.py +0 -0
- memos/mem_scheduler/schemas/general_schemas.py +43 -0
- memos/mem_scheduler/{modules/schemas.py → schemas/message_schemas.py} +63 -61
- memos/mem_scheduler/schemas/monitor_schemas.py +329 -0
- memos/mem_scheduler/utils/__init__.py +0 -0
- memos/mem_scheduler/utils/filter_utils.py +176 -0
- memos/mem_scheduler/utils/misc_utils.py +61 -0
- memos/mem_user/factory.py +94 -0
- memos/mem_user/mysql_persistent_user_manager.py +271 -0
- memos/mem_user/mysql_user_manager.py +500 -0
- memos/mem_user/persistent_factory.py +96 -0
- memos/mem_user/persistent_user_manager.py +260 -0
- memos/mem_user/user_manager.py +4 -4
- memos/memories/activation/item.py +29 -0
- memos/memories/activation/kv.py +10 -3
- memos/memories/activation/vllmkv.py +219 -0
- memos/memories/factory.py +2 -0
- memos/memories/textual/base.py +1 -1
- memos/memories/textual/general.py +43 -97
- memos/memories/textual/item.py +5 -33
- memos/memories/textual/tree.py +22 -12
- memos/memories/textual/tree_text_memory/organize/conflict.py +9 -5
- memos/memories/textual/tree_text_memory/organize/manager.py +26 -18
- memos/memories/textual/tree_text_memory/organize/redundancy.py +25 -44
- memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +50 -48
- memos/memories/textual/tree_text_memory/organize/reorganizer.py +81 -56
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +6 -3
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +2 -0
- memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -1
- memos/memories/textual/tree_text_memory/retrieve/reranker.py +2 -2
- memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +2 -0
- memos/memories/textual/tree_text_memory/retrieve/searcher.py +52 -28
- memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +42 -15
- memos/memories/textual/tree_text_memory/retrieve/utils.py +11 -7
- memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +62 -58
- memos/memos_tools/dinding_report_bot.py +422 -0
- memos/memos_tools/notification_service.py +44 -0
- memos/memos_tools/notification_utils.py +96 -0
- memos/parsers/markitdown.py +8 -2
- memos/settings.py +3 -1
- memos/templates/mem_reader_prompts.py +66 -23
- memos/templates/mem_scheduler_prompts.py +126 -43
- memos/templates/mos_prompts.py +87 -0
- memos/templates/tree_reorganize_prompts.py +85 -30
- memos/vec_dbs/base.py +12 -0
- memos/vec_dbs/qdrant.py +46 -20
- memoryos-0.2.0.dist-info/RECORD +0 -128
- memos/mem_scheduler/utils.py +0 -26
- {memoryos-0.2.0.dist-info → memoryos-0.2.2.dist-info}/LICENSE +0 -0
- {memoryos-0.2.0.dist-info → memoryos-0.2.2.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Default configuration utilities for MemOS.
|
|
3
|
+
Provides simplified configuration generation for users.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from typing import Literal
|
|
7
|
+
|
|
8
|
+
from memos.configs.mem_cube import GeneralMemCubeConfig
|
|
9
|
+
from memos.configs.mem_os import MOSConfig
|
|
10
|
+
from memos.mem_cube.general import GeneralMemCube
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def get_default_config(
|
|
14
|
+
openai_api_key: str,
|
|
15
|
+
openai_api_base: str = "https://api.openai.com/v1",
|
|
16
|
+
text_mem_type: Literal["tree_text", "general_text"] = "general_text",
|
|
17
|
+
user_id: str = "default_user",
|
|
18
|
+
**kwargs,
|
|
19
|
+
) -> MOSConfig:
|
|
20
|
+
"""
|
|
21
|
+
Generate a default MOS configuration with minimal user input.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
openai_api_key (str): OpenAI API key
|
|
25
|
+
openai_api_base (str): OpenAI API base URL, defaults to "https://api.openai.com/v1"
|
|
26
|
+
text_mem_type (str): Type of text memory, either "tree_text" or "general_text"
|
|
27
|
+
user_id (str): User ID for the configuration
|
|
28
|
+
**kwargs: Additional configuration overrides
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
MOSConfig: Complete MOS configuration object
|
|
32
|
+
|
|
33
|
+
Example:
|
|
34
|
+
```python
|
|
35
|
+
config = get_default_config(
|
|
36
|
+
openai_api_key="sk-...",
|
|
37
|
+
openai_api_base="https://api.openai.com/v1",
|
|
38
|
+
text_mem_type="general_text"
|
|
39
|
+
)
|
|
40
|
+
mos = MOS(config)
|
|
41
|
+
```
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
# Base OpenAI configuration
|
|
45
|
+
openai_config = {
|
|
46
|
+
"model_name_or_path": kwargs.get("model_name", "gpt-4o-mini"),
|
|
47
|
+
"temperature": kwargs.get("temperature", 0.8),
|
|
48
|
+
"max_tokens": kwargs.get("max_tokens", 1024),
|
|
49
|
+
"top_p": kwargs.get("top_p", 0.9),
|
|
50
|
+
"top_k": kwargs.get("top_k", 50),
|
|
51
|
+
"remove_think_prefix": True,
|
|
52
|
+
"api_key": openai_api_key,
|
|
53
|
+
"api_base": openai_api_base,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# Universal API embedder configuration (using OpenAI)
|
|
57
|
+
embedder_config = {
|
|
58
|
+
"backend": "universal_api",
|
|
59
|
+
"config": {
|
|
60
|
+
"provider": "openai",
|
|
61
|
+
"api_key": openai_api_key,
|
|
62
|
+
"model_name_or_path": kwargs.get("embedder_model", "text-embedding-3-large"),
|
|
63
|
+
"base_url": openai_api_base,
|
|
64
|
+
},
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
# Base configuration
|
|
68
|
+
config_dict = {
|
|
69
|
+
"user_id": user_id,
|
|
70
|
+
"chat_model": {
|
|
71
|
+
"backend": "openai",
|
|
72
|
+
"config": openai_config,
|
|
73
|
+
},
|
|
74
|
+
"mem_reader": {
|
|
75
|
+
"backend": "simple_struct",
|
|
76
|
+
"config": {
|
|
77
|
+
"llm": {
|
|
78
|
+
"backend": "openai",
|
|
79
|
+
"config": openai_config,
|
|
80
|
+
},
|
|
81
|
+
"embedder": embedder_config,
|
|
82
|
+
"chunker": {
|
|
83
|
+
"backend": "sentence",
|
|
84
|
+
"config": {
|
|
85
|
+
"tokenizer_or_token_counter": "gpt2",
|
|
86
|
+
"chunk_size": kwargs.get("chunk_size", 512),
|
|
87
|
+
"chunk_overlap": kwargs.get("chunk_overlap", 128),
|
|
88
|
+
"min_sentences_per_chunk": 1,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
"enable_textual_memory": True,
|
|
94
|
+
"enable_activation_memory": kwargs.get("enable_activation_memory", False),
|
|
95
|
+
"top_k": kwargs.get("top_k", 5),
|
|
96
|
+
"max_turns_window": kwargs.get("max_turns_window", 20),
|
|
97
|
+
"enable_mem_scheduler": kwargs.get("enable_mem_scheduler", False),
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Note: text_mem configuration is handled in get_default_cube_config
|
|
101
|
+
# MOSConfig doesn't have text_mem field, it's only in MemCube config
|
|
102
|
+
|
|
103
|
+
# Add scheduler configuration if enabled
|
|
104
|
+
if config_dict.get("enable_mem_scheduler", False):
|
|
105
|
+
config_dict["mem_scheduler"] = {
|
|
106
|
+
"backend": "general_scheduler",
|
|
107
|
+
"config": {
|
|
108
|
+
"top_k": kwargs.get("scheduler_top_k", 10),
|
|
109
|
+
"top_n": kwargs.get("scheduler_top_n", 5),
|
|
110
|
+
"act_mem_update_interval": kwargs.get("scheduler_act_mem_update_interval", 300),
|
|
111
|
+
"context_window_size": kwargs.get("scheduler_context_window_size", 5),
|
|
112
|
+
"thread_pool_max_workers": kwargs.get("scheduler_thread_pool_max_workers", 10),
|
|
113
|
+
"consume_interval_seconds": kwargs.get("scheduler_consume_interval_seconds", 3),
|
|
114
|
+
"enable_parallel_dispatch": kwargs.get("scheduler_enable_parallel_dispatch", True),
|
|
115
|
+
"enable_act_memory_update": True,
|
|
116
|
+
},
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# Add activation memory if enabled
|
|
120
|
+
if config_dict.get("enable_activation_memory", False):
|
|
121
|
+
config_dict["act_mem"] = {
|
|
122
|
+
"backend": "kv_cache",
|
|
123
|
+
"config": {
|
|
124
|
+
"memory_filename": kwargs.get(
|
|
125
|
+
"activation_memory_filename", "activation_memory.pickle"
|
|
126
|
+
),
|
|
127
|
+
"extractor_llm": {
|
|
128
|
+
"backend": "openai",
|
|
129
|
+
"config": openai_config,
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return MOSConfig(**config_dict)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def get_default_cube_config(
|
|
138
|
+
openai_api_key: str,
|
|
139
|
+
openai_api_base: str = "https://api.openai.com/v1",
|
|
140
|
+
text_mem_type: Literal["tree_text", "general_text"] = "general_text",
|
|
141
|
+
user_id: str = "default_user",
|
|
142
|
+
**kwargs,
|
|
143
|
+
) -> GeneralMemCubeConfig:
|
|
144
|
+
"""
|
|
145
|
+
Generate a default MemCube configuration with minimal user input.
|
|
146
|
+
|
|
147
|
+
Args:
|
|
148
|
+
openai_api_key (str): OpenAI API key
|
|
149
|
+
openai_api_base (str): OpenAI API base URL, defaults to "https://api.openai.com/v1"
|
|
150
|
+
text_mem_type (str): Type of text memory, either "tree_text" or "general_text"
|
|
151
|
+
user_id (str): User ID for the configuration
|
|
152
|
+
**kwargs: Additional configuration overrides
|
|
153
|
+
|
|
154
|
+
Returns:
|
|
155
|
+
GeneralMemCubeConfig: Complete MemCube configuration object
|
|
156
|
+
"""
|
|
157
|
+
|
|
158
|
+
# Base OpenAI configuration
|
|
159
|
+
openai_config = {
|
|
160
|
+
"model_name_or_path": kwargs.get("model_name", "gpt-4o-mini"),
|
|
161
|
+
"temperature": kwargs.get("temperature", 0.8),
|
|
162
|
+
"max_tokens": kwargs.get("max_tokens", 1024),
|
|
163
|
+
"top_p": kwargs.get("top_p", 0.9),
|
|
164
|
+
"top_k": kwargs.get("top_k", 50),
|
|
165
|
+
"remove_think_prefix": True,
|
|
166
|
+
"api_key": openai_api_key,
|
|
167
|
+
"api_base": openai_api_base,
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# Universal API embedder configuration (using OpenAI)
|
|
171
|
+
embedder_config = {
|
|
172
|
+
"backend": "universal_api",
|
|
173
|
+
"config": {
|
|
174
|
+
"provider": "openai",
|
|
175
|
+
"api_key": openai_api_key,
|
|
176
|
+
"model_name_or_path": kwargs.get("embedder_model", "text-embedding-3-large"),
|
|
177
|
+
"base_url": openai_api_base,
|
|
178
|
+
},
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
# Configure text memory based on type
|
|
182
|
+
if text_mem_type == "tree_text":
|
|
183
|
+
# Tree text memory requires Neo4j configuration
|
|
184
|
+
db_name = f"memos{user_id.replace('-', '').replace('_', '')}"
|
|
185
|
+
if not kwargs.get("use_multi_db", False):
|
|
186
|
+
db_name = kwargs.get("neo4j_db_name", "defaultdb")
|
|
187
|
+
neo4j_config = {
|
|
188
|
+
"uri": kwargs.get("neo4j_uri", "bolt://localhost:7687"),
|
|
189
|
+
"user": kwargs.get("neo4j_user", "neo4j"),
|
|
190
|
+
"db_name": db_name,
|
|
191
|
+
"password": kwargs.get("neo4j_password", "12345678"),
|
|
192
|
+
"auto_create": True,
|
|
193
|
+
"use_multi_db": kwargs.get("use_multi_db", False),
|
|
194
|
+
"embedding_dimension": kwargs.get("embedding_dimension", 3072),
|
|
195
|
+
}
|
|
196
|
+
if not kwargs.get("use_multi_db", False):
|
|
197
|
+
neo4j_config["user_name"] = f"memos{user_id.replace('-', '').replace('_', '')}"
|
|
198
|
+
|
|
199
|
+
text_mem_config = {
|
|
200
|
+
"backend": "tree_text",
|
|
201
|
+
"config": {
|
|
202
|
+
"extractor_llm": {"backend": "openai", "config": openai_config},
|
|
203
|
+
"dispatcher_llm": {"backend": "openai", "config": openai_config},
|
|
204
|
+
"graph_db": {
|
|
205
|
+
"backend": "neo4j",
|
|
206
|
+
"config": neo4j_config,
|
|
207
|
+
},
|
|
208
|
+
"embedder": embedder_config,
|
|
209
|
+
"reorganize": kwargs.get("enable_reorganize", False),
|
|
210
|
+
},
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
elif text_mem_type == "general_text":
|
|
214
|
+
# General text memory with file storage
|
|
215
|
+
text_mem_config = {
|
|
216
|
+
"backend": "general_text",
|
|
217
|
+
"config": {
|
|
218
|
+
"cube_id": kwargs.get("cube_id", f"{user_id}_cube"),
|
|
219
|
+
"memory_filename": kwargs.get("memory_filename", "textual_memory.json"),
|
|
220
|
+
"extractor_llm": {"backend": "openai", "config": openai_config},
|
|
221
|
+
"vector_db": {
|
|
222
|
+
"backend": "qdrant",
|
|
223
|
+
"config": {
|
|
224
|
+
"collection_name": kwargs.get("collection_name", f"{user_id}_collection"),
|
|
225
|
+
"vector_dimension": kwargs.get("vector_dimension", 3072),
|
|
226
|
+
"distance_metric": "cosine",
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
"embedder": embedder_config,
|
|
230
|
+
},
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
# Configure activation memory if enabled
|
|
234
|
+
act_mem_config = {}
|
|
235
|
+
if kwargs.get("enable_activation_memory", False):
|
|
236
|
+
act_mem_config = {
|
|
237
|
+
"backend": "kv_cache",
|
|
238
|
+
"config": {
|
|
239
|
+
"memory_filename": kwargs.get(
|
|
240
|
+
"activation_memory_filename", "activation_memory.pickle"
|
|
241
|
+
),
|
|
242
|
+
"extractor_llm": {
|
|
243
|
+
"backend": "openai",
|
|
244
|
+
"config": openai_config,
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
# Create MemCube configuration
|
|
250
|
+
cube_config_dict = {
|
|
251
|
+
"user_id": user_id,
|
|
252
|
+
"cube_id": kwargs.get("cube_id", f"{user_id}_default_cube"),
|
|
253
|
+
"text_mem": text_mem_config,
|
|
254
|
+
"act_mem": act_mem_config,
|
|
255
|
+
"para_mem": {}, # Empty parametric memory by default
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return GeneralMemCubeConfig.model_validate(cube_config_dict)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def get_default(
|
|
262
|
+
openai_api_key: str,
|
|
263
|
+
openai_api_base: str = "https://api.openai.com/v1",
|
|
264
|
+
text_mem_type: Literal["tree_text", "general_text"] = "general_text",
|
|
265
|
+
user_id: str = "default_user",
|
|
266
|
+
**kwargs,
|
|
267
|
+
) -> tuple[MOSConfig, GeneralMemCube]:
|
|
268
|
+
"""
|
|
269
|
+
Generate both MOS configuration and default MemCube with minimal user input.
|
|
270
|
+
|
|
271
|
+
This is the main convenience function for getting started with MemOS.
|
|
272
|
+
|
|
273
|
+
Args:
|
|
274
|
+
openai_api_key (str): OpenAI API key
|
|
275
|
+
openai_api_base (str): OpenAI API base URL, defaults to "https://api.openai.com/v1"
|
|
276
|
+
text_mem_type (str): Type of text memory, either "tree_text" or "general_text"
|
|
277
|
+
user_id (str): User ID for the configuration
|
|
278
|
+
**kwargs: Additional configuration overrides
|
|
279
|
+
|
|
280
|
+
Returns:
|
|
281
|
+
Tuple[MOSConfig, GeneralMemCube]: Complete MOS configuration and MemCube instance
|
|
282
|
+
|
|
283
|
+
Example:
|
|
284
|
+
```python
|
|
285
|
+
mos_config, default_cube = get_default(
|
|
286
|
+
openai_api_key="sk-...",
|
|
287
|
+
text_mem_type="general_text"
|
|
288
|
+
)
|
|
289
|
+
memory = MOS(mos_config)
|
|
290
|
+
memory.register_mem_cube(default_cube)
|
|
291
|
+
```
|
|
292
|
+
"""
|
|
293
|
+
|
|
294
|
+
# Generate MOS configuration
|
|
295
|
+
mos_config = get_default_config(
|
|
296
|
+
openai_api_key=openai_api_key,
|
|
297
|
+
openai_api_base=openai_api_base,
|
|
298
|
+
text_mem_type=text_mem_type,
|
|
299
|
+
user_id=user_id,
|
|
300
|
+
**kwargs,
|
|
301
|
+
)
|
|
302
|
+
|
|
303
|
+
# Generate MemCube configuration
|
|
304
|
+
cube_config = get_default_cube_config(
|
|
305
|
+
openai_api_key=openai_api_key,
|
|
306
|
+
openai_api_base=openai_api_base,
|
|
307
|
+
text_mem_type=text_mem_type,
|
|
308
|
+
user_id=user_id,
|
|
309
|
+
**kwargs,
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
# Create MemCube instance
|
|
313
|
+
default_cube = GeneralMemCube(cube_config)
|
|
314
|
+
|
|
315
|
+
return mos_config, default_cube
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
def get_simple_config(
|
|
319
|
+
openai_api_key: str,
|
|
320
|
+
openai_api_base: str = "https://api.openai.com/v1",
|
|
321
|
+
text_mem_type: Literal["tree_text", "general_text"] = "general_text",
|
|
322
|
+
user_id: str = "default_user",
|
|
323
|
+
) -> MOSConfig:
|
|
324
|
+
"""
|
|
325
|
+
Get a minimal configuration with only essential parameters.
|
|
326
|
+
|
|
327
|
+
This is the simplest way to get started with MemOS.
|
|
328
|
+
|
|
329
|
+
Args:
|
|
330
|
+
openai_api_key (str): OpenAI API key
|
|
331
|
+
openai_api_base (str): OpenAI API base URL
|
|
332
|
+
text_mem_type (str): Type of text memory
|
|
333
|
+
user_id (str): User ID
|
|
334
|
+
|
|
335
|
+
Returns:
|
|
336
|
+
MOSConfig: Basic MOS configuration
|
|
337
|
+
|
|
338
|
+
Example:
|
|
339
|
+
```python
|
|
340
|
+
config = get_simple_config(
|
|
341
|
+
openai_api_key="sk-...",
|
|
342
|
+
text_mem_type="general_text"
|
|
343
|
+
)
|
|
344
|
+
mos = MOS(config)
|
|
345
|
+
```
|
|
346
|
+
"""
|
|
347
|
+
return get_default_config(
|
|
348
|
+
openai_api_key=openai_api_key,
|
|
349
|
+
openai_api_base=openai_api_base,
|
|
350
|
+
text_mem_type=text_mem_type,
|
|
351
|
+
user_id=user_id,
|
|
352
|
+
)
|