@langchain/core 0.2.0-rc.0 → 0.2.1
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/callbacks/base.cjs +9 -1
- package/dist/callbacks/base.d.ts +3 -0
- package/dist/callbacks/base.js +9 -1
- package/dist/callbacks/manager.cjs +51 -0
- package/dist/callbacks/manager.js +51 -0
- package/dist/callbacks/tests/callbacks.test.d.ts +1 -0
- package/dist/callbacks/tests/callbacks.test.js +492 -0
- package/dist/callbacks/tests/manager.int.test.d.ts +1 -0
- package/dist/callbacks/tests/manager.int.test.js +29 -0
- package/dist/callbacks/tests/run_collector.test.d.ts +1 -0
- package/dist/callbacks/tests/run_collector.test.js +58 -0
- package/dist/chat_history.cjs +13 -0
- package/dist/chat_history.d.ts +9 -0
- package/dist/chat_history.js +13 -0
- package/dist/language_models/base.cjs +3 -0
- package/dist/language_models/base.js +3 -0
- package/dist/language_models/chat_models.cjs +21 -3
- package/dist/language_models/chat_models.d.ts +11 -2
- package/dist/language_models/chat_models.js +21 -3
- package/dist/language_models/tests/chat_models.test.d.ts +1 -0
- package/dist/language_models/tests/chat_models.test.js +154 -0
- package/dist/language_models/tests/count_tokens.test.d.ts +1 -0
- package/dist/language_models/tests/count_tokens.test.js +19 -0
- package/dist/language_models/tests/llms.test.d.ts +1 -0
- package/dist/language_models/tests/llms.test.js +39 -0
- package/dist/messages/tests/base_message.test.d.ts +1 -0
- package/dist/messages/tests/base_message.test.js +97 -0
- package/dist/output_parsers/openai_tools/tests/json_output_tools_parser.test.d.ts +1 -0
- package/dist/output_parsers/openai_tools/tests/json_output_tools_parser.test.js +81 -0
- package/dist/output_parsers/tests/json.test.d.ts +1 -0
- package/dist/output_parsers/tests/json.test.js +427 -0
- package/dist/output_parsers/tests/output_parser.test.d.ts +1 -0
- package/dist/output_parsers/tests/output_parser.test.js +78 -0
- package/dist/output_parsers/tests/string.test.d.ts +1 -0
- package/dist/output_parsers/tests/string.test.js +68 -0
- package/dist/output_parsers/tests/structured.test.d.ts +1 -0
- package/dist/output_parsers/tests/structured.test.js +166 -0
- package/dist/output_parsers/tests/xml.test.d.ts +1 -0
- package/dist/output_parsers/tests/xml.test.js +81 -0
- package/dist/prompts/tests/chat.mustache.test.d.ts +1 -0
- package/dist/prompts/tests/chat.mustache.test.js +61 -0
- package/dist/prompts/tests/chat.test.d.ts +1 -0
- package/dist/prompts/tests/chat.test.js +507 -0
- package/dist/prompts/tests/few_shot.test.d.ts +1 -0
- package/dist/prompts/tests/few_shot.test.js +224 -0
- package/dist/prompts/tests/pipeline.test.d.ts +1 -0
- package/dist/prompts/tests/pipeline.test.js +101 -0
- package/dist/prompts/tests/prompt.mustache.test.d.ts +1 -0
- package/dist/prompts/tests/prompt.mustache.test.js +85 -0
- package/dist/prompts/tests/prompt.test.d.ts +1 -0
- package/dist/prompts/tests/prompt.test.js +78 -0
- package/dist/prompts/tests/structured.test.d.ts +1 -0
- package/dist/prompts/tests/structured.test.js +37 -0
- package/dist/prompts/tests/template.test.d.ts +1 -0
- package/dist/prompts/tests/template.test.js +24 -0
- package/dist/runnables/base.cjs +174 -19
- package/dist/runnables/base.d.ts +47 -28
- package/dist/runnables/base.js +174 -19
- package/dist/runnables/history.cjs +87 -32
- package/dist/runnables/history.d.ts +1 -1
- package/dist/runnables/history.js +87 -32
- package/dist/runnables/iter.cjs +46 -0
- package/dist/runnables/iter.d.ts +5 -0
- package/dist/runnables/iter.js +39 -0
- package/dist/runnables/passthrough.cjs +1 -0
- package/dist/runnables/passthrough.d.ts +1 -1
- package/dist/runnables/passthrough.js +1 -0
- package/dist/runnables/remote.cjs +60 -48
- package/dist/runnables/remote.d.ts +8 -4
- package/dist/runnables/remote.js +61 -49
- package/dist/runnables/tests/runnable.test.d.ts +1 -0
- package/dist/runnables/tests/runnable.test.js +491 -0
- package/dist/runnables/tests/runnable_binding.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_binding.test.js +46 -0
- package/dist/runnables/tests/runnable_branch.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_branch.test.js +116 -0
- package/dist/runnables/tests/runnable_graph.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_graph.test.js +84 -0
- package/dist/runnables/tests/runnable_history.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_history.test.js +177 -0
- package/dist/runnables/tests/runnable_interface.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_interface.test.js +209 -0
- package/dist/runnables/tests/runnable_map.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_map.test.js +238 -0
- package/dist/runnables/tests/runnable_passthrough.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_passthrough.test.js +96 -0
- package/dist/runnables/tests/runnable_remote.int.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_remote.int.test.js +138 -0
- package/dist/runnables/tests/runnable_remote.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_remote.test.js +200 -0
- package/dist/runnables/tests/runnable_retry.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_retry.test.js +125 -0
- package/dist/runnables/tests/runnable_stream_events.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_stream_events.test.js +1013 -0
- package/dist/runnables/tests/runnable_stream_events_v2.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_stream_events_v2.test.js +973 -0
- package/dist/runnables/tests/runnable_stream_log.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_stream_log.test.js +282 -0
- package/dist/runnables/tests/runnable_tracing.int.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_tracing.int.test.js +37 -0
- package/dist/runnables/tests/runnable_with_fallbacks.test.d.ts +1 -0
- package/dist/runnables/tests/runnable_with_fallbacks.test.js +36 -0
- package/dist/runnables/utils.d.ts +1 -1
- package/dist/singletons/index.cjs +1 -1
- package/dist/singletons/index.d.ts +2 -2
- package/dist/singletons/index.js +1 -1
- package/dist/singletons/tests/async_local_storage.test.d.ts +1 -0
- package/dist/singletons/tests/async_local_storage.test.js +120 -0
- package/dist/structured_query/tests/utils.test.d.ts +1 -0
- package/dist/structured_query/tests/utils.test.js +47 -0
- package/dist/tracers/event_stream.cjs +493 -0
- package/dist/tracers/event_stream.d.ts +137 -0
- package/dist/tracers/event_stream.js +489 -0
- package/dist/tracers/log_stream.d.ts +2 -77
- package/dist/tracers/tests/langchain_tracer.int.test.d.ts +1 -0
- package/dist/tracers/tests/langchain_tracer.int.test.js +74 -0
- package/dist/tracers/tests/tracer.test.d.ts +1 -0
- package/dist/tracers/tests/tracer.test.js +378 -0
- package/dist/utils/stream.cjs +27 -11
- package/dist/utils/stream.d.ts +6 -1
- package/dist/utils/stream.js +27 -11
- package/dist/utils/testing/tests/chatfake.test.d.ts +1 -0
- package/dist/utils/testing/tests/chatfake.test.js +112 -0
- package/dist/utils/tests/async_caller.test.d.ts +1 -0
- package/dist/utils/tests/async_caller.test.js +27 -0
- package/dist/utils/tests/enviroment.test.d.ts +1 -0
- package/dist/utils/tests/enviroment.test.js +6 -0
- package/dist/utils/tests/function_calling.test.d.ts +1 -0
- package/dist/utils/tests/function_calling.test.js +107 -0
- package/dist/utils/tests/math_utils.test.d.ts +1 -0
- package/dist/utils/tests/math_utils.test.js +139 -0
- package/dist/utils/tests/polyfill_stream.test.d.ts +1 -0
- package/dist/utils/tests/polyfill_stream.test.js +15 -0
- package/package.json +7 -7
package/dist/runnables/base.cjs
CHANGED
|
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.RunnablePick = exports.RunnableAssign = exports._coerceToRunnable = exports.RunnableWithFallbacks = exports.RunnableParallel = exports.RunnableLambda = exports.RunnableMap = exports.RunnableSequence = exports.RunnableRetry = exports.RunnableEach = exports.RunnableBinding = exports.Runnable = exports._coerceToDict = void 0;
|
|
7
7
|
const zod_1 = require("zod");
|
|
8
8
|
const p_retry_1 = __importDefault(require("p-retry"));
|
|
9
|
+
const uuid_1 = require("uuid");
|
|
9
10
|
const manager_js_1 = require("../callbacks/manager.cjs");
|
|
10
11
|
const log_stream_js_1 = require("../tracers/log_stream.cjs");
|
|
12
|
+
const event_stream_js_1 = require("../tracers/event_stream.cjs");
|
|
11
13
|
const serializable_js_1 = require("../load/serializable.cjs");
|
|
12
14
|
const stream_js_1 = require("../utils/stream.cjs");
|
|
13
15
|
const config_js_1 = require("./config.cjs");
|
|
@@ -17,6 +19,7 @@ const utils_js_1 = require("./utils.cjs");
|
|
|
17
19
|
const index_js_1 = require("../singletons/index.cjs");
|
|
18
20
|
const graph_js_1 = require("./graph.cjs");
|
|
19
21
|
const wrappers_js_1 = require("./wrappers.cjs");
|
|
22
|
+
const iter_js_1 = require("./iter.cjs");
|
|
20
23
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
24
|
function _coerceToDict(value, defaultKey) {
|
|
22
25
|
return value &&
|
|
@@ -167,7 +170,11 @@ class Runnable extends serializable_js_1.Serializable {
|
|
|
167
170
|
async stream(input, options) {
|
|
168
171
|
// Buffer the first streamed chunk to allow for initial errors
|
|
169
172
|
// to surface immediately.
|
|
170
|
-
const
|
|
173
|
+
const config = (0, config_js_1.ensureConfig)(options);
|
|
174
|
+
const wrappedGenerator = new stream_js_1.AsyncGeneratorWithSetup({
|
|
175
|
+
generator: this._streamIterator(input, config),
|
|
176
|
+
config,
|
|
177
|
+
});
|
|
171
178
|
await wrappedGenerator.setup;
|
|
172
179
|
return stream_js_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
|
|
173
180
|
}
|
|
@@ -280,11 +287,16 @@ class Runnable extends serializable_js_1.Serializable {
|
|
|
280
287
|
const pipe = await (0, stream_js_1.pipeGeneratorWithSetup)(transformer.bind(this), wrapInputForTracing(), async () => callbackManager_?.handleChainStart(this.toJSON(), { input: "" }, config.runId, config.runType, undefined, undefined, config.runName ?? this.getName()), config);
|
|
281
288
|
delete config.runId;
|
|
282
289
|
runManager = pipe.setup;
|
|
290
|
+
const isStreamEventsHandler = (handler) => handler.name === "event_stream_tracer";
|
|
291
|
+
const streamEventsHandler = runManager?.handlers.find(isStreamEventsHandler);
|
|
292
|
+
let iterator = pipe.output;
|
|
293
|
+
if (streamEventsHandler !== undefined && runManager !== undefined) {
|
|
294
|
+
iterator = streamEventsHandler.tapOutputIterable(runManager.runId, iterator);
|
|
295
|
+
}
|
|
283
296
|
const isLogStreamHandler = (handler) => handler.name === "log_stream_tracer";
|
|
284
297
|
const streamLogHandler = runManager?.handlers.find(isLogStreamHandler);
|
|
285
|
-
let iterator = pipe.output;
|
|
286
298
|
if (streamLogHandler !== undefined && runManager !== undefined) {
|
|
287
|
-
iterator =
|
|
299
|
+
iterator = streamLogHandler.tapOutputIterable(runManager.runId, iterator);
|
|
288
300
|
}
|
|
289
301
|
for await (const chunk of iterator) {
|
|
290
302
|
yield chunk;
|
|
@@ -449,19 +461,93 @@ class Runnable extends serializable_js_1.Serializable {
|
|
|
449
461
|
await runnableStreamConsumePromise;
|
|
450
462
|
}
|
|
451
463
|
}
|
|
452
|
-
|
|
464
|
+
streamEvents(input, options, streamOptions) {
|
|
465
|
+
let stream;
|
|
466
|
+
if (options.version === "v1") {
|
|
467
|
+
stream = this._streamEventsV1(input, options, streamOptions);
|
|
468
|
+
}
|
|
469
|
+
else if (options.version === "v2") {
|
|
470
|
+
stream = this._streamEventsV2(input, options, streamOptions);
|
|
471
|
+
}
|
|
472
|
+
else {
|
|
473
|
+
throw new Error(`Only versions "v1" and "v2" of the schema are currently supported.`);
|
|
474
|
+
}
|
|
453
475
|
if (options.encoding === "text/event-stream") {
|
|
454
|
-
|
|
455
|
-
yield* (0, wrappers_js_1.convertToHttpEventStream)(stream);
|
|
476
|
+
return (0, wrappers_js_1.convertToHttpEventStream)(stream);
|
|
456
477
|
}
|
|
457
478
|
else {
|
|
458
|
-
|
|
479
|
+
return stream_js_1.IterableReadableStream.fromAsyncGenerator(stream);
|
|
459
480
|
}
|
|
460
481
|
}
|
|
461
|
-
async *
|
|
462
|
-
|
|
463
|
-
|
|
482
|
+
async *_streamEventsV2(input, options, streamOptions) {
|
|
483
|
+
const eventStreamer = new event_stream_js_1.EventStreamCallbackHandler({
|
|
484
|
+
...streamOptions,
|
|
485
|
+
autoClose: false,
|
|
486
|
+
});
|
|
487
|
+
const config = (0, config_js_1.ensureConfig)(options);
|
|
488
|
+
const runId = config.runId ?? (0, uuid_1.v4)();
|
|
489
|
+
config.runId = runId;
|
|
490
|
+
const callbacks = config.callbacks;
|
|
491
|
+
if (callbacks === undefined) {
|
|
492
|
+
config.callbacks = [eventStreamer];
|
|
493
|
+
}
|
|
494
|
+
else if (Array.isArray(callbacks)) {
|
|
495
|
+
config.callbacks = callbacks.concat(eventStreamer);
|
|
464
496
|
}
|
|
497
|
+
else {
|
|
498
|
+
const copiedCallbacks = callbacks.copy();
|
|
499
|
+
copiedCallbacks.inheritableHandlers.push(eventStreamer);
|
|
500
|
+
// eslint-disable-next-line no-param-reassign
|
|
501
|
+
config.callbacks = copiedCallbacks;
|
|
502
|
+
}
|
|
503
|
+
// Call the runnable in streaming mode,
|
|
504
|
+
// add each chunk to the output stream
|
|
505
|
+
const outerThis = this;
|
|
506
|
+
async function consumeRunnableStream() {
|
|
507
|
+
try {
|
|
508
|
+
const runnableStream = await outerThis.stream(input, config);
|
|
509
|
+
const tappedStream = eventStreamer.tapOutputIterable(runId, runnableStream);
|
|
510
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
511
|
+
for await (const _ of tappedStream) {
|
|
512
|
+
// Just iterate so that the callback handler picks up events
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
finally {
|
|
516
|
+
await eventStreamer.writer.close();
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
const runnableStreamConsumePromise = consumeRunnableStream();
|
|
520
|
+
let firstEventSent = false;
|
|
521
|
+
let firstEventRunId;
|
|
522
|
+
try {
|
|
523
|
+
for await (const event of eventStreamer) {
|
|
524
|
+
// This is a work-around an issue where the inputs into the
|
|
525
|
+
// chain are not available until the entire input is consumed.
|
|
526
|
+
// As a temporary solution, we'll modify the input to be the input
|
|
527
|
+
// that was passed into the chain.
|
|
528
|
+
if (!firstEventSent) {
|
|
529
|
+
event.data.input = input;
|
|
530
|
+
firstEventSent = true;
|
|
531
|
+
firstEventRunId = event.run_id;
|
|
532
|
+
yield event;
|
|
533
|
+
continue;
|
|
534
|
+
}
|
|
535
|
+
if (event.run_id === firstEventRunId && event.event.endsWith("_end")) {
|
|
536
|
+
// If it's the end event corresponding to the root runnable
|
|
537
|
+
// we dont include the input in the event since it's guaranteed
|
|
538
|
+
// to be included in the first event.
|
|
539
|
+
if (event.data?.input) {
|
|
540
|
+
delete event.data.input;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
yield event;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
finally {
|
|
547
|
+
await runnableStreamConsumePromise;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
async *_streamEventsV1(input, options, streamOptions) {
|
|
465
551
|
let runLog;
|
|
466
552
|
let hasEncounteredStartEvent = false;
|
|
467
553
|
const config = (0, config_js_1.ensureConfig)(options);
|
|
@@ -739,11 +825,16 @@ class RunnableBinding extends Runnable {
|
|
|
739
825
|
generator, options) {
|
|
740
826
|
yield* this.bound.transform(generator, await this._mergeConfig((0, config_js_1.ensureConfig)(options), this.kwargs));
|
|
741
827
|
}
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
828
|
+
streamEvents(input, options, streamOptions) {
|
|
829
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
830
|
+
const outerThis = this;
|
|
831
|
+
const generator = async function* () {
|
|
832
|
+
yield* outerThis.bound.streamEvents(input, {
|
|
833
|
+
...(await outerThis._mergeConfig((0, config_js_1.ensureConfig)(options), outerThis.kwargs)),
|
|
834
|
+
version: options.version,
|
|
835
|
+
}, streamOptions);
|
|
836
|
+
};
|
|
837
|
+
return stream_js_1.IterableReadableStream.fromAsyncGenerator(generator());
|
|
747
838
|
}
|
|
748
839
|
static isRunnableBinding(
|
|
749
840
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1291,7 +1382,11 @@ class RunnableMap extends Runnable {
|
|
|
1291
1382
|
async function* generator() {
|
|
1292
1383
|
yield input;
|
|
1293
1384
|
}
|
|
1294
|
-
const
|
|
1385
|
+
const config = (0, config_js_1.ensureConfig)(options);
|
|
1386
|
+
const wrappedGenerator = new stream_js_1.AsyncGeneratorWithSetup({
|
|
1387
|
+
generator: this.transform(generator(), config),
|
|
1388
|
+
config,
|
|
1389
|
+
});
|
|
1295
1390
|
await wrappedGenerator.setup;
|
|
1296
1391
|
return stream_js_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
|
|
1297
1392
|
}
|
|
@@ -1346,6 +1441,44 @@ class RunnableLambda extends Runnable {
|
|
|
1346
1441
|
recursionLimit: (childConfig.recursionLimit ?? config_js_1.DEFAULT_RECURSION_LIMIT) - 1,
|
|
1347
1442
|
});
|
|
1348
1443
|
}
|
|
1444
|
+
else if ((0, iter_js_1.isAsyncIterable)(output)) {
|
|
1445
|
+
let finalOutput;
|
|
1446
|
+
for await (const chunk of (0, iter_js_1.consumeAsyncIterableInContext)(childConfig, output)) {
|
|
1447
|
+
if (finalOutput === undefined) {
|
|
1448
|
+
finalOutput = chunk;
|
|
1449
|
+
}
|
|
1450
|
+
else {
|
|
1451
|
+
// Make a best effort to gather, for any type that supports concat.
|
|
1452
|
+
try {
|
|
1453
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1454
|
+
finalOutput = (0, stream_js_1.concat)(finalOutput, chunk);
|
|
1455
|
+
}
|
|
1456
|
+
catch (e) {
|
|
1457
|
+
finalOutput = chunk;
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
output = finalOutput;
|
|
1462
|
+
}
|
|
1463
|
+
else if ((0, iter_js_1.isIterator)(output)) {
|
|
1464
|
+
let finalOutput;
|
|
1465
|
+
for (const chunk of (0, iter_js_1.consumeIteratorInContext)(childConfig, output)) {
|
|
1466
|
+
if (finalOutput === undefined) {
|
|
1467
|
+
finalOutput = chunk;
|
|
1468
|
+
}
|
|
1469
|
+
else {
|
|
1470
|
+
// Make a best effort to gather, for any type that supports concat.
|
|
1471
|
+
try {
|
|
1472
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1473
|
+
finalOutput = (0, stream_js_1.concat)(finalOutput, chunk);
|
|
1474
|
+
}
|
|
1475
|
+
catch (e) {
|
|
1476
|
+
finalOutput = chunk;
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
output = finalOutput;
|
|
1481
|
+
}
|
|
1349
1482
|
resolve(output);
|
|
1350
1483
|
}
|
|
1351
1484
|
catch (e) {
|
|
@@ -1400,6 +1533,16 @@ class RunnableLambda extends Runnable {
|
|
|
1400
1533
|
yield chunk;
|
|
1401
1534
|
}
|
|
1402
1535
|
}
|
|
1536
|
+
else if ((0, iter_js_1.isAsyncIterable)(output)) {
|
|
1537
|
+
for await (const chunk of (0, iter_js_1.consumeAsyncIterableInContext)(config, output)) {
|
|
1538
|
+
yield chunk;
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1541
|
+
else if ((0, iter_js_1.isIterator)(output)) {
|
|
1542
|
+
for (const chunk of (0, iter_js_1.consumeIteratorInContext)(config, output)) {
|
|
1543
|
+
yield chunk;
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1403
1546
|
else {
|
|
1404
1547
|
yield output;
|
|
1405
1548
|
}
|
|
@@ -1411,7 +1554,11 @@ class RunnableLambda extends Runnable {
|
|
|
1411
1554
|
async function* generator() {
|
|
1412
1555
|
yield input;
|
|
1413
1556
|
}
|
|
1414
|
-
const
|
|
1557
|
+
const config = (0, config_js_1.ensureConfig)(options);
|
|
1558
|
+
const wrappedGenerator = new stream_js_1.AsyncGeneratorWithSetup({
|
|
1559
|
+
generator: this.transform(generator(), config),
|
|
1560
|
+
config,
|
|
1561
|
+
});
|
|
1415
1562
|
await wrappedGenerator.setup;
|
|
1416
1563
|
return stream_js_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
|
|
1417
1564
|
}
|
|
@@ -1615,7 +1762,11 @@ class RunnableAssign extends Runnable {
|
|
|
1615
1762
|
async function* generator() {
|
|
1616
1763
|
yield input;
|
|
1617
1764
|
}
|
|
1618
|
-
const
|
|
1765
|
+
const config = (0, config_js_1.ensureConfig)(options);
|
|
1766
|
+
const wrappedGenerator = new stream_js_1.AsyncGeneratorWithSetup({
|
|
1767
|
+
generator: this.transform(generator(), config),
|
|
1768
|
+
config,
|
|
1769
|
+
});
|
|
1619
1770
|
await wrappedGenerator.setup;
|
|
1620
1771
|
return stream_js_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
|
|
1621
1772
|
}
|
|
@@ -1683,7 +1834,11 @@ class RunnablePick extends Runnable {
|
|
|
1683
1834
|
async function* generator() {
|
|
1684
1835
|
yield input;
|
|
1685
1836
|
}
|
|
1686
|
-
const
|
|
1837
|
+
const config = (0, config_js_1.ensureConfig)(options);
|
|
1838
|
+
const wrappedGenerator = new stream_js_1.AsyncGeneratorWithSetup({
|
|
1839
|
+
generator: this.transform(generator(), config),
|
|
1840
|
+
config,
|
|
1841
|
+
});
|
|
1687
1842
|
await wrappedGenerator.setup;
|
|
1688
1843
|
return stream_js_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
|
|
1689
1844
|
}
|
package/dist/runnables/base.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RunnableInterface, RunnableBatchOptions } from "./types.js";
|
|
2
2
|
import { CallbackManagerForChainRun } from "../callbacks/manager.js";
|
|
3
|
-
import { LogStreamCallbackHandler, LogStreamCallbackHandlerInput, RunLogPatch
|
|
3
|
+
import { LogStreamCallbackHandler, LogStreamCallbackHandlerInput, RunLogPatch } from "../tracers/log_stream.js";
|
|
4
|
+
import { EventStreamCallbackHandlerInput, StreamEvent } from "../tracers/event_stream.js";
|
|
4
5
|
import { Serializable } from "../load/serializable.js";
|
|
5
6
|
import { IterableReadableStream } from "../utils/stream.js";
|
|
6
7
|
import { RunnableConfig } from "./config.js";
|
|
@@ -179,33 +180,51 @@ export declare abstract class Runnable<RunInput = any, RunOutput = any, CallOpti
|
|
|
179
180
|
* chains. Metadata fields have been omitted from the table for brevity.
|
|
180
181
|
* Chain definitions have been included after the table.
|
|
181
182
|
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
* |
|
|
186
|
-
*
|
|
187
|
-
* |
|
|
188
|
-
*
|
|
189
|
-
* |
|
|
190
|
-
*
|
|
191
|
-
* |
|
|
192
|
-
*
|
|
193
|
-
* |
|
|
194
|
-
*
|
|
195
|
-
* |
|
|
196
|
-
*
|
|
197
|
-
* |
|
|
183
|
+
* **ATTENTION** This reference table is for the V2 version of the schema.
|
|
184
|
+
*
|
|
185
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
186
|
+
* | event | name | chunk | input | output |
|
|
187
|
+
* +======================+==================+=================================+===============================================+=================================================+
|
|
188
|
+
* | on_chat_model_start | [model name] | | {"messages": [[SystemMessage, HumanMessage]]} | |
|
|
189
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
190
|
+
* | on_chat_model_stream | [model name] | AIMessageChunk(content="hello") | | |
|
|
191
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
192
|
+
* | on_chat_model_end | [model name] | | {"messages": [[SystemMessage, HumanMessage]]} | AIMessageChunk(content="hello world") |
|
|
193
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
194
|
+
* | on_llm_start | [model name] | | {'input': 'hello'} | |
|
|
195
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
196
|
+
* | on_llm_stream | [model name] | 'Hello' | | |
|
|
197
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
198
|
+
* | on_llm_end | [model name] | | 'Hello human!' | |
|
|
199
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
200
|
+
* | on_chain_start | format_docs | | | |
|
|
201
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
202
|
+
* | on_chain_stream | format_docs | "hello world!, goodbye world!" | | |
|
|
203
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
204
|
+
* | on_chain_end | format_docs | | [Document(...)] | "hello world!, goodbye world!" |
|
|
205
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
206
|
+
* | on_tool_start | some_tool | | {"x": 1, "y": "2"} | |
|
|
207
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
208
|
+
* | on_tool_end | some_tool | | | {"x": 1, "y": "2"} |
|
|
209
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
210
|
+
* | on_retriever_start | [retriever name] | | {"query": "hello"} | |
|
|
211
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
212
|
+
* | on_retriever_end | [retriever name] | | {"query": "hello"} | [Document(...), ..] |
|
|
213
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
214
|
+
* | on_prompt_start | [template_name] | | {"question": "hello"} | |
|
|
215
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
216
|
+
* | on_prompt_end | [template_name] | | {"question": "hello"} | ChatPromptValue(messages: [SystemMessage, ...]) |
|
|
217
|
+
* +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
|
|
198
218
|
*/
|
|
199
219
|
streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
200
|
-
version: "v1";
|
|
201
|
-
}, streamOptions?: Omit<
|
|
220
|
+
version: "v1" | "v2";
|
|
221
|
+
}, streamOptions?: Omit<EventStreamCallbackHandlerInput, "autoClose">): IterableReadableStream<StreamEvent>;
|
|
202
222
|
streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
203
|
-
version: "v1";
|
|
223
|
+
version: "v1" | "v2";
|
|
204
224
|
encoding: "text/event-stream";
|
|
205
|
-
}, streamOptions?: Omit<
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">): AsyncGenerator<StreamEvent>;
|
|
225
|
+
}, streamOptions?: Omit<EventStreamCallbackHandlerInput, "autoClose">): IterableReadableStream<Uint8Array>;
|
|
226
|
+
private _streamEventsV2;
|
|
227
|
+
private _streamEventsV1;
|
|
209
228
|
static isRunnable(thing: any): thing is Runnable;
|
|
210
229
|
/**
|
|
211
230
|
* Bind lifecycle listeners to a Runnable, returning a new Runnable.
|
|
@@ -262,12 +281,12 @@ export declare class RunnableBinding<RunInput, RunOutput, CallOptions extends Ru
|
|
|
262
281
|
stream(input: RunInput, options?: Partial<CallOptions> | undefined): Promise<IterableReadableStream<RunOutput>>;
|
|
263
282
|
transform(generator: AsyncGenerator<RunInput>, options: Partial<CallOptions>): AsyncGenerator<RunOutput>;
|
|
264
283
|
streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
265
|
-
version: "v1";
|
|
266
|
-
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">):
|
|
284
|
+
version: "v1" | "v2";
|
|
285
|
+
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">): IterableReadableStream<StreamEvent>;
|
|
267
286
|
streamEvents(input: RunInput, options: Partial<CallOptions> & {
|
|
268
|
-
version: "v1";
|
|
287
|
+
version: "v1" | "v2";
|
|
269
288
|
encoding: "text/event-stream";
|
|
270
|
-
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">):
|
|
289
|
+
}, streamOptions?: Omit<LogStreamCallbackHandlerInput, "autoClose">): IterableReadableStream<Uint8Array>;
|
|
271
290
|
static isRunnableBinding(thing: any): thing is RunnableBinding<any, any, any>;
|
|
272
291
|
/**
|
|
273
292
|
* Bind lifecycle listeners to a Runnable, returning a new Runnable.
|