@langchain/core 1.0.0-alpha.2 → 1.0.0-alpha.3
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/agents.d.ts.map +1 -1
- package/dist/caches/base.cjs +5 -18
- package/dist/caches/base.cjs.map +1 -1
- package/dist/caches/base.d.cts +4 -20
- package/dist/caches/base.d.cts.map +1 -1
- package/dist/caches/base.d.ts +4 -20
- package/dist/caches/base.d.ts.map +1 -1
- package/dist/caches/base.js +5 -18
- package/dist/caches/base.js.map +1 -1
- package/dist/callbacks/base.d.cts +3 -2
- package/dist/callbacks/base.d.cts.map +1 -1
- package/dist/callbacks/base.d.ts +3 -2
- package/dist/callbacks/base.d.ts.map +1 -1
- package/dist/callbacks/manager.d.cts +1 -1
- package/dist/callbacks/manager.d.ts +1 -1
- package/dist/language_models/base.d.cts +1 -1
- package/dist/language_models/base.d.ts +1 -1
- package/dist/language_models/chat_models.cjs +1 -0
- package/dist/language_models/chat_models.cjs.map +1 -1
- package/dist/language_models/chat_models.d.cts +2 -1
- package/dist/language_models/chat_models.d.cts.map +1 -1
- package/dist/language_models/chat_models.d.ts +2 -1
- package/dist/language_models/chat_models.d.ts.map +1 -1
- package/dist/language_models/chat_models.js +2 -1
- package/dist/language_models/chat_models.js.map +1 -1
- package/dist/messages/ai.cjs +32 -60
- package/dist/messages/ai.cjs.map +1 -1
- package/dist/messages/ai.d.cts +26 -119
- package/dist/messages/ai.d.cts.map +1 -1
- package/dist/messages/ai.d.ts +26 -119
- package/dist/messages/ai.d.ts.map +1 -1
- package/dist/messages/ai.js +32 -60
- package/dist/messages/ai.js.map +1 -1
- package/dist/messages/base.cjs +48 -28
- package/dist/messages/base.cjs.map +1 -1
- package/dist/messages/base.d.cts +37 -39
- package/dist/messages/base.d.cts.map +1 -1
- package/dist/messages/base.d.ts +37 -39
- package/dist/messages/base.d.ts.map +1 -1
- package/dist/messages/base.js +48 -28
- package/dist/messages/base.js.map +1 -1
- package/dist/messages/chat.cjs +18 -12
- package/dist/messages/chat.cjs.map +1 -1
- package/dist/messages/chat.d.cts +21 -13
- package/dist/messages/chat.d.cts.map +1 -1
- package/dist/messages/chat.d.ts +21 -13
- package/dist/messages/chat.d.ts.map +1 -1
- package/dist/messages/chat.js +18 -12
- package/dist/messages/chat.js.map +1 -1
- package/dist/messages/content/index.cjs.map +1 -1
- package/dist/messages/content/index.d.cts +1 -1
- package/dist/messages/content/index.d.cts.map +1 -1
- package/dist/messages/content/index.d.ts +1 -1
- package/dist/messages/content/index.d.ts.map +1 -1
- package/dist/messages/content/index.js.map +1 -1
- package/dist/messages/function.cjs +8 -13
- package/dist/messages/function.cjs.map +1 -1
- package/dist/messages/function.d.cts +11 -11
- package/dist/messages/function.d.cts.map +1 -1
- package/dist/messages/function.d.ts +11 -11
- package/dist/messages/function.d.ts.map +1 -1
- package/dist/messages/function.js +8 -13
- package/dist/messages/function.js.map +1 -1
- package/dist/messages/human.cjs +20 -11
- package/dist/messages/human.cjs.map +1 -1
- package/dist/messages/human.d.cts +20 -15
- package/dist/messages/human.d.cts.map +1 -1
- package/dist/messages/human.d.ts +20 -15
- package/dist/messages/human.d.ts.map +1 -1
- package/dist/messages/human.js +20 -11
- package/dist/messages/human.js.map +1 -1
- package/dist/messages/index.cjs +10 -0
- package/dist/messages/index.cjs.map +1 -1
- package/dist/messages/index.d.cts +9 -7
- package/dist/messages/index.d.ts +9 -7
- package/dist/messages/index.js +8 -2
- package/dist/messages/index.js.map +1 -1
- package/dist/messages/message.cjs +15 -0
- package/dist/messages/message.cjs.map +1 -0
- package/dist/messages/message.d.cts +598 -0
- package/dist/messages/message.d.cts.map +1 -0
- package/dist/messages/message.d.ts +598 -0
- package/dist/messages/message.d.ts.map +1 -0
- package/dist/messages/message.js +14 -0
- package/dist/messages/message.js.map +1 -0
- package/dist/messages/metadata.cjs +41 -0
- package/dist/messages/metadata.cjs.map +1 -0
- package/dist/messages/metadata.d.cts +98 -0
- package/dist/messages/metadata.d.cts.map +1 -0
- package/dist/messages/metadata.d.ts +98 -0
- package/dist/messages/metadata.d.ts.map +1 -0
- package/dist/messages/metadata.js +40 -0
- package/dist/messages/metadata.js.map +1 -0
- package/dist/messages/modifier.cjs +5 -7
- package/dist/messages/modifier.cjs.map +1 -1
- package/dist/messages/modifier.d.cts +7 -5
- package/dist/messages/modifier.d.cts.map +1 -1
- package/dist/messages/modifier.d.ts +7 -5
- package/dist/messages/modifier.d.ts.map +1 -1
- package/dist/messages/modifier.js +5 -7
- package/dist/messages/modifier.js.map +1 -1
- package/dist/messages/system.cjs +20 -11
- package/dist/messages/system.cjs.map +1 -1
- package/dist/messages/system.d.cts +20 -15
- package/dist/messages/system.d.cts.map +1 -1
- package/dist/messages/system.d.ts +20 -15
- package/dist/messages/system.d.ts.map +1 -1
- package/dist/messages/system.js +20 -11
- package/dist/messages/system.js.map +1 -1
- package/dist/messages/tool.cjs +15 -13
- package/dist/messages/tool.cjs.map +1 -1
- package/dist/messages/tool.d.cts +72 -46
- package/dist/messages/tool.d.cts.map +1 -1
- package/dist/messages/tool.d.ts +72 -46
- package/dist/messages/tool.d.ts.map +1 -1
- package/dist/messages/tool.js +15 -13
- package/dist/messages/tool.js.map +1 -1
- package/dist/messages/transformers.cjs.map +1 -1
- package/dist/messages/transformers.d.cts +2 -1
- package/dist/messages/transformers.d.cts.map +1 -1
- package/dist/messages/transformers.d.ts +2 -1
- package/dist/messages/transformers.d.ts.map +1 -1
- package/dist/messages/transformers.js.map +1 -1
- package/dist/messages/utils.cjs +8 -1
- package/dist/messages/utils.cjs.map +1 -1
- package/dist/messages/utils.d.cts +83 -3
- package/dist/messages/utils.d.cts.map +1 -1
- package/dist/messages/utils.d.ts +83 -3
- package/dist/messages/utils.d.ts.map +1 -1
- package/dist/messages/utils.js +8 -2
- package/dist/messages/utils.js.map +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts +1 -1
- package/dist/prompt_values.d.cts +4 -3
- package/dist/prompt_values.d.cts.map +1 -1
- package/dist/prompt_values.d.ts +4 -3
- package/dist/prompt_values.d.ts.map +1 -1
- package/dist/prompts/chat.d.cts +3 -3
- package/dist/prompts/chat.d.cts.map +1 -1
- package/dist/prompts/chat.d.ts +3 -3
- package/dist/prompts/chat.d.ts.map +1 -1
- package/dist/prompts/few_shot.d.cts +1 -1
- package/dist/prompts/few_shot.d.ts +1 -1
- package/dist/prompts/image.d.cts +1 -1
- package/dist/prompts/image.d.ts +1 -1
- package/dist/prompts/prompt.d.cts +1 -1
- package/dist/prompts/prompt.d.ts +1 -1
- package/dist/prompts/template.d.cts +1 -1
- package/dist/prompts/template.d.ts +1 -1
- package/dist/runnables/base.d.cts +1 -1
- package/dist/runnables/base.d.ts +1 -1
- package/dist/tools/index.d.cts +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/types.d.cts +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tracers/base.d.cts +1 -1
- package/dist/tracers/base.d.ts +1 -1
- package/dist/tracers/tracer_langchain_v1.d.cts +1 -1
- package/dist/tracers/tracer_langchain_v1.d.ts +1 -1
- package/dist/utils/testing/index.d.cts +4 -3
- package/dist/utils/testing/index.d.cts.map +1 -1
- package/dist/utils/testing/index.d.ts +4 -3
- package/dist/utils/testing/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/messages/base.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { Serializable, SerializedConstructor } from "../load/serializable.js";
|
|
2
|
-
import { StringWithAutocomplete } from "../utils/types/index.js";
|
|
3
1
|
import { ContentBlock } from "./content/index.js";
|
|
2
|
+
import { Serializable, SerializedConstructor } from "../load/serializable.js";
|
|
3
|
+
import { $InferMessageContent, $InferResponseMetadata, Message, MessageStructure, MessageType } from "./message.js";
|
|
4
4
|
|
|
5
5
|
//#region src/messages/base.d.ts
|
|
6
|
+
/** @internal */
|
|
7
|
+
declare const MESSAGE_SYMBOL: unique symbol;
|
|
6
8
|
interface StoredMessageData {
|
|
7
9
|
content: string;
|
|
8
10
|
role: string | undefined;
|
|
@@ -28,7 +30,6 @@ interface StoredMessageV1 {
|
|
|
28
30
|
role: string | undefined;
|
|
29
31
|
text: string;
|
|
30
32
|
}
|
|
31
|
-
type MessageType = "human" | "ai" | "generic" | "developer" | "system" | "function" | "tool" | "remove";
|
|
32
33
|
type MessageContent = string | Array<ContentBlock>;
|
|
33
34
|
interface FunctionCall {
|
|
34
35
|
/**
|
|
@@ -43,10 +44,12 @@ interface FunctionCall {
|
|
|
43
44
|
*/
|
|
44
45
|
name: string;
|
|
45
46
|
}
|
|
46
|
-
type BaseMessageFields = {
|
|
47
|
+
type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = {
|
|
48
|
+
id?: string;
|
|
47
49
|
name?: string;
|
|
48
|
-
content?:
|
|
50
|
+
content?: $InferMessageContent<TStructure, TRole>;
|
|
49
51
|
contentBlocks?: Array<ContentBlock.Standard>;
|
|
52
|
+
/** @deprecated */
|
|
50
53
|
additional_kwargs?: {
|
|
51
54
|
/**
|
|
52
55
|
* @deprecated Use "tool_calls" field on AIMessages instead
|
|
@@ -58,14 +61,7 @@ type BaseMessageFields = {
|
|
|
58
61
|
tool_calls?: OpenAIToolCall[];
|
|
59
62
|
[key: string]: unknown;
|
|
60
63
|
};
|
|
61
|
-
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
-
response_metadata?: Record<string, any>;
|
|
64
|
-
/**
|
|
65
|
-
* An optional unique identifier for the message. This should ideally be
|
|
66
|
-
* provided by the provider/model which created the message.
|
|
67
|
-
*/
|
|
68
|
-
id?: string;
|
|
64
|
+
response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>;
|
|
69
65
|
};
|
|
70
66
|
declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;
|
|
71
67
|
/**
|
|
@@ -82,27 +78,17 @@ declare function _mergeStatus(left?: "success" | "error", right?: "success" | "e
|
|
|
82
78
|
* properties like `content`, `name`, and `additional_kwargs`. It also
|
|
83
79
|
* includes methods like `toDict()` and `_getType()`.
|
|
84
80
|
*/
|
|
85
|
-
declare abstract class BaseMessage extends Serializable {
|
|
81
|
+
declare abstract class BaseMessage<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends Serializable implements Message<TStructure, TRole> {
|
|
86
82
|
lc_namespace: string[];
|
|
87
83
|
lc_serializable: boolean;
|
|
88
84
|
get lc_aliases(): Record<string, string>;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
*/
|
|
92
|
-
get text(): string;
|
|
93
|
-
/** The content of the message. */
|
|
94
|
-
content: MessageContent;
|
|
95
|
-
/** The name of the message sender in a multi-user chat. */
|
|
96
|
-
name?: string;
|
|
97
|
-
/** Additional keyword arguments */
|
|
98
|
-
additional_kwargs: NonNullable<BaseMessageFields["additional_kwargs"]>;
|
|
99
|
-
/** Response metadata. For example: response headers, logprobs, token counts, model name. */
|
|
100
|
-
response_metadata: NonNullable<BaseMessageFields["response_metadata"]>;
|
|
101
|
-
/**
|
|
102
|
-
* An optional unique identifier for the message. This should ideally be
|
|
103
|
-
* provided by the provider/model which created the message.
|
|
104
|
-
*/
|
|
85
|
+
readonly [MESSAGE_SYMBOL]: true;
|
|
86
|
+
abstract readonly type: TRole;
|
|
105
87
|
id?: string;
|
|
88
|
+
name?: string;
|
|
89
|
+
content: $InferMessageContent<TStructure, TRole>;
|
|
90
|
+
additional_kwargs: NonNullable<BaseMessageFields<TStructure, TRole>["additional_kwargs"]>;
|
|
91
|
+
response_metadata: NonNullable<BaseMessageFields<TStructure, TRole>["response_metadata"]>;
|
|
106
92
|
/**
|
|
107
93
|
* @deprecated Use .getType() instead or import the proper typeguard.
|
|
108
94
|
* For example:
|
|
@@ -114,16 +100,21 @@ declare abstract class BaseMessage extends Serializable {
|
|
|
114
100
|
* isAIMessage(message); // true
|
|
115
101
|
* ```
|
|
116
102
|
*/
|
|
117
|
-
|
|
118
|
-
/**
|
|
103
|
+
_getType(): MessageType;
|
|
104
|
+
/**
|
|
105
|
+
* @deprecated Use .type instead
|
|
106
|
+
* The type of the message.
|
|
107
|
+
*/
|
|
119
108
|
getType(): MessageType;
|
|
120
|
-
constructor(
|
|
121
|
-
|
|
109
|
+
constructor(arg: $InferMessageContent<TStructure, TRole> | BaseMessageFields<TStructure, TRole>);
|
|
110
|
+
/** Get text content of the message. */
|
|
111
|
+
get text(): string;
|
|
122
112
|
get contentBlocks(): Array<ContentBlock.Standard>;
|
|
123
113
|
toDict(): StoredMessage;
|
|
124
114
|
static lc_name(): string;
|
|
125
115
|
// Can't be protected for silly reasons
|
|
126
116
|
get _printableFields(): Record<string, unknown>;
|
|
117
|
+
static isInstance(obj: unknown): obj is BaseMessage;
|
|
127
118
|
// this private method is used to update the ID for the runtime
|
|
128
119
|
// value as well as in lc_kwargs for serialisation
|
|
129
120
|
_updateId(value: string | undefined): void;
|
|
@@ -166,23 +157,30 @@ declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined):
|
|
|
166
157
|
* one. It also overrides the `__add__()` method to support concatenation
|
|
167
158
|
* of `BaseMessageChunk` instances.
|
|
168
159
|
*/
|
|
169
|
-
declare abstract class BaseMessageChunk extends BaseMessage {
|
|
170
|
-
abstract concat(chunk: BaseMessageChunk): BaseMessageChunk
|
|
160
|
+
declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {
|
|
161
|
+
abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;
|
|
162
|
+
static isInstance(obj: unknown): obj is BaseMessageChunk;
|
|
171
163
|
}
|
|
172
164
|
type MessageFieldWithRole = {
|
|
173
|
-
role:
|
|
165
|
+
role: MessageType;
|
|
174
166
|
content: MessageContent;
|
|
175
167
|
name?: string;
|
|
176
168
|
} & Record<string, unknown>;
|
|
177
169
|
declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;
|
|
178
|
-
type BaseMessageLike = BaseMessage | MessageFieldWithRole | [
|
|
170
|
+
type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | string
|
|
179
171
|
/**
|
|
180
172
|
* @deprecated Specifying "type" is deprecated and will be removed in 0.4.0.
|
|
181
173
|
*/ | ({
|
|
182
174
|
type: MessageType | "user" | "assistant" | "placeholder";
|
|
183
175
|
} & BaseMessageFields & Record<string, unknown>) | SerializedConstructor;
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Use {@link BaseMessage.isInstance} instead
|
|
178
|
+
*/
|
|
184
179
|
declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;
|
|
180
|
+
/**
|
|
181
|
+
* @deprecated Use {@link BaseMessageChunk.isInstance} instead
|
|
182
|
+
*/
|
|
185
183
|
declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;
|
|
186
184
|
//#endregion
|
|
187
|
-
export { BaseMessage, BaseMessageChunk, BaseMessageFields, BaseMessageLike, FunctionCall, MessageContent, MessageFieldWithRole,
|
|
185
|
+
export { BaseMessage, BaseMessageChunk, BaseMessageFields, BaseMessageLike, FunctionCall, MessageContent, MessageFieldWithRole, OpenAIToolCall, StoredGeneration, StoredMessage, StoredMessageData, StoredMessageV1, _isMessageFieldWithRole, _mergeDicts, _mergeLists, _mergeObj, _mergeStatus, isBaseMessage, isBaseMessageChunk, isOpenAIToolCallArray, mergeContent };
|
|
188
186
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","names":["Serializable","SerializedConstructor","StringWithAutocomplete","ContentBlock","StoredMessageData","Record","StoredMessage","StoredGeneration","StoredMessageV1","MessageType","MessageContent","Array","FunctionCall","BaseMessageFields","Standard","OpenAIToolCall","mergeContent","_mergeStatus","BaseMessage","NonNullable","Symbol","toStringTag","isOpenAIToolCallArray","_mergeDicts","_mergeLists","_mergeObj","T","BaseMessageChunk","MessageFieldWithRole","_isMessageFieldWithRole","BaseMessageLike","isBaseMessage","isBaseMessageChunk"],"sources":["../../src/messages/base.d.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { StringWithAutocomplete } from \"../utils/types/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additional_kwargs?: Record<string, any>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\nexport type MessageType = \"human\" | \"ai\" | \"generic\" | \"developer\" | \"system\" | \"function\" | \"tool\" | \"remove\";\nexport type MessageContent = string | Array<ContentBlock>;\nexport interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n /**\n * The name of the function to call.\n */\n name: string;\n}\nexport type BaseMessageFields = {\n name?: string;\n content?: MessageContent;\n contentBlocks?: Array<ContentBlock.Standard>;\n additional_kwargs?: {\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n function_call?: FunctionCall;\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n tool_calls?: OpenAIToolCall[];\n [key: string]: unknown;\n };\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n /**\n * An optional unique identifier for the message. This should ideally be\n * provided by the provider/model which created the message.\n */\n id?: string;\n};\nexport declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;\n/**\n * 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n * it will return 'success'.\n *\n * @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n * @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n * @returns {\"success\" | \"error\"} The 'merged' value.\n */\nexport declare function _mergeStatus(left?: \"success\" | \"error\", right?: \"success\" | \"error\"): \"success\" | \"error\" | undefined;\n/**\n * Base class for all types of messages in a conversation. It includes\n * properties like `content`, `name`, and `additional_kwargs`. It also\n * includes methods like `toDict()` and `_getType()`.\n */\nexport declare abstract class BaseMessage extends Serializable {\n lc_namespace: string[];\n lc_serializable: boolean;\n get lc_aliases(): Record<string, string>;\n /**\n * Get text content of the message.\n */\n get text(): string;\n /** The content of the message. */\n content: MessageContent;\n /** The name of the message sender in a multi-user chat. */\n name?: string;\n /** Additional keyword arguments */\n additional_kwargs: NonNullable<BaseMessageFields[\"additional_kwargs\"]>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n response_metadata: NonNullable<BaseMessageFields[\"response_metadata\"]>;\n /**\n * An optional unique identifier for the message. This should ideally be\n * provided by the provider/model which created the message.\n */\n id?: string;\n /**\n * @deprecated Use .getType() instead or import the proper typeguard.\n * For example:\n *\n * ```ts\n * import { isAIMessage } from \"@langchain/core/messages\";\n *\n * const message = new AIMessage(\"Hello!\");\n * isAIMessage(message); // true\n * ```\n */\n abstract _getType(): MessageType;\n /** The type of the message. */\n getType(): MessageType;\n constructor(fields: string | BaseMessageFields, \n /** @deprecated */\n kwargs?: Record<string, unknown>);\n get contentBlocks(): Array<ContentBlock.Standard>;\n toDict(): StoredMessage;\n static lc_name(): string;\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown>;\n // this private method is used to update the ID for the runtime\n // value as well as in lc_kwargs for serialisation\n _updateId(value: string | undefined): void;\n get [Symbol.toStringTag](): any;\n}\n/**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\nexport type OpenAIToolCall = {\n /**\n * The ID of the tool call.\n */\n id: string;\n /**\n * The function that the model called.\n */\n function: FunctionCall;\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n index?: number;\n};\nexport declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];\nexport declare function _mergeDicts(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nleft: Record<string, any>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nright: Record<string, any>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;\n/**\n * Represents a chunk of a message, which can be concatenated with other\n * message chunks. It includes a method `_merge_kwargs_dict()` for merging\n * additional keyword arguments from another `BaseMessageChunk` into this\n * one. It also overrides the `__add__()` method to support concatenation\n * of `BaseMessageChunk` instances.\n */\nexport declare abstract class BaseMessageChunk extends BaseMessage {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk;\n}\nexport type MessageFieldWithRole = {\n role: StringWithAutocomplete<\"user\" | \"assistant\" | MessageType>;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\nexport declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;\nexport type BaseMessageLike = BaseMessage | MessageFieldWithRole | [\n StringWithAutocomplete<MessageType | \"user\" | \"assistant\" | \"placeholder\">,\n MessageContent\n] | string\n/**\n * @deprecated Specifying \"type\" is deprecated and will be removed in 0.4.0.\n */\n | ({\n type: MessageType | \"user\" | \"assistant\" | \"placeholder\";\n} & BaseMessageFields & Record<string, unknown>) | SerializedConstructor;\nexport declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;\nexport declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.d.ts","names":["Serializable","SerializedConstructor","ContentBlock","$InferMessageContent","$InferResponseMetadata","MessageStructure","MessageType","Message","MESSAGE_SYMBOL","StoredMessageData","Record","StoredMessage","StoredGeneration","StoredMessageV1","MessageContent","Array","FunctionCall","BaseMessageFields","TStructure","TRole","Standard","OpenAIToolCall","Partial","mergeContent","_mergeStatus","BaseMessage","NonNullable","Symbol","toStringTag","isOpenAIToolCallArray","_mergeDicts","_mergeLists","_mergeObj","T","BaseMessageChunk","MessageFieldWithRole","_isMessageFieldWithRole","BaseMessageLike","isBaseMessage","isBaseMessageChunk"],"sources":["../../src/messages/base.d.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferResponseMetadata, MessageStructure, MessageType, Message } from \"./message.js\";\n/** @internal */\ndeclare const MESSAGE_SYMBOL: unique symbol;\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additional_kwargs?: Record<string, any>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\nexport type MessageContent = string | Array<ContentBlock>;\nexport interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n /**\n * The name of the function to call.\n */\n name: string;\n}\nexport type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = {\n id?: string;\n name?: string;\n content?: $InferMessageContent<TStructure, TRole>;\n contentBlocks?: Array<ContentBlock.Standard>;\n /** @deprecated */\n additional_kwargs?: {\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n function_call?: FunctionCall;\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n tool_calls?: OpenAIToolCall[];\n [key: string]: unknown;\n };\n response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>;\n};\nexport declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;\n/**\n * 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n * it will return 'success'.\n *\n * @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n * @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n * @returns {\"success\" | \"error\"} The 'merged' value.\n */\nexport declare function _mergeStatus(left?: \"success\" | \"error\", right?: \"success\" | \"error\"): \"success\" | \"error\" | undefined;\n/**\n * Base class for all types of messages in a conversation. It includes\n * properties like `content`, `name`, and `additional_kwargs`. It also\n * includes methods like `toDict()` and `_getType()`.\n */\nexport declare abstract class BaseMessage<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends Serializable implements Message<TStructure, TRole> {\n lc_namespace: string[];\n lc_serializable: boolean;\n get lc_aliases(): Record<string, string>;\n readonly [MESSAGE_SYMBOL]: true;\n abstract readonly type: TRole;\n id?: string;\n name?: string;\n content: $InferMessageContent<TStructure, TRole>;\n additional_kwargs: NonNullable<BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]>;\n response_metadata: NonNullable<BaseMessageFields<TStructure, TRole>[\"response_metadata\"]>;\n /**\n * @deprecated Use .getType() instead or import the proper typeguard.\n * For example:\n *\n * ```ts\n * import { isAIMessage } from \"@langchain/core/messages\";\n *\n * const message = new AIMessage(\"Hello!\");\n * isAIMessage(message); // true\n * ```\n */\n _getType(): MessageType;\n /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType;\n constructor(arg: $InferMessageContent<TStructure, TRole> | BaseMessageFields<TStructure, TRole>);\n /** Get text content of the message. */\n get text(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n toDict(): StoredMessage;\n static lc_name(): string;\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is BaseMessage;\n // this private method is used to update the ID for the runtime\n // value as well as in lc_kwargs for serialisation\n _updateId(value: string | undefined): void;\n get [Symbol.toStringTag](): any;\n}\n/**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\nexport type OpenAIToolCall = {\n /**\n * The ID of the tool call.\n */\n id: string;\n /**\n * The function that the model called.\n */\n function: FunctionCall;\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n index?: number;\n};\nexport declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];\nexport declare function _mergeDicts(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nleft: Record<string, any>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nright: Record<string, any>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;\n/**\n * Represents a chunk of a message, which can be concatenated with other\n * message chunks. It includes a method `_merge_kwargs_dict()` for merging\n * additional keyword arguments from another `BaseMessageChunk` into this\n * one. It also overrides the `__add__()` method to support concatenation\n * of `BaseMessageChunk` instances.\n */\nexport declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n static isInstance(obj: unknown): obj is BaseMessageChunk;\n}\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\nexport declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;\nexport type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | string\n/**\n * @deprecated Specifying \"type\" is deprecated and will be removed in 0.4.0.\n */\n | ({\n type: MessageType | \"user\" | \"assistant\" | \"placeholder\";\n} & BaseMessageFields & Record<string, unknown>) | SerializedConstructor;\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;\nexport {};\n"],"mappings":"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"}
|
package/dist/messages/base.js
CHANGED
|
@@ -3,8 +3,11 @@ import { isDataContentBlock } from "./content/data.js";
|
|
|
3
3
|
import { convertToV1FromAnthropicInput } from "./block_translators/anthropic.js";
|
|
4
4
|
import { convertToV1FromDataContent } from "./block_translators/data.js";
|
|
5
5
|
import { convertToV1FromChatCompletionsInput } from "./block_translators/openai.js";
|
|
6
|
+
import { isMessage } from "./message.js";
|
|
6
7
|
|
|
7
8
|
//#region src/messages/base.ts
|
|
9
|
+
/** @internal */
|
|
10
|
+
const MESSAGE_SYMBOL = Symbol.for("langchain.message");
|
|
8
11
|
function mergeContent(firstContent, secondContent) {
|
|
9
12
|
if (typeof firstContent === "string") {
|
|
10
13
|
if (firstContent === "") return secondContent;
|
|
@@ -70,41 +73,35 @@ var BaseMessage = class extends Serializable {
|
|
|
70
73
|
response_metadata: "response_metadata"
|
|
71
74
|
};
|
|
72
75
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
*/
|
|
76
|
-
get text() {
|
|
77
|
-
if (typeof this.content === "string") return this.content;
|
|
78
|
-
if (!Array.isArray(this.content)) return "";
|
|
79
|
-
return this.content.map((c) => {
|
|
80
|
-
if (typeof c === "string") return c;
|
|
81
|
-
if (c.type === "text") return c.text;
|
|
82
|
-
return "";
|
|
83
|
-
}).join("");
|
|
84
|
-
}
|
|
85
|
-
/** The content of the message. */
|
|
86
|
-
content;
|
|
87
|
-
/** The name of the message sender in a multi-user chat. */
|
|
76
|
+
[MESSAGE_SYMBOL] = true;
|
|
77
|
+
id;
|
|
88
78
|
name;
|
|
89
|
-
|
|
79
|
+
content;
|
|
90
80
|
additional_kwargs;
|
|
91
|
-
/** Response metadata. For example: response headers, logprobs, token counts, model name. */
|
|
92
81
|
response_metadata;
|
|
93
82
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
83
|
+
* @deprecated Use .getType() instead or import the proper typeguard.
|
|
84
|
+
* For example:
|
|
85
|
+
*
|
|
86
|
+
* ```ts
|
|
87
|
+
* import { isAIMessage } from "@langchain/core/messages";
|
|
88
|
+
*
|
|
89
|
+
* const message = new AIMessage("Hello!");
|
|
90
|
+
* isAIMessage(message); // true
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
_getType() {
|
|
94
|
+
return this.type;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated Use .type instead
|
|
98
|
+
* The type of the message.
|
|
96
99
|
*/
|
|
97
|
-
id;
|
|
98
|
-
/** The type of the message. */
|
|
99
100
|
getType() {
|
|
100
101
|
return this._getType();
|
|
101
102
|
}
|
|
102
|
-
constructor(
|
|
103
|
-
|
|
104
|
-
content: fields,
|
|
105
|
-
additional_kwargs: kwargs,
|
|
106
|
-
response_metadata: {}
|
|
107
|
-
};
|
|
103
|
+
constructor(arg) {
|
|
104
|
+
const fields = typeof arg === "string" || Array.isArray(arg) ? { content: arg } : arg;
|
|
108
105
|
if (!fields.additional_kwargs) fields.additional_kwargs = {};
|
|
109
106
|
if (!fields.response_metadata) fields.response_metadata = {};
|
|
110
107
|
super(fields);
|
|
@@ -125,6 +122,16 @@ var BaseMessage = class extends Serializable {
|
|
|
125
122
|
this.additional_kwargs = fields.additional_kwargs;
|
|
126
123
|
this.id = fields.id;
|
|
127
124
|
}
|
|
125
|
+
/** Get text content of the message. */
|
|
126
|
+
get text() {
|
|
127
|
+
if (typeof this.content === "string") return this.content;
|
|
128
|
+
if (!Array.isArray(this.content)) return "";
|
|
129
|
+
return this.content.map((c) => {
|
|
130
|
+
if (typeof c === "string") return c;
|
|
131
|
+
if (c.type === "text") return c.text;
|
|
132
|
+
return "";
|
|
133
|
+
}).join("");
|
|
134
|
+
}
|
|
128
135
|
get contentBlocks() {
|
|
129
136
|
const blocks = typeof this.content === "string" ? [{
|
|
130
137
|
type: "text",
|
|
@@ -156,6 +163,9 @@ var BaseMessage = class extends Serializable {
|
|
|
156
163
|
response_metadata: this.response_metadata
|
|
157
164
|
};
|
|
158
165
|
}
|
|
166
|
+
static isInstance(obj) {
|
|
167
|
+
return typeof obj === "object" && obj !== null && MESSAGE_SYMBOL in obj && obj[MESSAGE_SYMBOL] === true && isMessage(obj);
|
|
168
|
+
}
|
|
159
169
|
_updateId(value) {
|
|
160
170
|
this.id = value;
|
|
161
171
|
this.lc_kwargs.id = value;
|
|
@@ -221,13 +231,23 @@ function _mergeObj(left, right) {
|
|
|
221
231
|
* one. It also overrides the `__add__()` method to support concatenation
|
|
222
232
|
* of `BaseMessageChunk` instances.
|
|
223
233
|
*/
|
|
224
|
-
var BaseMessageChunk = class extends BaseMessage {
|
|
234
|
+
var BaseMessageChunk = class extends BaseMessage {
|
|
235
|
+
static isInstance(obj) {
|
|
236
|
+
return super.isInstance(obj) && "concat" in obj && typeof obj.concat === "function";
|
|
237
|
+
}
|
|
238
|
+
};
|
|
225
239
|
function _isMessageFieldWithRole(x) {
|
|
226
240
|
return typeof x.role === "string";
|
|
227
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* @deprecated Use {@link BaseMessage.isInstance} instead
|
|
244
|
+
*/
|
|
228
245
|
function isBaseMessage(messageLike) {
|
|
229
246
|
return typeof messageLike?._getType === "function";
|
|
230
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* @deprecated Use {@link BaseMessageChunk.isInstance} instead
|
|
250
|
+
*/
|
|
231
251
|
function isBaseMessageChunk(messageLike) {
|
|
232
252
|
return isBaseMessage(messageLike) && typeof messageLike.concat === "function";
|
|
233
253
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","names":["firstContent: MessageContent","secondContent: MessageContent","left?: \"success\" | \"error\"","right?: \"success\" | \"error\"","obj: any","depthLimit: number","currentDepth: number","obj","result: Record<string, unknown>","fields: string | BaseMessageFields","kwargs?: Record<string, unknown>","blocks: Array<ContentBlock>","blocks","value: string | undefined","depth: number | null","value?: unknown","left: Record<string, any>","right: Record<string, any>","left?: any[]","right?: any[]","left: T | undefined","right: T | undefined","x: BaseMessageLike","messageLike?: unknown"],"sources":["../../src/messages/base.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { StringWithAutocomplete } from \"../utils/types/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { isDataContentBlock } from \"./content/data.js\";\nimport { convertToV1FromAnthropicInput } from \"./block_translators/anthropic.js\";\nimport { convertToV1FromDataContent } from \"./block_translators/data.js\";\nimport { convertToV1FromChatCompletionsInput } from \"./block_translators/openai.js\";\n\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additional_kwargs?: Record<string, any>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\n\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\n\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\n\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\n\nexport type MessageType =\n | \"human\"\n | \"ai\"\n | \"generic\"\n | \"developer\"\n | \"system\"\n | \"function\"\n | \"tool\"\n | \"remove\";\n\nexport type MessageContent = string | Array<ContentBlock>;\n\nexport interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n}\n\nexport type BaseMessageFields = {\n name?: string;\n content?: MessageContent;\n contentBlocks?: Array<ContentBlock.Standard>;\n additional_kwargs?: {\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n function_call?: FunctionCall;\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n tool_calls?: OpenAIToolCall[];\n [key: string]: unknown;\n };\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n /**\n * An optional unique identifier for the message. This should ideally be\n * provided by the provider/model which created the message.\n */\n id?: string;\n};\n\nexport function mergeContent(\n firstContent: MessageContent,\n secondContent: MessageContent\n): MessageContent {\n // If first content is a string\n if (typeof firstContent === \"string\") {\n if (firstContent === \"\") {\n return secondContent;\n }\n if (typeof secondContent === \"string\") {\n return firstContent + secondContent;\n } else if (\n Array.isArray(secondContent) &&\n secondContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n {\n type: \"text\",\n source_type: \"text\",\n text: firstContent,\n },\n ...secondContent,\n ];\n } else {\n return [{ type: \"text\", text: firstContent }, ...secondContent];\n }\n // If both are arrays\n } else if (Array.isArray(secondContent)) {\n return (\n _mergeLists(firstContent, secondContent) ?? [\n ...firstContent,\n ...secondContent,\n ]\n );\n } else {\n if (secondContent === \"\") {\n return firstContent;\n } else if (\n Array.isArray(firstContent) &&\n firstContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n ...firstContent,\n {\n type: \"file\",\n source_type: \"text\",\n text: secondContent,\n },\n ];\n } else {\n return [...firstContent, { type: \"text\", text: secondContent }];\n }\n }\n}\n\n/**\n * 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n * it will return 'success'.\n *\n * @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n * @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n * @returns {\"success\" | \"error\"} The 'merged' value.\n */\nexport function _mergeStatus(\n left?: \"success\" | \"error\",\n right?: \"success\" | \"error\"\n): \"success\" | \"error\" | undefined {\n if (left === \"error\" || right === \"error\") {\n return \"error\";\n }\n return \"success\";\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function helper(obj: any, currentDepth: number): any {\n if (typeof obj !== \"object\" || obj === null || obj === undefined) {\n return obj;\n }\n if (currentDepth >= depthLimit) {\n if (Array.isArray(obj)) {\n return \"[Array]\";\n }\n return \"[Object]\";\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => helper(item, currentDepth + 1));\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = helper(obj[key], currentDepth + 1);\n }\n return result;\n }\n\n return JSON.stringify(helper(obj, 0), null, 2);\n}\n\n/**\n * Base class for all types of messages in a conversation. It includes\n * properties like `content`, `name`, and `additional_kwargs`. It also\n * includes methods like `toDict()` and `_getType()`.\n */\nexport abstract class BaseMessage extends Serializable {\n lc_namespace = [\"langchain_core\", \"messages\"];\n\n lc_serializable = true;\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n additional_kwargs: \"additional_kwargs\",\n response_metadata: \"response_metadata\",\n };\n }\n\n /**\n * Get text content of the message.\n */\n get text(): string {\n if (typeof this.content === \"string\") {\n return this.content;\n }\n\n if (!Array.isArray(this.content)) return \"\";\n return this.content\n .map((c) => {\n if (typeof c === \"string\") return c;\n if (c.type === \"text\") return c.text;\n return \"\";\n })\n .join(\"\");\n }\n\n /** The content of the message. */\n content: MessageContent;\n\n /** The name of the message sender in a multi-user chat. */\n name?: string;\n\n /** Additional keyword arguments */\n additional_kwargs: NonNullable<BaseMessageFields[\"additional_kwargs\"]>;\n\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n response_metadata: NonNullable<BaseMessageFields[\"response_metadata\"]>;\n\n /**\n * An optional unique identifier for the message. This should ideally be\n * provided by the provider/model which created the message.\n */\n id?: string;\n\n /**\n * @deprecated Use .getType() instead or import the proper typeguard.\n * For example:\n *\n * ```ts\n * import { isAIMessage } from \"@langchain/core/messages\";\n *\n * const message = new AIMessage(\"Hello!\");\n * isAIMessage(message); // true\n * ```\n */\n abstract _getType(): MessageType;\n\n /** The type of the message. */\n getType(): MessageType {\n return this._getType();\n }\n\n constructor(\n fields: string | BaseMessageFields,\n /** @deprecated */\n kwargs?: Record<string, unknown>\n ) {\n if (typeof fields === \"string\") {\n // eslint-disable-next-line no-param-reassign\n fields = {\n content: fields,\n additional_kwargs: kwargs,\n response_metadata: {},\n };\n }\n // Make sure the default value for additional_kwargs is passed into super() for serialization\n if (!fields.additional_kwargs) {\n // eslint-disable-next-line no-param-reassign\n fields.additional_kwargs = {};\n }\n if (!fields.response_metadata) {\n // eslint-disable-next-line no-param-reassign\n fields.response_metadata = {};\n }\n super(fields);\n this.name = fields.name;\n if (fields.content === undefined && fields.contentBlocks !== undefined) {\n this.content = fields.contentBlocks;\n this.response_metadata = {\n output_version: \"v1\",\n ...fields.response_metadata,\n };\n } else if (fields.content !== undefined) {\n this.content = fields.content ?? [];\n this.response_metadata = fields.response_metadata;\n } else {\n this.content = [];\n this.response_metadata = fields.response_metadata;\n }\n this.additional_kwargs = fields.additional_kwargs;\n this.id = fields.id;\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n const blocks: Array<ContentBlock> =\n typeof this.content === \"string\"\n ? [{ type: \"text\", text: this.content }]\n : this.content;\n const parsingSteps = [\n convertToV1FromDataContent,\n convertToV1FromChatCompletionsInput,\n convertToV1FromAnthropicInput,\n ];\n const parsedBlocks = parsingSteps.reduce(\n (blocks, step) => step(blocks),\n blocks\n );\n // this assertion is safe since we're planning to allow\n // untyped content blocks for v1 messages (directed through message structures).\n return parsedBlocks as Array<ContentBlock.Standard>;\n }\n\n toDict(): StoredMessage {\n return {\n type: this._getType(),\n data: (this.toJSON() as SerializedConstructor)\n .kwargs as StoredMessageData,\n };\n }\n\n static lc_name() {\n return \"BaseMessage\";\n }\n\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown> {\n return {\n id: this.id,\n content: this.content,\n name: this.name,\n additional_kwargs: this.additional_kwargs,\n response_metadata: this.response_metadata,\n };\n }\n\n // this private method is used to update the ID for the runtime\n // value as well as in lc_kwargs for serialisation\n _updateId(value: string | undefined) {\n this.id = value;\n\n // lc_attributes wouldn't work here, because jest compares the\n // whole object\n this.lc_kwargs.id = value;\n }\n\n get [Symbol.toStringTag]() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (this.constructor as any).lc_name();\n }\n\n // Override the default behavior of console.log\n [Symbol.for(\"nodejs.util.inspect.custom\")](depth: number | null) {\n if (depth === null) {\n return this;\n }\n const printable = stringifyWithDepthLimit(\n this._printableFields,\n Math.max(4, depth)\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\n }\n}\n\n/**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\nexport type OpenAIToolCall = {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The function that the model called.\n */\n function: FunctionCall;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n\n index?: number;\n};\n\nexport function isOpenAIToolCallArray(\n value?: unknown\n): value is OpenAIToolCall[] {\n return (\n Array.isArray(value) &&\n value.every((v) => typeof (v as OpenAIToolCall).index === \"number\")\n );\n}\n\nexport function _mergeDicts(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\n const merged = { ...left };\n for (const [key, value] of Object.entries(right)) {\n if (merged[key] == null) {\n merged[key] = value;\n } else if (value == null) {\n continue;\n } else if (\n typeof merged[key] !== typeof value ||\n Array.isArray(merged[key]) !== Array.isArray(value)\n ) {\n throw new Error(\n `field[${key}] already exists in the message chunk, but with a different type.`\n );\n } else if (typeof merged[key] === \"string\") {\n if (key === \"type\") {\n // Do not merge 'type' fields\n continue;\n } else if ([\"id\", \"output_version\", \"model_provider\"].includes(key)) {\n // Keep the incoming value for these fields\n merged[key] = value;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value);\n } else if (merged[key] === value) {\n continue;\n } else {\n console.warn(\n `field[${key}] already exists in this message chunk and value has unsupported type.`\n );\n }\n }\n return merged;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeLists(left?: any[], right?: any[]) {\n if (left === undefined && right === undefined) {\n return undefined;\n } else if (left === undefined || right === undefined) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n if (\n typeof item === \"object\" &&\n \"index\" in item &&\n typeof item.index === \"number\"\n ) {\n const toMerge = merged.findIndex(\n (leftItem) => leftItem.index === item.index\n );\n if (toMerge !== -1) {\n merged[toMerge] = _mergeDicts(merged[toMerge], item);\n } else {\n merged.push(item);\n }\n } else if (\n typeof item === \"object\" &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n // No-op - skip empty text blocks\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined\n): T {\n if (!left && !right) {\n throw new Error(\"Cannot merge two undefined objects.\");\n }\n if (!left || !right) {\n return left || (right as T);\n } else if (typeof left !== typeof right) {\n throw new Error(\n `Cannot merge objects of different types.\\nLeft ${typeof left}\\nRight ${typeof right}`\n );\n } else if (typeof left === \"string\" && typeof right === \"string\") {\n return (left + right) as T;\n } else if (Array.isArray(left) && Array.isArray(right)) {\n return _mergeLists(left, right) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(left, right) as T;\n } else if (left === right) {\n return left;\n } else {\n throw new Error(\n `Can not merge objects of different types.\\nLeft ${left}\\nRight ${right}`\n );\n }\n}\n\n/**\n * Represents a chunk of a message, which can be concatenated with other\n * message chunks. It includes a method `_merge_kwargs_dict()` for merging\n * additional keyword arguments from another `BaseMessageChunk` into this\n * one. It also overrides the `__add__()` method to support concatenation\n * of `BaseMessageChunk` instances.\n */\nexport abstract class BaseMessageChunk extends BaseMessage {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk;\n}\n\nexport type MessageFieldWithRole = {\n role: StringWithAutocomplete<\"user\" | \"assistant\" | MessageType>;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\n\nexport function _isMessageFieldWithRole(\n x: BaseMessageLike\n): x is MessageFieldWithRole {\n return typeof (x as MessageFieldWithRole).role === \"string\";\n}\n\nexport type BaseMessageLike =\n | BaseMessage\n | MessageFieldWithRole\n | [\n StringWithAutocomplete<\n MessageType | \"user\" | \"assistant\" | \"placeholder\"\n >,\n MessageContent\n ]\n | string\n /**\n * @deprecated Specifying \"type\" is deprecated and will be removed in 0.4.0.\n */\n | ({\n type: MessageType | \"user\" | \"assistant\" | \"placeholder\";\n } & BaseMessageFields &\n Record<string, unknown>)\n | SerializedConstructor;\n\nexport function isBaseMessage(\n messageLike?: unknown\n): messageLike is BaseMessage {\n return typeof (messageLike as BaseMessage)?._getType === \"function\";\n}\n\nexport function isBaseMessageChunk(\n messageLike?: unknown\n): messageLike is BaseMessageChunk {\n return (\n isBaseMessage(messageLike) &&\n typeof (messageLike as BaseMessageChunk).concat === \"function\"\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","names":["firstContent: MessageContent","secondContent: MessageContent","left?: \"success\" | \"error\"","right?: \"success\" | \"error\"","obj: any","depthLimit: number","currentDepth: number","obj","result: Record<string, unknown>","arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>","fields: BaseMessageFields<TStructure, TRole>","blocks: Array<ContentBlock>","blocks","obj: unknown","value: string | undefined","depth: number | null","value?: unknown","left: Record<string, any>","right: Record<string, any>","left?: any[]","right?: any[]","left: T | undefined","right: T | undefined","x: BaseMessageLike","messageLike?: unknown"],"sources":["../../src/messages/base.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { isDataContentBlock } from \"./content/data.js\";\nimport { convertToV1FromAnthropicInput } from \"./block_translators/anthropic.js\";\nimport { convertToV1FromDataContent } from \"./block_translators/data.js\";\nimport { convertToV1FromChatCompletionsInput } from \"./block_translators/openai.js\";\nimport {\n $InferMessageContent,\n $InferResponseMetadata,\n MessageStructure,\n MessageType,\n isMessage,\n Message,\n} from \"./message.js\";\n\n/** @internal */\nconst MESSAGE_SYMBOL = Symbol.for(\"langchain.message\");\n\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additional_kwargs?: Record<string, any>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\n\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\n\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\n\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\n\nexport type MessageContent = string | Array<ContentBlock>;\n\nexport interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n}\n\nexport type BaseMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType\n> = {\n id?: string;\n name?: string;\n content?: $InferMessageContent<TStructure, TRole>;\n contentBlocks?: Array<ContentBlock.Standard>;\n /** @deprecated */\n additional_kwargs?: {\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n function_call?: FunctionCall;\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n tool_calls?: OpenAIToolCall[];\n [key: string]: unknown;\n };\n response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>;\n};\n\nexport function mergeContent(\n firstContent: MessageContent,\n secondContent: MessageContent\n): MessageContent {\n // If first content is a string\n if (typeof firstContent === \"string\") {\n if (firstContent === \"\") {\n return secondContent;\n }\n if (typeof secondContent === \"string\") {\n return firstContent + secondContent;\n } else if (\n Array.isArray(secondContent) &&\n secondContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n {\n type: \"text\",\n source_type: \"text\",\n text: firstContent,\n },\n ...secondContent,\n ];\n } else {\n return [{ type: \"text\", text: firstContent }, ...secondContent];\n }\n // If both are arrays\n } else if (Array.isArray(secondContent)) {\n return (\n _mergeLists(firstContent, secondContent) ?? [\n ...firstContent,\n ...secondContent,\n ]\n );\n } else {\n if (secondContent === \"\") {\n return firstContent;\n } else if (\n Array.isArray(firstContent) &&\n firstContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n ...firstContent,\n {\n type: \"file\",\n source_type: \"text\",\n text: secondContent,\n },\n ];\n } else {\n return [...firstContent, { type: \"text\", text: secondContent }];\n }\n }\n}\n\n/**\n * 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n * it will return 'success'.\n *\n * @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n * @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n * @returns {\"success\" | \"error\"} The 'merged' value.\n */\nexport function _mergeStatus(\n left?: \"success\" | \"error\",\n right?: \"success\" | \"error\"\n): \"success\" | \"error\" | undefined {\n if (left === \"error\" || right === \"error\") {\n return \"error\";\n }\n return \"success\";\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function helper(obj: any, currentDepth: number): any {\n if (typeof obj !== \"object\" || obj === null || obj === undefined) {\n return obj;\n }\n if (currentDepth >= depthLimit) {\n if (Array.isArray(obj)) {\n return \"[Array]\";\n }\n return \"[Object]\";\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => helper(item, currentDepth + 1));\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = helper(obj[key], currentDepth + 1);\n }\n return result;\n }\n\n return JSON.stringify(helper(obj, 0), null, 2);\n}\n\n/**\n * Base class for all types of messages in a conversation. It includes\n * properties like `content`, `name`, and `additional_kwargs`. It also\n * includes methods like `toDict()` and `_getType()`.\n */\nexport abstract class BaseMessage<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType\n >\n extends Serializable\n implements Message<TStructure, TRole>\n{\n lc_namespace = [\"langchain_core\", \"messages\"];\n\n lc_serializable = true;\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n additional_kwargs: \"additional_kwargs\",\n response_metadata: \"response_metadata\",\n };\n }\n\n readonly [MESSAGE_SYMBOL] = true as const;\n\n abstract readonly type: TRole;\n\n id?: string;\n\n name?: string;\n\n content: $InferMessageContent<TStructure, TRole>;\n\n additional_kwargs: NonNullable<\n BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]\n >;\n\n response_metadata: NonNullable<\n BaseMessageFields<TStructure, TRole>[\"response_metadata\"]\n >;\n\n /**\n * @deprecated Use .getType() instead or import the proper typeguard.\n * For example:\n *\n * ```ts\n * import { isAIMessage } from \"@langchain/core/messages\";\n *\n * const message = new AIMessage(\"Hello!\");\n * isAIMessage(message); // true\n * ```\n */\n _getType(): MessageType {\n return this.type;\n }\n\n /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType {\n return this._getType();\n }\n\n constructor(\n arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>\n ) {\n const fields: BaseMessageFields<TStructure, TRole> =\n typeof arg === \"string\" || Array.isArray(arg) ? { content: arg } : arg;\n if (!fields.additional_kwargs) {\n fields.additional_kwargs = {};\n }\n if (!fields.response_metadata) {\n fields.response_metadata = {};\n }\n super(fields);\n this.name = fields.name;\n if (fields.content === undefined && fields.contentBlocks !== undefined) {\n this.content = fields.contentBlocks as $InferMessageContent<\n TStructure,\n TRole\n >;\n this.response_metadata = {\n output_version: \"v1\",\n ...fields.response_metadata,\n };\n } else if (fields.content !== undefined) {\n this.content = fields.content ?? [];\n this.response_metadata = fields.response_metadata;\n } else {\n this.content = [] as $InferMessageContent<TStructure, TRole>;\n this.response_metadata = fields.response_metadata;\n }\n this.additional_kwargs = fields.additional_kwargs;\n this.id = fields.id;\n }\n\n /** Get text content of the message. */\n get text(): string {\n if (typeof this.content === \"string\") {\n return this.content;\n }\n if (!Array.isArray(this.content)) return \"\";\n return this.content\n .map((c) => {\n if (typeof c === \"string\") return c;\n if (c.type === \"text\") return c.text;\n return \"\";\n })\n .join(\"\");\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n const blocks: Array<ContentBlock> =\n typeof this.content === \"string\"\n ? [{ type: \"text\", text: this.content }]\n : this.content;\n const parsingSteps = [\n convertToV1FromDataContent,\n convertToV1FromChatCompletionsInput,\n convertToV1FromAnthropicInput,\n ];\n const parsedBlocks = parsingSteps.reduce(\n (blocks, step) => step(blocks),\n blocks\n );\n return parsedBlocks as Array<ContentBlock.Standard>;\n }\n\n toDict(): StoredMessage {\n return {\n type: this._getType(),\n data: (this.toJSON() as SerializedConstructor)\n .kwargs as StoredMessageData,\n };\n }\n\n static lc_name() {\n return \"BaseMessage\";\n }\n\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown> {\n return {\n id: this.id,\n content: this.content,\n name: this.name,\n additional_kwargs: this.additional_kwargs,\n response_metadata: this.response_metadata,\n };\n }\n\n static isInstance(obj: unknown): obj is BaseMessage {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n MESSAGE_SYMBOL in obj &&\n obj[MESSAGE_SYMBOL] === true &&\n isMessage(obj)\n );\n }\n\n // this private method is used to update the ID for the runtime\n // value as well as in lc_kwargs for serialisation\n _updateId(value: string | undefined) {\n this.id = value;\n\n // lc_attributes wouldn't work here, because jest compares the\n // whole object\n this.lc_kwargs.id = value;\n }\n\n get [Symbol.toStringTag]() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (this.constructor as any).lc_name();\n }\n\n // Override the default behavior of console.log\n [Symbol.for(\"nodejs.util.inspect.custom\")](depth: number | null) {\n if (depth === null) {\n return this;\n }\n const printable = stringifyWithDepthLimit(\n this._printableFields,\n Math.max(4, depth)\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\n }\n}\n\n/**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\nexport type OpenAIToolCall = {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The function that the model called.\n */\n function: FunctionCall;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n\n index?: number;\n};\n\nexport function isOpenAIToolCallArray(\n value?: unknown\n): value is OpenAIToolCall[] {\n return (\n Array.isArray(value) &&\n value.every((v) => typeof (v as OpenAIToolCall).index === \"number\")\n );\n}\n\nexport function _mergeDicts(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\n const merged = { ...left };\n for (const [key, value] of Object.entries(right)) {\n if (merged[key] == null) {\n merged[key] = value;\n } else if (value == null) {\n continue;\n } else if (\n typeof merged[key] !== typeof value ||\n Array.isArray(merged[key]) !== Array.isArray(value)\n ) {\n throw new Error(\n `field[${key}] already exists in the message chunk, but with a different type.`\n );\n } else if (typeof merged[key] === \"string\") {\n if (key === \"type\") {\n // Do not merge 'type' fields\n continue;\n } else if ([\"id\", \"output_version\", \"model_provider\"].includes(key)) {\n // Keep the incoming value for these fields\n merged[key] = value;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value);\n } else if (merged[key] === value) {\n continue;\n } else {\n console.warn(\n `field[${key}] already exists in this message chunk and value has unsupported type.`\n );\n }\n }\n return merged;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeLists(left?: any[], right?: any[]) {\n if (left === undefined && right === undefined) {\n return undefined;\n } else if (left === undefined || right === undefined) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n if (\n typeof item === \"object\" &&\n \"index\" in item &&\n typeof item.index === \"number\"\n ) {\n const toMerge = merged.findIndex(\n (leftItem) => leftItem.index === item.index\n );\n if (toMerge !== -1) {\n merged[toMerge] = _mergeDicts(merged[toMerge], item);\n } else {\n merged.push(item);\n }\n } else if (\n typeof item === \"object\" &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n // No-op - skip empty text blocks\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined\n): T {\n if (!left && !right) {\n throw new Error(\"Cannot merge two undefined objects.\");\n }\n if (!left || !right) {\n return left || (right as T);\n } else if (typeof left !== typeof right) {\n throw new Error(\n `Cannot merge objects of different types.\\nLeft ${typeof left}\\nRight ${typeof right}`\n );\n } else if (typeof left === \"string\" && typeof right === \"string\") {\n return (left + right) as T;\n } else if (Array.isArray(left) && Array.isArray(right)) {\n return _mergeLists(left, right) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(left, right) as T;\n } else if (left === right) {\n return left;\n } else {\n throw new Error(\n `Can not merge objects of different types.\\nLeft ${left}\\nRight ${right}`\n );\n }\n}\n\n/**\n * Represents a chunk of a message, which can be concatenated with other\n * message chunks. It includes a method `_merge_kwargs_dict()` for merging\n * additional keyword arguments from another `BaseMessageChunk` into this\n * one. It also overrides the `__add__()` method to support concatenation\n * of `BaseMessageChunk` instances.\n */\nexport abstract class BaseMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType\n> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n\n static isInstance(obj: unknown): obj is BaseMessageChunk {\n return (\n super.isInstance(obj) &&\n \"concat\" in obj &&\n typeof obj.concat === \"function\"\n );\n }\n}\n\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\n\nexport function _isMessageFieldWithRole(\n x: BaseMessageLike\n): x is MessageFieldWithRole {\n return typeof (x as MessageFieldWithRole).role === \"string\";\n}\n\nexport type BaseMessageLike =\n | BaseMessage\n | MessageFieldWithRole\n | [MessageType, MessageContent]\n | string\n /**\n * @deprecated Specifying \"type\" is deprecated and will be removed in 0.4.0.\n */\n | ({\n type: MessageType | \"user\" | \"assistant\" | \"placeholder\";\n } & BaseMessageFields &\n Record<string, unknown>)\n | SerializedConstructor;\n\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport function isBaseMessage(\n messageLike?: unknown\n): messageLike is BaseMessage {\n return typeof (messageLike as BaseMessage)?._getType === \"function\";\n}\n\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport function isBaseMessageChunk(\n messageLike?: unknown\n): messageLike is BaseMessageChunk {\n return (\n isBaseMessage(messageLike) &&\n typeof (messageLike as BaseMessageChunk).concat === \"function\"\n );\n}\n"],"mappings":"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"}
|
package/dist/messages/chat.cjs
CHANGED
|
@@ -8,23 +8,21 @@ var ChatMessage = class ChatMessage extends require_base.BaseMessage {
|
|
|
8
8
|
static lc_name() {
|
|
9
9
|
return "ChatMessage";
|
|
10
10
|
}
|
|
11
|
+
type = "generic";
|
|
11
12
|
role;
|
|
12
13
|
static _chatMessageClass() {
|
|
13
14
|
return ChatMessage;
|
|
14
15
|
}
|
|
15
16
|
constructor(fields, role) {
|
|
16
|
-
if (typeof fields === "string") fields = {
|
|
17
|
+
if (typeof fields === "string" || Array.isArray(fields)) fields = {
|
|
17
18
|
content: fields,
|
|
18
19
|
role
|
|
19
20
|
};
|
|
20
21
|
super(fields);
|
|
21
22
|
this.role = fields.role;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
return "generic";
|
|
25
|
-
}
|
|
26
|
-
static isInstance(message) {
|
|
27
|
-
return message._getType() === "generic";
|
|
24
|
+
static isInstance(obj) {
|
|
25
|
+
return super.isInstance(obj) && obj.type === "generic";
|
|
28
26
|
}
|
|
29
27
|
get _printableFields() {
|
|
30
28
|
return {
|
|
@@ -37,24 +35,23 @@ var ChatMessage = class ChatMessage extends require_base.BaseMessage {
|
|
|
37
35
|
* Represents a chunk of a chat message, which can be concatenated with
|
|
38
36
|
* other chat message chunks.
|
|
39
37
|
*/
|
|
40
|
-
var ChatMessageChunk = class
|
|
38
|
+
var ChatMessageChunk = class extends require_base.BaseMessageChunk {
|
|
41
39
|
static lc_name() {
|
|
42
40
|
return "ChatMessageChunk";
|
|
43
41
|
}
|
|
42
|
+
type = "generic";
|
|
44
43
|
role;
|
|
45
44
|
constructor(fields, role) {
|
|
46
|
-
if (typeof fields === "string") fields = {
|
|
45
|
+
if (typeof fields === "string" || Array.isArray(fields)) fields = {
|
|
47
46
|
content: fields,
|
|
48
47
|
role
|
|
49
48
|
};
|
|
50
49
|
super(fields);
|
|
51
50
|
this.role = fields.role;
|
|
52
51
|
}
|
|
53
|
-
_getType() {
|
|
54
|
-
return "generic";
|
|
55
|
-
}
|
|
56
52
|
concat(chunk) {
|
|
57
|
-
|
|
53
|
+
const Cls = this.constructor;
|
|
54
|
+
return new Cls({
|
|
58
55
|
content: require_base.mergeContent(this.content, chunk.content),
|
|
59
56
|
additional_kwargs: require_base._mergeDicts(this.additional_kwargs, chunk.additional_kwargs),
|
|
60
57
|
response_metadata: require_base._mergeDicts(this.response_metadata, chunk.response_metadata),
|
|
@@ -62,6 +59,9 @@ var ChatMessageChunk = class ChatMessageChunk extends require_base.BaseMessageCh
|
|
|
62
59
|
id: this.id ?? chunk.id
|
|
63
60
|
});
|
|
64
61
|
}
|
|
62
|
+
static isInstance(obj) {
|
|
63
|
+
return super.isInstance(obj) && obj.type === "generic";
|
|
64
|
+
}
|
|
65
65
|
get _printableFields() {
|
|
66
66
|
return {
|
|
67
67
|
...super._printableFields,
|
|
@@ -69,9 +69,15 @@ var ChatMessageChunk = class ChatMessageChunk extends require_base.BaseMessageCh
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated Use {@link ChatMessage.isInstance} instead
|
|
74
|
+
*/
|
|
72
75
|
function isChatMessage(x) {
|
|
73
76
|
return x._getType() === "generic";
|
|
74
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Use {@link ChatMessageChunk.isInstance} instead
|
|
80
|
+
*/
|
|
75
81
|
function isChatMessageChunk(x) {
|
|
76
82
|
return x._getType() === "generic";
|
|
77
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.cjs","names":["BaseMessage","fields
|
|
1
|
+
{"version":3,"file":"chat.cjs","names":["BaseMessage","fields:\n | $InferMessageContent<TStructure, \"generic\">\n | ChatMessageFields<TStructure>","role?: string","obj: unknown","BaseMessageChunk","chunk: ChatMessageChunk<TStructure>","mergeContent","_mergeDicts","x: BaseMessage","x: BaseMessageChunk"],"sources":["../../src/messages/chat.ts"],"sourcesContent":["import {\n BaseMessage,\n BaseMessageChunk,\n type BaseMessageFields,\n mergeContent,\n _mergeDicts,\n} from \"./base.js\";\nimport { $InferMessageContent, MessageStructure } from \"./message.js\";\nimport { Constructor } from \"./utils.js\";\n\nexport interface ChatMessageFields<\n TStructure extends MessageStructure = MessageStructure\n> extends BaseMessageFields<TStructure, \"generic\"> {\n role: string;\n}\n\n/**\n * Represents a chat message in a conversation.\n */\nexport class ChatMessage<TStructure extends MessageStructure = MessageStructure>\n extends BaseMessage<TStructure, \"generic\">\n implements ChatMessageFields<TStructure>\n{\n static lc_name() {\n return \"ChatMessage\";\n }\n\n readonly type = \"generic\" as const;\n\n role: string;\n\n static _chatMessageClass(): typeof ChatMessage {\n return ChatMessage;\n }\n\n constructor(\n content: $InferMessageContent<TStructure, \"generic\">,\n role: string\n );\n\n constructor(fields: ChatMessageFields<TStructure>);\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"generic\">\n | ChatMessageFields<TStructure>,\n role?: string\n ) {\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n // eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n fields = { content: fields, role: role! };\n }\n super(fields);\n this.role = fields.role;\n }\n\n static isInstance(obj: unknown): obj is ChatMessage {\n return super.isInstance(obj) && obj.type === \"generic\";\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n role: this.role,\n };\n }\n}\n\n/**\n * Represents a chunk of a chat message, which can be concatenated with\n * other chat message chunks.\n */\nexport class ChatMessageChunk<\n TStructure extends MessageStructure = MessageStructure\n> extends BaseMessageChunk<TStructure, \"generic\"> {\n static lc_name() {\n return \"ChatMessageChunk\";\n }\n\n readonly type = \"generic\" as const;\n\n role: string;\n\n constructor(\n content: $InferMessageContent<TStructure, \"generic\">,\n role: string\n );\n\n constructor(fields: ChatMessageFields<TStructure>);\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"generic\">\n | ChatMessageFields<TStructure>,\n role?: string\n ) {\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n // eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n fields = { content: fields, role: role! };\n }\n super(fields);\n this.role = fields.role;\n }\n\n concat(chunk: ChatMessageChunk<TStructure>) {\n const Cls = this.constructor as Constructor<this>;\n return new Cls({\n content: mergeContent(this.content, chunk.content),\n additional_kwargs: _mergeDicts(\n this.additional_kwargs,\n chunk.additional_kwargs\n ),\n response_metadata: _mergeDicts(\n this.response_metadata,\n chunk.response_metadata\n ),\n role: this.role,\n id: this.id ?? chunk.id,\n });\n }\n\n static isInstance(obj: unknown): obj is ChatMessageChunk {\n return super.isInstance(obj) && obj.type === \"generic\";\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n role: this.role,\n };\n }\n}\n\n/**\n * @deprecated Use {@link ChatMessage.isInstance} instead\n */\nexport function isChatMessage(x: BaseMessage): x is ChatMessage {\n return x._getType() === \"generic\";\n}\n\n/**\n * @deprecated Use {@link ChatMessageChunk.isInstance} instead\n */\nexport function isChatMessageChunk(x: BaseMessageChunk): x is ChatMessageChunk {\n return x._getType() === \"generic\";\n}\n"],"mappings":";;;;;;AAmBA,IAAa,cAAb,MAAa,oBACHA,yBAEV;CACE,OAAO,UAAU;AACf,SAAO;CACR;CAED,AAAS,OAAO;CAEhB;CAEA,OAAO,oBAAwC;AAC7C,SAAO;CACR;CASD,YACEC,QAGAC,MACA;AACA,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,EAErD,SAAS;GAAE,SAAS;GAAc;EAAO;EAE3C,MAAM,OAAO;EACb,KAAK,OAAO,OAAO;CACpB;CAED,OAAO,WAAWC,KAAkC;AAClD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;CAED,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;EACZ;CACF;AACF;;;;;AAMD,IAAa,mBAAb,cAEUC,8BAAwC;CAChD,OAAO,UAAU;AACf,SAAO;CACR;CAED,AAAS,OAAO;CAEhB;CASA,YACEH,QAGAC,MACA;AACA,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,EAErD,SAAS;GAAE,SAAS;GAAc;EAAO;EAE3C,MAAM,OAAO;EACb,KAAK,OAAO,OAAO;CACpB;CAED,OAAOG,OAAqC;EAC1C,MAAM,MAAM,KAAK;AACjB,SAAO,IAAI,IAAI;GACb,SAASC,0BAAa,KAAK,SAAS,MAAM,QAAQ;GAClD,mBAAmBC,yBACjB,KAAK,mBACL,MAAM,kBACP;GACD,mBAAmBA,yBACjB,KAAK,mBACL,MAAM,kBACP;GACD,MAAM,KAAK;GACX,IAAI,KAAK,MAAM,MAAM;EACtB;CACF;CAED,OAAO,WAAWJ,KAAuC;AACvD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;CAED,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;EACZ;CACF;AACF;;;;AAKD,SAAgB,cAAcK,GAAkC;AAC9D,QAAO,EAAE,UAAU,KAAK;AACzB;;;;AAKD,SAAgB,mBAAmBC,GAA4C;AAC7E,QAAO,EAAE,UAAU,KAAK;AACzB"}
|
package/dist/messages/chat.d.cts
CHANGED
|
@@ -1,37 +1,45 @@
|
|
|
1
|
-
import { BaseMessage, BaseMessageChunk, BaseMessageFields
|
|
1
|
+
import { BaseMessage, BaseMessageChunk, BaseMessageFields } from "./base.cjs";
|
|
2
|
+
import { $InferMessageContent, MessageStructure } from "./message.cjs";
|
|
2
3
|
|
|
3
4
|
//#region src/messages/chat.d.ts
|
|
4
|
-
interface
|
|
5
|
+
interface ChatMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, "generic"> {
|
|
5
6
|
role: string;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
9
|
* Represents a chat message in a conversation.
|
|
9
10
|
*/
|
|
10
|
-
declare class ChatMessage extends BaseMessage implements
|
|
11
|
+
declare class ChatMessage<TStructure extends MessageStructure = MessageStructure> extends BaseMessage<TStructure, "generic"> implements ChatMessageFields<TStructure> {
|
|
11
12
|
static lc_name(): string;
|
|
13
|
+
readonly type: "generic";
|
|
12
14
|
role: string;
|
|
13
15
|
static _chatMessageClass(): typeof ChatMessage;
|
|
14
|
-
constructor(content:
|
|
15
|
-
constructor(fields:
|
|
16
|
-
|
|
17
|
-
static isInstance(message: BaseMessage): message is ChatMessage;
|
|
16
|
+
constructor(content: $InferMessageContent<TStructure, "generic">, role: string);
|
|
17
|
+
constructor(fields: ChatMessageFields<TStructure>);
|
|
18
|
+
static isInstance(obj: unknown): obj is ChatMessage;
|
|
18
19
|
get _printableFields(): Record<string, unknown>;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Represents a chunk of a chat message, which can be concatenated with
|
|
22
23
|
* other chat message chunks.
|
|
23
24
|
*/
|
|
24
|
-
declare class ChatMessageChunk extends BaseMessageChunk {
|
|
25
|
+
declare class ChatMessageChunk<TStructure extends MessageStructure = MessageStructure> extends BaseMessageChunk<TStructure, "generic"> {
|
|
25
26
|
static lc_name(): string;
|
|
27
|
+
readonly type: "generic";
|
|
26
28
|
role: string;
|
|
27
|
-
constructor(content:
|
|
28
|
-
constructor(fields:
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
constructor(content: $InferMessageContent<TStructure, "generic">, role: string);
|
|
30
|
+
constructor(fields: ChatMessageFields<TStructure>);
|
|
31
|
+
concat(chunk: ChatMessageChunk<TStructure>): this;
|
|
32
|
+
static isInstance(obj: unknown): obj is ChatMessageChunk;
|
|
31
33
|
get _printableFields(): Record<string, unknown>;
|
|
32
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated Use {@link ChatMessage.isInstance} instead
|
|
37
|
+
*/
|
|
33
38
|
declare function isChatMessage(x: BaseMessage): x is ChatMessage;
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated Use {@link ChatMessageChunk.isInstance} instead
|
|
41
|
+
*/
|
|
34
42
|
declare function isChatMessageChunk(x: BaseMessageChunk): x is ChatMessageChunk;
|
|
35
43
|
//#endregion
|
|
36
|
-
export { ChatMessage, ChatMessageChunk,
|
|
44
|
+
export { ChatMessage, ChatMessageChunk, ChatMessageFields, isChatMessage, isChatMessageChunk };
|
|
37
45
|
//# sourceMappingURL=chat.d.cts.map
|