mem0ai 2.1.0 → 2.1.2
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.
- package/dist/index.d.mts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/oss/index.d.mts +8 -2
- package/dist/oss/index.d.ts +8 -2
- package/dist/oss/index.js +61 -17
- package/dist/oss/index.js.map +1 -1
- package/dist/oss/index.mjs +61 -17
- package/dist/oss/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/oss/index.mjs
CHANGED
|
@@ -73,14 +73,17 @@ import OpenAI2 from "openai";
|
|
|
73
73
|
var OpenAILLM = class {
|
|
74
74
|
constructor(config) {
|
|
75
75
|
this.openai = new OpenAI2({ apiKey: config.apiKey });
|
|
76
|
-
this.model = config.model || "gpt-
|
|
76
|
+
this.model = config.model || "gpt-4o-mini";
|
|
77
77
|
}
|
|
78
78
|
async generateResponse(messages, responseFormat, tools) {
|
|
79
79
|
const completion = await this.openai.chat.completions.create({
|
|
80
|
-
messages: messages.map((msg) =>
|
|
81
|
-
role
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
messages: messages.map((msg) => {
|
|
81
|
+
const role = msg.role;
|
|
82
|
+
return {
|
|
83
|
+
role,
|
|
84
|
+
content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content)
|
|
85
|
+
};
|
|
86
|
+
}),
|
|
84
87
|
model: this.model,
|
|
85
88
|
response_format: responseFormat,
|
|
86
89
|
...tools && { tools, tool_choice: "auto" }
|
|
@@ -100,10 +103,13 @@ var OpenAILLM = class {
|
|
|
100
103
|
}
|
|
101
104
|
async generateChat(messages) {
|
|
102
105
|
const completion = await this.openai.chat.completions.create({
|
|
103
|
-
messages: messages.map((msg) =>
|
|
104
|
-
role
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
messages: messages.map((msg) => {
|
|
107
|
+
const role = msg.role;
|
|
108
|
+
return {
|
|
109
|
+
role,
|
|
110
|
+
content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content)
|
|
111
|
+
};
|
|
112
|
+
}),
|
|
107
113
|
model: this.model
|
|
108
114
|
});
|
|
109
115
|
const response = completion.choices[0].message;
|
|
@@ -125,7 +131,7 @@ var OpenAIStructuredLLM = class {
|
|
|
125
131
|
const completion = await this.openai.chat.completions.create({
|
|
126
132
|
messages: messages.map((msg) => ({
|
|
127
133
|
role: msg.role,
|
|
128
|
-
content: msg.content
|
|
134
|
+
content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content)
|
|
129
135
|
})),
|
|
130
136
|
model: this.model,
|
|
131
137
|
...tools ? {
|
|
@@ -161,7 +167,7 @@ var OpenAIStructuredLLM = class {
|
|
|
161
167
|
const completion = await this.openai.chat.completions.create({
|
|
162
168
|
messages: messages.map((msg) => ({
|
|
163
169
|
role: msg.role,
|
|
164
|
-
content: msg.content
|
|
170
|
+
content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content)
|
|
165
171
|
})),
|
|
166
172
|
model: this.model
|
|
167
173
|
});
|
|
@@ -191,9 +197,9 @@ var AnthropicLLM = class {
|
|
|
191
197
|
model: this.model,
|
|
192
198
|
messages: otherMessages.map((msg) => ({
|
|
193
199
|
role: msg.role,
|
|
194
|
-
content: msg.content
|
|
200
|
+
content: typeof msg.content === "string" ? msg.content : msg.content.image_url.url
|
|
195
201
|
})),
|
|
196
|
-
system: systemMessage == null ? void 0 : systemMessage.content,
|
|
202
|
+
system: typeof (systemMessage == null ? void 0 : systemMessage.content) === "string" ? systemMessage.content : void 0,
|
|
197
203
|
max_tokens: 4096
|
|
198
204
|
});
|
|
199
205
|
return response.content[0].text;
|
|
@@ -223,7 +229,7 @@ var GroqLLM = class {
|
|
|
223
229
|
model: this.model,
|
|
224
230
|
messages: messages.map((msg) => ({
|
|
225
231
|
role: msg.role,
|
|
226
|
-
content: msg.content
|
|
232
|
+
content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content)
|
|
227
233
|
})),
|
|
228
234
|
response_format: responseFormat
|
|
229
235
|
});
|
|
@@ -234,7 +240,7 @@ var GroqLLM = class {
|
|
|
234
240
|
model: this.model,
|
|
235
241
|
messages: messages.map((msg) => ({
|
|
236
242
|
role: msg.role,
|
|
237
|
-
content: msg.content
|
|
243
|
+
content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content)
|
|
238
244
|
}))
|
|
239
245
|
});
|
|
240
246
|
const message = response.choices[0].message;
|
|
@@ -2147,6 +2153,43 @@ Text: ${data}`
|
|
|
2147
2153
|
}
|
|
2148
2154
|
};
|
|
2149
2155
|
|
|
2156
|
+
// src/oss/src/utils/memory.ts
|
|
2157
|
+
var get_image_description = async (image_url) => {
|
|
2158
|
+
const llm = new OpenAILLM({
|
|
2159
|
+
apiKey: process.env.OPENAI_API_KEY
|
|
2160
|
+
});
|
|
2161
|
+
const response = await llm.generateResponse([
|
|
2162
|
+
{
|
|
2163
|
+
role: "user",
|
|
2164
|
+
content: "Provide a description of the image and do not include any additional text."
|
|
2165
|
+
},
|
|
2166
|
+
{
|
|
2167
|
+
role: "user",
|
|
2168
|
+
content: { type: "image_url", image_url: { url: image_url } }
|
|
2169
|
+
}
|
|
2170
|
+
]);
|
|
2171
|
+
return response;
|
|
2172
|
+
};
|
|
2173
|
+
var parse_vision_messages = async (messages) => {
|
|
2174
|
+
const parsed_messages = [];
|
|
2175
|
+
for (const message of messages) {
|
|
2176
|
+
let new_message = {
|
|
2177
|
+
role: message.role,
|
|
2178
|
+
content: ""
|
|
2179
|
+
};
|
|
2180
|
+
if (message.role !== "system") {
|
|
2181
|
+
if (typeof message.content === "object" && message.content.type === "image_url") {
|
|
2182
|
+
const description = await get_image_description(
|
|
2183
|
+
message.content.image_url.url
|
|
2184
|
+
);
|
|
2185
|
+
new_message.content = typeof description === "string" ? description : JSON.stringify(description);
|
|
2186
|
+
parsed_messages.push(new_message);
|
|
2187
|
+
} else parsed_messages.push(message);
|
|
2188
|
+
}
|
|
2189
|
+
}
|
|
2190
|
+
return parsed_messages;
|
|
2191
|
+
};
|
|
2192
|
+
|
|
2150
2193
|
// src/oss/src/memory/index.ts
|
|
2151
2194
|
var Memory = class _Memory {
|
|
2152
2195
|
constructor(config = {}) {
|
|
@@ -2199,8 +2242,9 @@ var Memory = class _Memory {
|
|
|
2199
2242
|
);
|
|
2200
2243
|
}
|
|
2201
2244
|
const parsedMessages = Array.isArray(messages) ? messages : [{ role: "user", content: messages }];
|
|
2245
|
+
const final_parsedMessages = await parse_vision_messages(parsedMessages);
|
|
2202
2246
|
const vectorStoreResult = await this.addToVectorStore(
|
|
2203
|
-
|
|
2247
|
+
final_parsedMessages,
|
|
2204
2248
|
metadata,
|
|
2205
2249
|
filters
|
|
2206
2250
|
);
|
|
@@ -2208,7 +2252,7 @@ var Memory = class _Memory {
|
|
|
2208
2252
|
if (this.graphMemory) {
|
|
2209
2253
|
try {
|
|
2210
2254
|
graphResult = await this.graphMemory.add(
|
|
2211
|
-
|
|
2255
|
+
final_parsedMessages.map((m) => m.content).join("\n"),
|
|
2212
2256
|
filters
|
|
2213
2257
|
);
|
|
2214
2258
|
} catch (error) {
|