@librechat/agents 3.0.0-rc11 → 3.0.0-rc12
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/cjs/agents/AgentContext.cjs +6 -2
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +16 -1
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/main.cjs +4 -1
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +49 -0
- package/dist/cjs/messages/cache.cjs.map +1 -0
- package/dist/cjs/messages/content.cjs +53 -0
- package/dist/cjs/messages/content.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +0 -27
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +6 -2
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +16 -1
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/main.mjs +3 -1
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +47 -0
- package/dist/esm/messages/cache.mjs.map +1 -0
- package/dist/esm/messages/content.mjs +51 -0
- package/dist/esm/messages/content.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +1 -27
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +4 -1
- package/dist/types/messages/cache.d.ts +8 -0
- package/dist/types/messages/content.d.ts +7 -0
- package/dist/types/messages/format.d.ts +1 -7
- package/dist/types/messages/index.d.ts +2 -0
- package/dist/types/types/graph.d.ts +2 -0
- package/dist/types/types/messages.d.ts +4 -0
- package/package.json +1 -1
- package/src/agents/AgentContext.ts +8 -0
- package/src/graphs/Graph.ts +23 -1
- package/src/messages/cache.test.ts +262 -0
- package/src/messages/cache.ts +56 -0
- package/src/messages/content.test.ts +362 -0
- package/src/messages/content.ts +63 -0
- package/src/messages/format.ts +0 -34
- package/src/messages/index.ts +2 -0
- package/src/types/graph.ts +2 -0
- package/src/types/messages.ts +4 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ContentTypes } from '@/common';
|
|
2
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Formats an array of messages for LangChain, making sure all content fields are strings
|
|
6
|
+
* @param {Array<HumanMessage | AIMessage | SystemMessage | ToolMessage>} payload - The array of messages to format.
|
|
7
|
+
* @returns {Array<HumanMessage | AIMessage | SystemMessage | ToolMessage>} - The array of formatted LangChain messages, including ToolMessages for tool calls.
|
|
8
|
+
*/
|
|
9
|
+
export const formatContentStrings = (
|
|
10
|
+
payload: Array<BaseMessage>
|
|
11
|
+
): Array<BaseMessage> => {
|
|
12
|
+
// Create a new array to store the processed messages
|
|
13
|
+
const result: Array<BaseMessage> = [];
|
|
14
|
+
|
|
15
|
+
for (const message of payload) {
|
|
16
|
+
const messageType = message.getType();
|
|
17
|
+
const isValidMessage =
|
|
18
|
+
messageType === 'human' ||
|
|
19
|
+
messageType === 'ai' ||
|
|
20
|
+
messageType === 'system';
|
|
21
|
+
|
|
22
|
+
if (!isValidMessage) {
|
|
23
|
+
result.push(message);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// If content is already a string, add as-is
|
|
28
|
+
if (typeof message.content === 'string') {
|
|
29
|
+
result.push(message);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// If content is not an array, add as-is
|
|
34
|
+
if (!Array.isArray(message.content)) {
|
|
35
|
+
result.push(message);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Check if all content blocks are text type
|
|
40
|
+
const allTextBlocks = message.content.every(
|
|
41
|
+
(block) => block.type === ContentTypes.TEXT
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
// Only convert to string if all blocks are text type
|
|
45
|
+
if (!allTextBlocks) {
|
|
46
|
+
result.push(message);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Reduce text types to a single string
|
|
51
|
+
const content = message.content.reduce((acc, curr) => {
|
|
52
|
+
if (curr.type === ContentTypes.TEXT) {
|
|
53
|
+
return `${acc}${curr[ContentTypes.TEXT] || ''}\n`;
|
|
54
|
+
}
|
|
55
|
+
return acc;
|
|
56
|
+
}, '');
|
|
57
|
+
|
|
58
|
+
message.content = content.trim();
|
|
59
|
+
result.push(message);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return result;
|
|
63
|
+
};
|
package/src/messages/format.ts
CHANGED
|
@@ -565,40 +565,6 @@ export const formatAgentMessages = (
|
|
|
565
565
|
};
|
|
566
566
|
};
|
|
567
567
|
|
|
568
|
-
/**
|
|
569
|
-
* Formats an array of messages for LangChain, making sure all content fields are strings
|
|
570
|
-
* @param payload - The array of messages to format.
|
|
571
|
-
* @returns - The array of formatted LangChain messages, including ToolMessages for tool calls.
|
|
572
|
-
*/
|
|
573
|
-
export const formatContentStrings = (
|
|
574
|
-
payload: Array<BaseMessage>
|
|
575
|
-
): Array<BaseMessage> => {
|
|
576
|
-
// Create a copy of the payload to avoid modifying the original
|
|
577
|
-
const result = [...payload];
|
|
578
|
-
|
|
579
|
-
for (const message of result) {
|
|
580
|
-
if (typeof message.content === 'string') {
|
|
581
|
-
continue;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
if (!Array.isArray(message.content)) {
|
|
585
|
-
continue;
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
// Reduce text types to a single string, ignore all other types
|
|
589
|
-
const content = message.content.reduce((acc, curr) => {
|
|
590
|
-
if (curr.type === ContentTypes.TEXT) {
|
|
591
|
-
return `${acc}${curr[ContentTypes.TEXT] || ''}\n`;
|
|
592
|
-
}
|
|
593
|
-
return acc;
|
|
594
|
-
}, '');
|
|
595
|
-
|
|
596
|
-
message.content = content.trim();
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
return result;
|
|
600
|
-
};
|
|
601
|
-
|
|
602
568
|
/**
|
|
603
569
|
* Adds a value at key 0 for system messages and shifts all key indices by one in an indexTokenCountMap.
|
|
604
570
|
* This is useful when adding a system message at the beginning of a conversation.
|
package/src/messages/index.ts
CHANGED
package/src/types/graph.ts
CHANGED
|
@@ -367,4 +367,6 @@ export interface AgentInputs {
|
|
|
367
367
|
clientOptions?: ClientOptions;
|
|
368
368
|
additional_instructions?: string;
|
|
369
369
|
reasoningKey?: 'reasoning_content' | 'reasoning';
|
|
370
|
+
/** Format content blocks as strings (for legacy compatibility i.e. Ollama/Azure Serverless) */
|
|
371
|
+
useLegacyContent?: boolean;
|
|
370
372
|
}
|