@langchain/core 0.2.14 → 0.2.16
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/README.md +1 -1
- package/caches.cjs +1 -1
- package/caches.d.cts +1 -1
- package/caches.d.ts +1 -1
- package/caches.js +1 -1
- package/callbacks/dispatch/web.cjs +1 -0
- package/callbacks/dispatch/web.d.cts +1 -0
- package/callbacks/dispatch/web.d.ts +1 -0
- package/callbacks/dispatch/web.js +1 -0
- package/callbacks/dispatch.cjs +1 -0
- package/callbacks/dispatch.d.cts +1 -0
- package/callbacks/dispatch.d.ts +1 -0
- package/callbacks/dispatch.js +1 -0
- package/dist/{caches.cjs → caches/base.cjs} +6 -6
- package/dist/{caches.d.ts → caches/base.d.ts} +7 -7
- package/dist/{caches.js → caches/base.js} +6 -6
- package/dist/caches/tests/in_memory_cache.test.d.ts +1 -0
- package/dist/caches/tests/in_memory_cache.test.js +33 -0
- package/dist/callbacks/base.cjs +8 -0
- package/dist/callbacks/base.d.ts +16 -10
- package/dist/callbacks/base.js +8 -0
- package/dist/callbacks/dispatch/index.cjs +49 -0
- package/dist/callbacks/dispatch/index.d.ts +35 -0
- package/dist/callbacks/dispatch/index.js +45 -0
- package/dist/callbacks/dispatch/web.cjs +61 -0
- package/dist/callbacks/dispatch/web.d.ts +32 -0
- package/dist/callbacks/dispatch/web.js +57 -0
- package/dist/callbacks/manager.cjs +32 -5
- package/dist/callbacks/manager.d.ts +5 -2
- package/dist/callbacks/manager.js +31 -5
- package/dist/language_models/base.cjs +4 -4
- package/dist/language_models/base.d.ts +2 -2
- package/dist/language_models/base.js +1 -1
- package/dist/language_models/chat_models.d.ts +4 -4
- package/dist/language_models/llms.d.ts +1 -1
- package/dist/language_models/tests/chat_models.test.js +33 -0
- package/dist/load/import_map.cjs +2 -2
- package/dist/load/import_map.d.ts +2 -2
- package/dist/load/import_map.js +2 -2
- package/dist/messages/ai.cjs +2 -0
- package/dist/messages/ai.js +2 -0
- package/dist/messages/base.cjs +45 -5
- package/dist/messages/base.d.ts +1 -0
- package/dist/messages/base.js +43 -4
- package/dist/messages/index.d.ts +1 -1
- package/dist/messages/tests/base_message.test.js +134 -2
- package/dist/messages/tests/message_utils.test.js +54 -2
- package/dist/messages/tool.cjs +31 -0
- package/dist/messages/tool.d.ts +27 -0
- package/dist/messages/tool.js +32 -1
- package/dist/messages/transformers.cjs +1 -0
- package/dist/messages/transformers.js +1 -0
- package/dist/messages/utils.cjs +5 -1
- package/dist/messages/utils.js +5 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs +2 -0
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.js +2 -0
- package/dist/runnables/base.cjs +89 -16
- package/dist/runnables/base.d.ts +51 -0
- package/dist/runnables/base.js +86 -15
- package/dist/runnables/config.cjs +30 -8
- package/dist/runnables/config.js +30 -8
- package/dist/runnables/history.cjs +1 -1
- package/dist/runnables/history.d.ts +1 -3
- package/dist/runnables/history.js +1 -1
- package/dist/runnables/index.cjs +2 -1
- package/dist/runnables/index.d.ts +1 -1
- package/dist/runnables/index.js +1 -1
- package/dist/runnables/tests/runnable.test.js +3 -3
- package/dist/runnables/tests/runnable_stream_events.test.js +1 -1
- package/dist/runnables/tests/runnable_stream_events_v2.test.js +124 -19
- package/dist/runnables/tests/runnable_tools.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_tools.test.js +111 -0
- package/dist/singletons/tests/async_local_storage.test.js +38 -4
- package/dist/{tools.cjs → tools/index.cjs} +130 -14
- package/dist/{tools.d.ts → tools/index.d.ts} +69 -31
- package/dist/{tools.js → tools/index.js} +130 -14
- package/dist/tools/tests/tools.test.d.ts +1 -0
- package/dist/tools/tests/tools.test.js +74 -0
- package/dist/tracers/base.cjs +1 -0
- package/dist/tracers/base.d.ts +1 -1
- package/dist/tracers/base.js +1 -0
- package/dist/tracers/event_stream.cjs +15 -0
- package/dist/tracers/event_stream.d.ts +1 -0
- package/dist/tracers/event_stream.js +15 -0
- package/dist/tracers/initialize.cjs +2 -0
- package/dist/tracers/initialize.d.ts +2 -0
- package/dist/tracers/initialize.js +2 -0
- package/dist/types/zod.cjs +2 -0
- package/dist/types/zod.d.ts +2 -0
- package/dist/types/zod.js +1 -0
- package/dist/utils/callbacks.cjs +17 -0
- package/dist/utils/callbacks.d.ts +1 -0
- package/dist/utils/callbacks.js +13 -0
- package/dist/utils/function_calling.cjs +38 -10
- package/dist/utils/function_calling.d.ts +32 -11
- package/dist/utils/function_calling.js +36 -9
- package/dist/utils/testing/index.cjs +10 -3
- package/dist/utils/testing/index.d.ts +1 -1
- package/dist/utils/testing/index.js +9 -2
- package/package.json +28 -14
- package/tools.cjs +1 -1
- package/tools.d.cts +1 -1
- package/tools.d.ts +1 -1
- package/tools.js +1 -1
- package/dist/utils/beta_warning.cjs +0 -11
- package/dist/utils/beta_warning.d.ts +0 -5
- package/dist/utils/beta_warning.js +0 -7
- package/utils/beta_warning.cjs +0 -1
- package/utils/beta_warning.d.cts +0 -1
- package/utils/beta_warning.d.ts +0 -1
- package/utils/beta_warning.js +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.traceAsGroup = exports.TraceGroup = exports.ensureHandler = exports.CallbackManager = exports.CallbackManagerForToolRun = exports.CallbackManagerForChainRun = exports.CallbackManagerForLLMRun = exports.CallbackManagerForRetrieverRun = exports.BaseCallbackManager = exports.parseCallbackConfigArg = void 0;
|
|
3
|
+
exports.traceAsGroup = exports.TraceGroup = exports.ensureHandler = exports.CallbackManager = exports.CallbackManagerForToolRun = exports.CallbackManagerForChainRun = exports.CallbackManagerForLLMRun = exports.CallbackManagerForRetrieverRun = exports.BaseRunManager = exports.BaseCallbackManager = exports.parseCallbackConfigArg = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const base_js_1 = require("./base.cjs");
|
|
6
6
|
const console_js_1 = require("../tracers/console.cjs");
|
|
7
|
-
const initialize_js_1 = require("../tracers/initialize.cjs");
|
|
8
7
|
const utils_js_1 = require("../messages/utils.cjs");
|
|
9
8
|
const env_js_1 = require("../utils/env.cjs");
|
|
10
9
|
const tracer_langchain_js_1 = require("../tracers/tracer_langchain.cjs");
|
|
11
10
|
const promises_js_1 = require("./promises.cjs");
|
|
11
|
+
const callbacks_js_1 = require("../utils/callbacks.cjs");
|
|
12
12
|
if (
|
|
13
13
|
/* #__PURE__ */ (0, env_js_1.getEnvironmentVariable)("LANGCHAIN_TRACING_V2") === "true" &&
|
|
14
14
|
/* #__PURE__ */ (0, env_js_1.getEnvironmentVariable)("LANGCHAIN_CALLBACKS_BACKGROUND") !==
|
|
@@ -94,6 +94,9 @@ class BaseRunManager {
|
|
|
94
94
|
value: _parentRunId
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
+
get parentRunId() {
|
|
98
|
+
return this._parentRunId;
|
|
99
|
+
}
|
|
97
100
|
async handleText(text) {
|
|
98
101
|
await Promise.all(this.handlers.map((handler) => (0, promises_js_1.consumeCallback)(async () => {
|
|
99
102
|
try {
|
|
@@ -108,6 +111,7 @@ class BaseRunManager {
|
|
|
108
111
|
}, handler.awaitHandlers)));
|
|
109
112
|
}
|
|
110
113
|
}
|
|
114
|
+
exports.BaseRunManager = BaseRunManager;
|
|
111
115
|
/**
|
|
112
116
|
* Manages callbacks for retriever runs.
|
|
113
117
|
*/
|
|
@@ -304,6 +308,7 @@ class CallbackManagerForToolRun extends BaseRunManager {
|
|
|
304
308
|
}
|
|
305
309
|
}, handler.awaitHandlers)));
|
|
306
310
|
}
|
|
311
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
307
312
|
async handleToolEnd(output) {
|
|
308
313
|
await Promise.all(this.handlers.map((handler) => (0, promises_js_1.consumeCallback)(async () => {
|
|
309
314
|
if (!handler.ignoreAgent) {
|
|
@@ -502,6 +507,25 @@ class CallbackManager extends BaseCallbackManager {
|
|
|
502
507
|
}, handler.awaitHandlers)));
|
|
503
508
|
return new CallbackManagerForRetrieverRun(runId, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
504
509
|
}
|
|
510
|
+
async handleCustomEvent(eventName,
|
|
511
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
512
|
+
data, runId, _tags,
|
|
513
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
514
|
+
_metadata) {
|
|
515
|
+
await Promise.all(this.handlers.map((handler) => (0, promises_js_1.consumeCallback)(async () => {
|
|
516
|
+
if (!handler.ignoreCustomEvent) {
|
|
517
|
+
try {
|
|
518
|
+
await handler.handleCustomEvent?.(eventName, data, runId, this.tags, this.metadata);
|
|
519
|
+
}
|
|
520
|
+
catch (err) {
|
|
521
|
+
console.error(`Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`);
|
|
522
|
+
if (handler.raiseError) {
|
|
523
|
+
throw err;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}, handler.awaitHandlers)));
|
|
528
|
+
}
|
|
505
529
|
addHandler(handler, inherit = true) {
|
|
506
530
|
this.handlers.push(handler);
|
|
507
531
|
if (inherit) {
|
|
@@ -586,6 +610,10 @@ class CallbackManager extends BaseCallbackManager {
|
|
|
586
610
|
return manager;
|
|
587
611
|
}
|
|
588
612
|
static async configure(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options) {
|
|
613
|
+
return this._configureSync(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options);
|
|
614
|
+
}
|
|
615
|
+
// TODO: Deprecate async method in favor of this one.
|
|
616
|
+
static _configureSync(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options) {
|
|
589
617
|
let callbackManager;
|
|
590
618
|
if (inheritableHandlers || localHandlers) {
|
|
591
619
|
if (Array.isArray(inheritableHandlers) || !inheritableHandlers) {
|
|
@@ -601,8 +629,7 @@ class CallbackManager extends BaseCallbackManager {
|
|
|
601
629
|
}
|
|
602
630
|
const verboseEnabled = (0, env_js_1.getEnvironmentVariable)("LANGCHAIN_VERBOSE") === "true" ||
|
|
603
631
|
options?.verbose;
|
|
604
|
-
const tracingV2Enabled = (0,
|
|
605
|
-
(0, env_js_1.getEnvironmentVariable)("LANGSMITH_TRACING") === "true";
|
|
632
|
+
const tracingV2Enabled = (0, callbacks_js_1.isTracingEnabled)();
|
|
606
633
|
const tracingEnabled = tracingV2Enabled ||
|
|
607
634
|
((0, env_js_1.getEnvironmentVariable)("LANGCHAIN_TRACING") ?? false);
|
|
608
635
|
if (verboseEnabled || tracingEnabled) {
|
|
@@ -617,7 +644,7 @@ class CallbackManager extends BaseCallbackManager {
|
|
|
617
644
|
if (tracingEnabled &&
|
|
618
645
|
!callbackManager.handlers.some((handler) => handler.name === "langchain_tracer")) {
|
|
619
646
|
if (tracingV2Enabled) {
|
|
620
|
-
const tracerV2 =
|
|
647
|
+
const tracerV2 = new tracer_langchain_js_1.LangChainTracer();
|
|
621
648
|
callbackManager.addHandler(tracerV2, true);
|
|
622
649
|
// handoff between langchain and langsmith/traceable
|
|
623
650
|
// override the parent run ID
|
|
@@ -53,7 +53,7 @@ export declare abstract class BaseCallbackManager {
|
|
|
53
53
|
/**
|
|
54
54
|
* Base class for run manager in LangChain.
|
|
55
55
|
*/
|
|
56
|
-
declare class BaseRunManager {
|
|
56
|
+
export declare class BaseRunManager {
|
|
57
57
|
readonly runId: string;
|
|
58
58
|
readonly handlers: BaseCallbackHandler[];
|
|
59
59
|
protected readonly inheritableHandlers: BaseCallbackHandler[];
|
|
@@ -63,6 +63,7 @@ declare class BaseRunManager {
|
|
|
63
63
|
protected readonly inheritableMetadata: Record<string, unknown>;
|
|
64
64
|
protected readonly _parentRunId?: string | undefined;
|
|
65
65
|
constructor(runId: string, handlers: BaseCallbackHandler[], inheritableHandlers: BaseCallbackHandler[], tags: string[], inheritableTags: string[], metadata: Record<string, unknown>, inheritableMetadata: Record<string, unknown>, _parentRunId?: string | undefined);
|
|
66
|
+
get parentRunId(): string | undefined;
|
|
66
67
|
handleText(text: string): Promise<void>;
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
@@ -92,7 +93,7 @@ export declare class CallbackManagerForChainRun extends BaseRunManager implement
|
|
|
92
93
|
export declare class CallbackManagerForToolRun extends BaseRunManager implements BaseCallbackManagerMethods {
|
|
93
94
|
getChild(tag?: string): CallbackManager;
|
|
94
95
|
handleToolError(err: Error | unknown): Promise<void>;
|
|
95
|
-
handleToolEnd(output:
|
|
96
|
+
handleToolEnd(output: any): Promise<void>;
|
|
96
97
|
}
|
|
97
98
|
/**
|
|
98
99
|
* @example
|
|
@@ -140,6 +141,7 @@ export declare class CallbackManager extends BaseCallbackManager implements Base
|
|
|
140
141
|
handleChainStart(chain: Serialized, inputs: ChainValues, runId?: string, runType?: string | undefined, _tags?: string[] | undefined, _metadata?: Record<string, unknown> | undefined, runName?: string | undefined): Promise<CallbackManagerForChainRun>;
|
|
141
142
|
handleToolStart(tool: Serialized, input: string, runId?: string, _parentRunId?: string | undefined, _tags?: string[] | undefined, _metadata?: Record<string, unknown> | undefined, runName?: string | undefined): Promise<CallbackManagerForToolRun>;
|
|
142
143
|
handleRetrieverStart(retriever: Serialized, query: string, runId?: string, _parentRunId?: string | undefined, _tags?: string[] | undefined, _metadata?: Record<string, unknown> | undefined, runName?: string | undefined): Promise<CallbackManagerForRetrieverRun>;
|
|
144
|
+
handleCustomEvent?(eventName: string, data: any, runId: string, _tags?: string[], _metadata?: Record<string, any>): Promise<any>;
|
|
143
145
|
addHandler(handler: BaseCallbackHandler, inherit?: boolean): void;
|
|
144
146
|
removeHandler(handler: BaseCallbackHandler): void;
|
|
145
147
|
setHandlers(handlers: BaseCallbackHandler[], inherit?: boolean): void;
|
|
@@ -150,6 +152,7 @@ export declare class CallbackManager extends BaseCallbackManager implements Base
|
|
|
150
152
|
copy(additionalHandlers?: BaseCallbackHandler[], inherit?: boolean): CallbackManager;
|
|
151
153
|
static fromHandlers(handlers: CallbackHandlerMethods): CallbackManager;
|
|
152
154
|
static configure(inheritableHandlers?: Callbacks, localHandlers?: Callbacks, inheritableTags?: string[], localTags?: string[], inheritableMetadata?: Record<string, unknown>, localMetadata?: Record<string, unknown>, options?: CallbackManagerOptions): Promise<CallbackManager | undefined>;
|
|
155
|
+
static _configureSync(inheritableHandlers?: Callbacks, localHandlers?: Callbacks, inheritableTags?: string[], localTags?: string[], inheritableMetadata?: Record<string, unknown>, localMetadata?: Record<string, unknown>, options?: CallbackManagerOptions): CallbackManager | undefined;
|
|
153
156
|
}
|
|
154
157
|
export declare function ensureHandler(handler: BaseCallbackHandler | CallbackHandlerMethods): BaseCallbackHandler;
|
|
155
158
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { v4 as uuidv4 } from "uuid";
|
|
2
2
|
import { BaseCallbackHandler, } from "./base.js";
|
|
3
3
|
import { ConsoleCallbackHandler } from "../tracers/console.js";
|
|
4
|
-
import { getTracingV2CallbackHandler } from "../tracers/initialize.js";
|
|
5
4
|
import { getBufferString } from "../messages/utils.js";
|
|
6
5
|
import { getEnvironmentVariable } from "../utils/env.js";
|
|
7
6
|
import { LangChainTracer, } from "../tracers/tracer_langchain.js";
|
|
8
7
|
import { consumeCallback } from "./promises.js";
|
|
8
|
+
import { isTracingEnabled } from "../utils/callbacks.js";
|
|
9
9
|
if (
|
|
10
10
|
/* #__PURE__ */ getEnvironmentVariable("LANGCHAIN_TRACING_V2") === "true" &&
|
|
11
11
|
/* #__PURE__ */ getEnvironmentVariable("LANGCHAIN_CALLBACKS_BACKGROUND") !==
|
|
@@ -38,7 +38,7 @@ export class BaseCallbackManager {
|
|
|
38
38
|
/**
|
|
39
39
|
* Base class for run manager in LangChain.
|
|
40
40
|
*/
|
|
41
|
-
class BaseRunManager {
|
|
41
|
+
export class BaseRunManager {
|
|
42
42
|
constructor(runId, handlers, inheritableHandlers, tags, inheritableTags, metadata, inheritableMetadata, _parentRunId) {
|
|
43
43
|
Object.defineProperty(this, "runId", {
|
|
44
44
|
enumerable: true,
|
|
@@ -89,6 +89,9 @@ class BaseRunManager {
|
|
|
89
89
|
value: _parentRunId
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
|
+
get parentRunId() {
|
|
93
|
+
return this._parentRunId;
|
|
94
|
+
}
|
|
92
95
|
async handleText(text) {
|
|
93
96
|
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
94
97
|
try {
|
|
@@ -296,6 +299,7 @@ export class CallbackManagerForToolRun extends BaseRunManager {
|
|
|
296
299
|
}
|
|
297
300
|
}, handler.awaitHandlers)));
|
|
298
301
|
}
|
|
302
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
299
303
|
async handleToolEnd(output) {
|
|
300
304
|
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
301
305
|
if (!handler.ignoreAgent) {
|
|
@@ -493,6 +497,25 @@ export class CallbackManager extends BaseCallbackManager {
|
|
|
493
497
|
}, handler.awaitHandlers)));
|
|
494
498
|
return new CallbackManagerForRetrieverRun(runId, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
495
499
|
}
|
|
500
|
+
async handleCustomEvent(eventName,
|
|
501
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
502
|
+
data, runId, _tags,
|
|
503
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
504
|
+
_metadata) {
|
|
505
|
+
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
506
|
+
if (!handler.ignoreCustomEvent) {
|
|
507
|
+
try {
|
|
508
|
+
await handler.handleCustomEvent?.(eventName, data, runId, this.tags, this.metadata);
|
|
509
|
+
}
|
|
510
|
+
catch (err) {
|
|
511
|
+
console.error(`Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`);
|
|
512
|
+
if (handler.raiseError) {
|
|
513
|
+
throw err;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}, handler.awaitHandlers)));
|
|
518
|
+
}
|
|
496
519
|
addHandler(handler, inherit = true) {
|
|
497
520
|
this.handlers.push(handler);
|
|
498
521
|
if (inherit) {
|
|
@@ -577,6 +600,10 @@ export class CallbackManager extends BaseCallbackManager {
|
|
|
577
600
|
return manager;
|
|
578
601
|
}
|
|
579
602
|
static async configure(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options) {
|
|
603
|
+
return this._configureSync(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options);
|
|
604
|
+
}
|
|
605
|
+
// TODO: Deprecate async method in favor of this one.
|
|
606
|
+
static _configureSync(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options) {
|
|
580
607
|
let callbackManager;
|
|
581
608
|
if (inheritableHandlers || localHandlers) {
|
|
582
609
|
if (Array.isArray(inheritableHandlers) || !inheritableHandlers) {
|
|
@@ -592,8 +619,7 @@ export class CallbackManager extends BaseCallbackManager {
|
|
|
592
619
|
}
|
|
593
620
|
const verboseEnabled = getEnvironmentVariable("LANGCHAIN_VERBOSE") === "true" ||
|
|
594
621
|
options?.verbose;
|
|
595
|
-
const tracingV2Enabled =
|
|
596
|
-
getEnvironmentVariable("LANGSMITH_TRACING") === "true";
|
|
622
|
+
const tracingV2Enabled = isTracingEnabled();
|
|
597
623
|
const tracingEnabled = tracingV2Enabled ||
|
|
598
624
|
(getEnvironmentVariable("LANGCHAIN_TRACING") ?? false);
|
|
599
625
|
if (verboseEnabled || tracingEnabled) {
|
|
@@ -608,7 +634,7 @@ export class CallbackManager extends BaseCallbackManager {
|
|
|
608
634
|
if (tracingEnabled &&
|
|
609
635
|
!callbackManager.handlers.some((handler) => handler.name === "langchain_tracer")) {
|
|
610
636
|
if (tracingV2Enabled) {
|
|
611
|
-
const tracerV2 =
|
|
637
|
+
const tracerV2 = new LangChainTracer();
|
|
612
638
|
callbackManager.addHandler(tracerV2, true);
|
|
613
639
|
// handoff between langchain and langsmith/traceable
|
|
614
640
|
// override the parent run ID
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseLanguageModel = exports.BaseLangChain = exports.calculateMaxTokens = exports.isOpenAITool = exports.getModelContextSize = exports.getEmbeddingContextSize = exports.getModelNameForTiktoken = void 0;
|
|
4
|
-
const
|
|
4
|
+
const base_js_1 = require("../caches/base.cjs");
|
|
5
5
|
const prompt_values_js_1 = require("../prompt_values.cjs");
|
|
6
6
|
const utils_js_1 = require("../messages/utils.cjs");
|
|
7
7
|
const async_caller_js_1 = require("../utils/async_caller.cjs");
|
|
8
8
|
const tiktoken_js_1 = require("../utils/tiktoken.cjs");
|
|
9
|
-
const
|
|
9
|
+
const base_js_2 = require("../runnables/base.cjs");
|
|
10
10
|
// https://www.npmjs.com/package/js-tiktoken
|
|
11
11
|
const getModelNameForTiktoken = (modelName) => {
|
|
12
12
|
if (modelName.startsWith("gpt-3.5-turbo-16k")) {
|
|
@@ -102,7 +102,7 @@ const getVerbosity = () => false;
|
|
|
102
102
|
/**
|
|
103
103
|
* Base class for language models, chains, tools.
|
|
104
104
|
*/
|
|
105
|
-
class BaseLangChain extends
|
|
105
|
+
class BaseLangChain extends base_js_2.Runnable {
|
|
106
106
|
get lc_attributes() {
|
|
107
107
|
return {
|
|
108
108
|
callbacks: undefined,
|
|
@@ -186,7 +186,7 @@ class BaseLanguageModel extends BaseLangChain {
|
|
|
186
186
|
this.cache = params.cache;
|
|
187
187
|
}
|
|
188
188
|
else if (params.cache) {
|
|
189
|
-
this.cache =
|
|
189
|
+
this.cache = base_js_1.InMemoryCache.global();
|
|
190
190
|
}
|
|
191
191
|
else {
|
|
192
192
|
this.cache = undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TiktokenModel } from "js-tiktoken/lite";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { type BaseCache } from "../caches.js";
|
|
3
|
+
import { type BaseCache } from "../caches/base.js";
|
|
4
4
|
import { type BasePromptValueInterface } from "../prompt_values.js";
|
|
5
5
|
import { type BaseMessage, type BaseMessageLike, type MessageContent } from "../messages/base.js";
|
|
6
6
|
import { type LLMResult } from "../outputs.js";
|
|
@@ -186,7 +186,7 @@ export declare abstract class BaseLanguageModel<RunOutput = any, CallOptions ext
|
|
|
186
186
|
* @param callOptions Call options for the model
|
|
187
187
|
* @returns A unique cache key.
|
|
188
188
|
*/
|
|
189
|
-
|
|
189
|
+
_getSerializedCacheKeyParametersForCall({ config, ...callOptions }: CallOptions & {
|
|
190
190
|
config?: RunnableConfig;
|
|
191
191
|
}): string;
|
|
192
192
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InMemoryCache } from "../caches.js";
|
|
1
|
+
import { InMemoryCache } from "../caches/base.js";
|
|
2
2
|
import { StringPromptValue, ChatPromptValue, } from "../prompt_values.js";
|
|
3
3
|
import { coerceMessageLikeToMessage } from "../messages/utils.js";
|
|
4
4
|
import { AsyncCaller } from "../utils/async_caller.js";
|
|
@@ -5,9 +5,9 @@ import { LLMResult, ChatGenerationChunk, type ChatResult, type Generation } from
|
|
|
5
5
|
import { BaseLanguageModel, StructuredOutputMethodOptions, ToolDefinition, type BaseLanguageModelCallOptions, type BaseLanguageModelInput, type BaseLanguageModelParams } from "./base.js";
|
|
6
6
|
import { type CallbackManagerForLLMRun, type Callbacks } from "../callbacks/manager.js";
|
|
7
7
|
import type { RunnableConfig } from "../runnables/config.js";
|
|
8
|
-
import type { BaseCache } from "../caches.js";
|
|
9
|
-
import { StructuredToolInterface } from "../tools.js";
|
|
10
|
-
import { Runnable } from "../runnables/base.js";
|
|
8
|
+
import type { BaseCache } from "../caches/base.js";
|
|
9
|
+
import { StructuredToolInterface } from "../tools/index.js";
|
|
10
|
+
import { Runnable, RunnableToolLike } from "../runnables/base.js";
|
|
11
11
|
/**
|
|
12
12
|
* Represents a serialized chat model.
|
|
13
13
|
*/
|
|
@@ -69,7 +69,7 @@ export declare abstract class BaseChatModel<CallOptions extends BaseChatModelCal
|
|
|
69
69
|
* matching the provider's specific tool schema.
|
|
70
70
|
* @param kwargs Any additional parameters to bind.
|
|
71
71
|
*/
|
|
72
|
-
bindTools?(tools: (StructuredToolInterface | Record<string, unknown> | ToolDefinition)[], kwargs?: Partial<CallOptions>): Runnable<BaseLanguageModelInput, OutputMessageType, CallOptions>;
|
|
72
|
+
bindTools?(tools: (StructuredToolInterface | Record<string, unknown> | ToolDefinition | RunnableToolLike)[], kwargs?: Partial<CallOptions>): Runnable<BaseLanguageModelInput, OutputMessageType, CallOptions>;
|
|
73
73
|
/**
|
|
74
74
|
* Invokes the chat model with a single input.
|
|
75
75
|
* @param input The input for the language model.
|
|
@@ -4,7 +4,7 @@ import { type LLMResult, type Generation, GenerationChunk } from "../outputs.js"
|
|
|
4
4
|
import { type BaseCallbackConfig, type CallbackManagerForLLMRun, type Callbacks } from "../callbacks/manager.js";
|
|
5
5
|
import { BaseLanguageModel, type BaseLanguageModelCallOptions, type BaseLanguageModelInput, type BaseLanguageModelParams } from "./base.js";
|
|
6
6
|
import type { RunnableConfig } from "../runnables/config.js";
|
|
7
|
-
import type { BaseCache } from "../caches.js";
|
|
7
|
+
import type { BaseCache } from "../caches/base.js";
|
|
8
8
|
export type SerializedLLM = {
|
|
9
9
|
_model: string;
|
|
10
10
|
_type: string;
|
|
@@ -3,6 +3,8 @@ import { test } from "@jest/globals";
|
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
5
5
|
import { FakeChatModel, FakeListChatModel } from "../../utils/testing/index.js";
|
|
6
|
+
import { HumanMessage } from "../../messages/human.js";
|
|
7
|
+
import { getBufferString } from "../../messages/utils.js";
|
|
6
8
|
test("Test ChatModel accepts array shorthand for messages", async () => {
|
|
7
9
|
const model = new FakeChatModel({});
|
|
8
10
|
const response = await model.invoke([["human", "Hello there!"]]);
|
|
@@ -169,3 +171,34 @@ test("Test ChatModel withStructuredOutput new syntax and includeRaw", async () =
|
|
|
169
171
|
// No error
|
|
170
172
|
console.log(response.parsed);
|
|
171
173
|
});
|
|
174
|
+
test("Test ChatModel can cache complex messages", async () => {
|
|
175
|
+
const model = new FakeChatModel({
|
|
176
|
+
cache: true,
|
|
177
|
+
});
|
|
178
|
+
if (!model.cache) {
|
|
179
|
+
throw new Error("Cache not enabled");
|
|
180
|
+
}
|
|
181
|
+
const contentToCache = [
|
|
182
|
+
{
|
|
183
|
+
type: "text",
|
|
184
|
+
text: "Hello there!",
|
|
185
|
+
},
|
|
186
|
+
];
|
|
187
|
+
const humanMessage = new HumanMessage({
|
|
188
|
+
content: contentToCache,
|
|
189
|
+
});
|
|
190
|
+
const prompt = getBufferString([humanMessage]);
|
|
191
|
+
const llmKey = model._getSerializedCacheKeyParametersForCall({});
|
|
192
|
+
// Invoke model to trigger cache update
|
|
193
|
+
await model.invoke([humanMessage]);
|
|
194
|
+
const value = await model.cache.lookup(prompt, llmKey);
|
|
195
|
+
expect(value).toBeDefined();
|
|
196
|
+
if (!value)
|
|
197
|
+
return;
|
|
198
|
+
expect(value[0].text).toEqual(JSON.stringify(contentToCache, null, 2));
|
|
199
|
+
expect("message" in value[0]).toBeTruthy();
|
|
200
|
+
if (!("message" in value[0]))
|
|
201
|
+
return;
|
|
202
|
+
const cachedMsg = value[0].message;
|
|
203
|
+
expect(cachedMsg.content).toEqual(JSON.stringify(contentToCache, null, 2));
|
|
204
|
+
});
|
package/dist/load/import_map.cjs
CHANGED
|
@@ -26,7 +26,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
27
|
exports.vectorstores = exports.utils__types = exports.utils__tiktoken = exports.utils__testing = exports.utils__stream = exports.utils__math = exports.utils__json_schema = exports.utils__json_patch = exports.utils__hash = exports.utils__function_calling = exports.utils__env = exports.utils__chunk_array = exports.utils__async_caller = exports.tracers__tracer_langchain_v1 = exports.tracers__tracer_langchain = exports.tracers__run_collector = exports.tracers__log_stream = exports.tracers__initialize = exports.tracers__console = exports.tracers__base = exports.tools = exports.stores = exports.retrievers = exports.runnables = exports.prompt_values = exports.prompts = exports.outputs = exports.output_parsers = exports.messages = exports.memory = exports.load__serializable = exports.language_models__llms = exports.language_models__chat_models = exports.language_models__base = exports.example_selectors = exports.embeddings = exports.documents = exports.chat_history = exports.callbacks__promises = exports.callbacks__manager = exports.callbacks__base = exports.caches = exports.agents = void 0;
|
|
28
28
|
exports.agents = __importStar(require("../agents.cjs"));
|
|
29
|
-
exports.caches = __importStar(require("../caches.cjs"));
|
|
29
|
+
exports.caches = __importStar(require("../caches/base.cjs"));
|
|
30
30
|
exports.callbacks__base = __importStar(require("../callbacks/base.cjs"));
|
|
31
31
|
exports.callbacks__manager = __importStar(require("../callbacks/manager.cjs"));
|
|
32
32
|
exports.callbacks__promises = __importStar(require("../callbacks/promises.cjs"));
|
|
@@ -47,7 +47,7 @@ exports.prompt_values = __importStar(require("../prompt_values.cjs"));
|
|
|
47
47
|
exports.runnables = __importStar(require("../runnables/index.cjs"));
|
|
48
48
|
exports.retrievers = __importStar(require("../retrievers/index.cjs"));
|
|
49
49
|
exports.stores = __importStar(require("../stores.cjs"));
|
|
50
|
-
exports.tools = __importStar(require("../tools.cjs"));
|
|
50
|
+
exports.tools = __importStar(require("../tools/index.cjs"));
|
|
51
51
|
exports.tracers__base = __importStar(require("../tracers/base.cjs"));
|
|
52
52
|
exports.tracers__console = __importStar(require("../tracers/console.cjs"));
|
|
53
53
|
exports.tracers__initialize = __importStar(require("../tracers/initialize.cjs"));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * as agents from "../agents.js";
|
|
2
|
-
export * as caches from "../caches.js";
|
|
2
|
+
export * as caches from "../caches/base.js";
|
|
3
3
|
export * as callbacks__base from "../callbacks/base.js";
|
|
4
4
|
export * as callbacks__manager from "../callbacks/manager.js";
|
|
5
5
|
export * as callbacks__promises from "../callbacks/promises.js";
|
|
@@ -20,7 +20,7 @@ export * as prompt_values from "../prompt_values.js";
|
|
|
20
20
|
export * as runnables from "../runnables/index.js";
|
|
21
21
|
export * as retrievers from "../retrievers/index.js";
|
|
22
22
|
export * as stores from "../stores.js";
|
|
23
|
-
export * as tools from "../tools.js";
|
|
23
|
+
export * as tools from "../tools/index.js";
|
|
24
24
|
export * as tracers__base from "../tracers/base.js";
|
|
25
25
|
export * as tracers__console from "../tracers/console.js";
|
|
26
26
|
export * as tracers__initialize from "../tracers/initialize.js";
|
package/dist/load/import_map.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Auto-generated by `scripts/create-entrypoints.js`. Do not edit manually.
|
|
2
2
|
export * as agents from "../agents.js";
|
|
3
|
-
export * as caches from "../caches.js";
|
|
3
|
+
export * as caches from "../caches/base.js";
|
|
4
4
|
export * as callbacks__base from "../callbacks/base.js";
|
|
5
5
|
export * as callbacks__manager from "../callbacks/manager.js";
|
|
6
6
|
export * as callbacks__promises from "../callbacks/promises.js";
|
|
@@ -21,7 +21,7 @@ export * as prompt_values from "../prompt_values.js";
|
|
|
21
21
|
export * as runnables from "../runnables/index.js";
|
|
22
22
|
export * as retrievers from "../retrievers/index.js";
|
|
23
23
|
export * as stores from "../stores.js";
|
|
24
|
-
export * as tools from "../tools.js";
|
|
24
|
+
export * as tools from "../tools/index.js";
|
|
25
25
|
export * as tracers__base from "../tracers/base.js";
|
|
26
26
|
export * as tracers__console from "../tracers/console.js";
|
|
27
27
|
export * as tracers__initialize from "../tracers/initialize.js";
|
package/dist/messages/ai.cjs
CHANGED
|
@@ -141,6 +141,7 @@ class AIMessageChunk extends base_js_1.BaseMessageChunk {
|
|
|
141
141
|
name: toolCallChunk.name ?? "",
|
|
142
142
|
args: parsedArgs,
|
|
143
143
|
id: toolCallChunk.id,
|
|
144
|
+
type: "tool_call",
|
|
144
145
|
});
|
|
145
146
|
}
|
|
146
147
|
catch (e) {
|
|
@@ -149,6 +150,7 @@ class AIMessageChunk extends base_js_1.BaseMessageChunk {
|
|
|
149
150
|
args: toolCallChunk.args,
|
|
150
151
|
id: toolCallChunk.id,
|
|
151
152
|
error: "Malformed args.",
|
|
153
|
+
type: "invalid_tool_call",
|
|
152
154
|
});
|
|
153
155
|
}
|
|
154
156
|
}
|
package/dist/messages/ai.js
CHANGED
|
@@ -136,6 +136,7 @@ export class AIMessageChunk extends BaseMessageChunk {
|
|
|
136
136
|
name: toolCallChunk.name ?? "",
|
|
137
137
|
args: parsedArgs,
|
|
138
138
|
id: toolCallChunk.id,
|
|
139
|
+
type: "tool_call",
|
|
139
140
|
});
|
|
140
141
|
}
|
|
141
142
|
catch (e) {
|
|
@@ -144,6 +145,7 @@ export class AIMessageChunk extends BaseMessageChunk {
|
|
|
144
145
|
args: toolCallChunk.args,
|
|
145
146
|
id: toolCallChunk.id,
|
|
146
147
|
error: "Malformed args.",
|
|
148
|
+
type: "invalid_tool_call",
|
|
147
149
|
});
|
|
148
150
|
}
|
|
149
151
|
}
|
package/dist/messages/base.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isBaseMessageChunk = exports.isBaseMessage = exports.BaseMessageChunk = exports._mergeLists = exports._mergeDicts = exports.isOpenAIToolCallArray = exports.BaseMessage = exports.mergeContent = void 0;
|
|
3
|
+
exports.isBaseMessageChunk = exports.isBaseMessage = exports.BaseMessageChunk = exports._mergeObj = exports._mergeLists = exports._mergeDicts = exports.isOpenAIToolCallArray = exports.BaseMessage = exports.mergeContent = void 0;
|
|
4
4
|
const serializable_js_1 = require("../load/serializable.cjs");
|
|
5
5
|
function mergeContent(firstContent, secondContent) {
|
|
6
6
|
// If first content is a string
|
|
@@ -14,8 +14,10 @@ function mergeContent(firstContent, secondContent) {
|
|
|
14
14
|
// If both are arrays
|
|
15
15
|
}
|
|
16
16
|
else if (Array.isArray(secondContent)) {
|
|
17
|
-
return
|
|
18
|
-
|
|
17
|
+
return (_mergeLists(firstContent, secondContent) ?? [
|
|
18
|
+
...firstContent,
|
|
19
|
+
...secondContent,
|
|
20
|
+
]);
|
|
19
21
|
}
|
|
20
22
|
else {
|
|
21
23
|
// Otherwise, add the second content as a new element of the list
|
|
@@ -154,9 +156,13 @@ right
|
|
|
154
156
|
throw new Error(`field[${key}] already exists in the message chunk, but with a different type.`);
|
|
155
157
|
}
|
|
156
158
|
else if (typeof merged[key] === "string") {
|
|
157
|
-
|
|
159
|
+
if (key === "type") {
|
|
160
|
+
// Do not merge 'type' fields
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
merged[key] += value;
|
|
158
164
|
}
|
|
159
|
-
else if (
|
|
165
|
+
else if (typeof merged[key] === "object" && !Array.isArray(merged[key])) {
|
|
160
166
|
merged[key] = _mergeDicts(merged[key], value);
|
|
161
167
|
}
|
|
162
168
|
else if (Array.isArray(merged[key])) {
|
|
@@ -194,6 +200,12 @@ function _mergeLists(left, right) {
|
|
|
194
200
|
merged.push(item);
|
|
195
201
|
}
|
|
196
202
|
}
|
|
203
|
+
else if (typeof item === "object" &&
|
|
204
|
+
"text" in item &&
|
|
205
|
+
item.text === "") {
|
|
206
|
+
// No-op - skip empty text blocks
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
197
209
|
else {
|
|
198
210
|
merged.push(item);
|
|
199
211
|
}
|
|
@@ -202,6 +214,34 @@ function _mergeLists(left, right) {
|
|
|
202
214
|
}
|
|
203
215
|
}
|
|
204
216
|
exports._mergeLists = _mergeLists;
|
|
217
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
218
|
+
function _mergeObj(left, right) {
|
|
219
|
+
if (!left && !right) {
|
|
220
|
+
throw new Error("Cannot merge two undefined objects.");
|
|
221
|
+
}
|
|
222
|
+
if (!left || !right) {
|
|
223
|
+
return left || right;
|
|
224
|
+
}
|
|
225
|
+
else if (typeof left !== typeof right) {
|
|
226
|
+
throw new Error(`Cannot merge objects of different types.\nLeft ${typeof left}\nRight ${typeof right}`);
|
|
227
|
+
}
|
|
228
|
+
else if (typeof left === "string" && typeof right === "string") {
|
|
229
|
+
return (left + right);
|
|
230
|
+
}
|
|
231
|
+
else if (Array.isArray(left) && Array.isArray(right)) {
|
|
232
|
+
return _mergeLists(left, right);
|
|
233
|
+
}
|
|
234
|
+
else if (typeof left === "object" && typeof right === "object") {
|
|
235
|
+
return _mergeDicts(left, right);
|
|
236
|
+
}
|
|
237
|
+
else if (left === right) {
|
|
238
|
+
return left;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
throw new Error(`Can not merge objects of different types.\nLeft ${left}\nRight ${right}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
exports._mergeObj = _mergeObj;
|
|
205
245
|
/**
|
|
206
246
|
* Represents a chunk of a message, which can be concatenated with other
|
|
207
247
|
* message chunks. It includes a method `_merge_kwargs_dict()` for merging
|
package/dist/messages/base.d.ts
CHANGED
|
@@ -130,6 +130,7 @@ export type OpenAIToolCall = ToolCall & {
|
|
|
130
130
|
export declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];
|
|
131
131
|
export declare function _mergeDicts(left: Record<string, any>, right: Record<string, any>): Record<string, any>;
|
|
132
132
|
export declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;
|
|
133
|
+
export declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;
|
|
133
134
|
/**
|
|
134
135
|
* Represents a chunk of a message, which can be concatenated with other
|
|
135
136
|
* message chunks. It includes a method `_merge_kwargs_dict()` for merging
|
package/dist/messages/base.js
CHANGED
|
@@ -11,8 +11,10 @@ export function mergeContent(firstContent, secondContent) {
|
|
|
11
11
|
// If both are arrays
|
|
12
12
|
}
|
|
13
13
|
else if (Array.isArray(secondContent)) {
|
|
14
|
-
return
|
|
15
|
-
|
|
14
|
+
return (_mergeLists(firstContent, secondContent) ?? [
|
|
15
|
+
...firstContent,
|
|
16
|
+
...secondContent,
|
|
17
|
+
]);
|
|
16
18
|
}
|
|
17
19
|
else {
|
|
18
20
|
// Otherwise, add the second content as a new element of the list
|
|
@@ -148,9 +150,13 @@ right
|
|
|
148
150
|
throw new Error(`field[${key}] already exists in the message chunk, but with a different type.`);
|
|
149
151
|
}
|
|
150
152
|
else if (typeof merged[key] === "string") {
|
|
151
|
-
|
|
153
|
+
if (key === "type") {
|
|
154
|
+
// Do not merge 'type' fields
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
merged[key] += value;
|
|
152
158
|
}
|
|
153
|
-
else if (
|
|
159
|
+
else if (typeof merged[key] === "object" && !Array.isArray(merged[key])) {
|
|
154
160
|
merged[key] = _mergeDicts(merged[key], value);
|
|
155
161
|
}
|
|
156
162
|
else if (Array.isArray(merged[key])) {
|
|
@@ -187,6 +193,12 @@ export function _mergeLists(left, right) {
|
|
|
187
193
|
merged.push(item);
|
|
188
194
|
}
|
|
189
195
|
}
|
|
196
|
+
else if (typeof item === "object" &&
|
|
197
|
+
"text" in item &&
|
|
198
|
+
item.text === "") {
|
|
199
|
+
// No-op - skip empty text blocks
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
190
202
|
else {
|
|
191
203
|
merged.push(item);
|
|
192
204
|
}
|
|
@@ -194,6 +206,33 @@ export function _mergeLists(left, right) {
|
|
|
194
206
|
return merged;
|
|
195
207
|
}
|
|
196
208
|
}
|
|
209
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
210
|
+
export function _mergeObj(left, right) {
|
|
211
|
+
if (!left && !right) {
|
|
212
|
+
throw new Error("Cannot merge two undefined objects.");
|
|
213
|
+
}
|
|
214
|
+
if (!left || !right) {
|
|
215
|
+
return left || right;
|
|
216
|
+
}
|
|
217
|
+
else if (typeof left !== typeof right) {
|
|
218
|
+
throw new Error(`Cannot merge objects of different types.\nLeft ${typeof left}\nRight ${typeof right}`);
|
|
219
|
+
}
|
|
220
|
+
else if (typeof left === "string" && typeof right === "string") {
|
|
221
|
+
return (left + right);
|
|
222
|
+
}
|
|
223
|
+
else if (Array.isArray(left) && Array.isArray(right)) {
|
|
224
|
+
return _mergeLists(left, right);
|
|
225
|
+
}
|
|
226
|
+
else if (typeof left === "object" && typeof right === "object") {
|
|
227
|
+
return _mergeDicts(left, right);
|
|
228
|
+
}
|
|
229
|
+
else if (left === right) {
|
|
230
|
+
return left;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
throw new Error(`Can not merge objects of different types.\nLeft ${left}\nRight ${right}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
197
236
|
/**
|
|
198
237
|
* Represents a chunk of a message, which can be concatenated with other
|
|
199
238
|
* message chunks. It includes a method `_merge_kwargs_dict()` for merging
|
package/dist/messages/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export * from "./human.js";
|
|
|
6
6
|
export * from "./system.js";
|
|
7
7
|
export * from "./utils.js";
|
|
8
8
|
export * from "./transformers.js";
|
|
9
|
-
export { type ToolMessageFieldsWithToolCallId, ToolMessage, ToolMessageChunk, } from "./tool.js";
|
|
9
|
+
export { type ToolMessageFieldsWithToolCallId, ToolMessage, ToolMessageChunk, type InvalidToolCall, } from "./tool.js";
|