@langchain/core 0.1.29-rc.0 → 0.1.30

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.
@@ -34,6 +34,8 @@ class JsonOutputParser extends transform_js_1.BaseCumulativeTransformOutputParse
34
34
  }
35
35
  return (0, json_patch_js_1.compare)(prev, next);
36
36
  }
37
+ // This should actually return Partial<T>, but there's no way
38
+ // to specify emitted chunks as instances separate from the main output type.
37
39
  async parsePartialResult(generations) {
38
40
  return parseJsonMarkdown(generations[0].text);
39
41
  }
@@ -4,13 +4,13 @@ import { ChatGeneration, Generation } from "../outputs.js";
4
4
  /**
5
5
  * Class for parsing the output of an LLM into a JSON object.
6
6
  */
7
- export declare class JsonOutputParser extends BaseCumulativeTransformOutputParser<object> {
7
+ export declare class JsonOutputParser<T extends Record<string, any> = Record<string, any>> extends BaseCumulativeTransformOutputParser<T> {
8
8
  static lc_name(): string;
9
9
  lc_namespace: string[];
10
10
  lc_serializable: boolean;
11
11
  protected _diff(prev: unknown | undefined, next: unknown): Operation[] | undefined;
12
- parsePartialResult(generations: ChatGeneration[] | Generation[]): Promise<object | undefined>;
13
- parse(text: string): Promise<object>;
12
+ parsePartialResult(generations: ChatGeneration[] | Generation[]): Promise<T | undefined>;
13
+ parse(text: string): Promise<T>;
14
14
  getFormatInstructions(): string;
15
15
  }
16
16
  export declare function parseJsonMarkdown(s: string, parser?: typeof parsePartialJson): any;
@@ -31,6 +31,8 @@ export class JsonOutputParser extends BaseCumulativeTransformOutputParser {
31
31
  }
32
32
  return compare(prev, next);
33
33
  }
34
+ // This should actually return Partial<T>, but there's no way
35
+ // to specify emitted chunks as instances separate from the main output type.
34
36
  async parsePartialResult(generations) {
35
37
  return parseJsonMarkdown(generations[0].text);
36
38
  }
@@ -65,6 +65,6 @@ export declare class RunnablePassthrough<RunInput> extends Runnable<RunInput, Ru
65
65
  * });
66
66
  * ```
67
67
  */
68
- static assign<RunInput extends Record<string, unknown>, RunOutput extends Record<string, unknown>>(mapping: RunnableMapLike<RunInput, RunOutput>): RunnableAssign<RunInput, RunInput & RunOutput>;
68
+ static assign<RunInput extends Record<string, unknown> = Record<string, unknown>, RunOutput extends Record<string, unknown> = Record<string, unknown>>(mapping: RunnableMapLike<RunInput, RunOutput>): RunnableAssign<RunInput, RunInput & RunOutput>;
69
69
  }
70
70
  export {};
package/dist/tools.cjs CHANGED
@@ -71,7 +71,7 @@ class StructuredTool extends base_js_1.BaseLangChain {
71
71
  const runManager = await callbackManager_?.handleToolStart(this.toJSON(), typeof parsed === "string" ? parsed : JSON.stringify(parsed), undefined, undefined, undefined, undefined, config.runName);
72
72
  let result;
73
73
  try {
74
- result = await this._call(parsed, runManager);
74
+ result = await this._call(parsed, runManager, config);
75
75
  }
76
76
  catch (e) {
77
77
  await runManager?.handleToolError(e);
@@ -149,8 +149,8 @@ class DynamicTool extends Tool {
149
149
  return super.call(arg, config);
150
150
  }
151
151
  /** @ignore */
152
- async _call(input, runManager) {
153
- return this.func(input, runManager);
152
+ async _call(input, runManager, config) {
153
+ return this.func(input, runManager, config);
154
154
  }
155
155
  }
156
156
  exports.DynamicTool = DynamicTool;
@@ -205,8 +205,8 @@ class DynamicStructuredTool extends StructuredTool {
205
205
  }
206
206
  return super.call(arg, config, tags);
207
207
  }
208
- _call(arg, runManager) {
209
- return this.func(arg, runManager);
208
+ _call(arg, runManager, config) {
209
+ return this.func(arg, runManager, config);
210
210
  }
211
211
  }
212
212
  exports.DynamicStructuredTool = DynamicStructuredTool;
package/dist/tools.d.ts CHANGED
@@ -43,7 +43,7 @@ export declare abstract class StructuredTool<T extends z.ZodObject<any, any, any
43
43
  abstract schema: T | z.ZodEffects<T>;
44
44
  get lc_namespace(): string[];
45
45
  constructor(fields?: ToolParams);
46
- protected abstract _call(arg: z.output<T>, runManager?: CallbackManagerForToolRun): Promise<string>;
46
+ protected abstract _call(arg: z.output<T>, runManager?: CallbackManagerForToolRun, config?: RunnableConfig): Promise<string>;
47
47
  /**
48
48
  * Invokes the tool with the provided input and configuration.
49
49
  * @param input The input for the tool.
@@ -109,13 +109,13 @@ export interface BaseDynamicToolInput extends ToolParams {
109
109
  * Interface for the input parameters of the DynamicTool class.
110
110
  */
111
111
  export interface DynamicToolInput extends BaseDynamicToolInput {
112
- func: (input: string, runManager?: CallbackManagerForToolRun) => Promise<string>;
112
+ func: (input: string, runManager?: CallbackManagerForToolRun, config?: RunnableConfig) => Promise<string>;
113
113
  }
114
114
  /**
115
115
  * Interface for the input parameters of the DynamicStructuredTool class.
116
116
  */
117
117
  export interface DynamicStructuredToolInput<T extends z.ZodObject<any, any, any, any> = z.ZodObject<any, any, any, any>> extends BaseDynamicToolInput {
118
- func: (input: z.infer<T>, runManager?: CallbackManagerForToolRun) => Promise<string>;
118
+ func: (input: z.infer<T>, runManager?: CallbackManagerForToolRun, config?: RunnableConfig) => Promise<string>;
119
119
  schema: T;
120
120
  }
121
121
  /**
@@ -129,7 +129,7 @@ export declare class DynamicTool extends Tool {
129
129
  constructor(fields: DynamicToolInput);
130
130
  call(arg: string | undefined | z.input<this["schema"]>, configArg?: RunnableConfig | Callbacks): Promise<string>;
131
131
  /** @ignore */
132
- _call(input: string, runManager?: CallbackManagerForToolRun): Promise<string>;
132
+ _call(input: string, runManager?: CallbackManagerForToolRun, config?: RunnableConfig): Promise<string>;
133
133
  }
134
134
  /**
135
135
  * A tool that can be created dynamically from a function, name, and
@@ -147,5 +147,5 @@ export declare class DynamicStructuredTool<T extends z.ZodObject<any, any, any,
147
147
  call(arg: z.output<T>, configArg?: RunnableConfig | Callbacks,
148
148
  /** @deprecated */
149
149
  tags?: string[]): Promise<string>;
150
- protected _call(arg: z.output<T>, runManager?: CallbackManagerForToolRun): Promise<string>;
150
+ protected _call(arg: z.output<T>, runManager?: CallbackManagerForToolRun, config?: RunnableConfig): Promise<string>;
151
151
  }
package/dist/tools.js CHANGED
@@ -67,7 +67,7 @@ export class StructuredTool extends BaseLangChain {
67
67
  const runManager = await callbackManager_?.handleToolStart(this.toJSON(), typeof parsed === "string" ? parsed : JSON.stringify(parsed), undefined, undefined, undefined, undefined, config.runName);
68
68
  let result;
69
69
  try {
70
- result = await this._call(parsed, runManager);
70
+ result = await this._call(parsed, runManager, config);
71
71
  }
72
72
  catch (e) {
73
73
  await runManager?.handleToolError(e);
@@ -143,8 +143,8 @@ export class DynamicTool extends Tool {
143
143
  return super.call(arg, config);
144
144
  }
145
145
  /** @ignore */
146
- async _call(input, runManager) {
147
- return this.func(input, runManager);
146
+ async _call(input, runManager, config) {
147
+ return this.func(input, runManager, config);
148
148
  }
149
149
  }
150
150
  /**
@@ -198,7 +198,7 @@ export class DynamicStructuredTool extends StructuredTool {
198
198
  }
199
199
  return super.call(arg, config, tags);
200
200
  }
201
- _call(arg, runManager) {
202
- return this.func(arg, runManager);
201
+ _call(arg, runManager, config) {
202
+ return this.func(arg, runManager, config);
203
203
  }
204
204
  }
@@ -28,6 +28,16 @@ class BaseTracer extends base_js_1.BaseCallbackHandler {
28
28
  copy() {
29
29
  return this;
30
30
  }
31
+ stringifyError(error) {
32
+ // eslint-disable-next-line no-instanceof/no-instanceof
33
+ if (error instanceof Error) {
34
+ return error.message + (error?.stack ? `\n\n${error.stack}` : "");
35
+ }
36
+ if (typeof error === "string") {
37
+ return error;
38
+ }
39
+ return `${error}`;
40
+ }
31
41
  _addChildRun(parentRun, childRun) {
32
42
  parentRun.child_runs.push(childRun);
33
43
  }
@@ -165,7 +175,7 @@ class BaseTracer extends base_js_1.BaseCallbackHandler {
165
175
  throw new Error("No LLM run to end.");
166
176
  }
167
177
  run.end_time = Date.now();
168
- run.error = error.message;
178
+ run.error = this.stringifyError(error);
169
179
  run.events.push({
170
180
  name: "error",
171
181
  time: new Date(run.end_time).toISOString(),
@@ -225,7 +235,7 @@ class BaseTracer extends base_js_1.BaseCallbackHandler {
225
235
  throw new Error("No chain run to end.");
226
236
  }
227
237
  run.end_time = Date.now();
228
- run.error = error.message + (error?.stack ? `\n\n${error.stack}` : "");
238
+ run.error = this.stringifyError(error);
229
239
  run.events.push({
230
240
  name: "error",
231
241
  time: new Date(run.end_time).toISOString(),
@@ -285,7 +295,7 @@ class BaseTracer extends base_js_1.BaseCallbackHandler {
285
295
  throw new Error("No tool run to end");
286
296
  }
287
297
  run.end_time = Date.now();
288
- run.error = error.message;
298
+ run.error = this.stringifyError(error);
289
299
  run.events.push({
290
300
  name: "error",
291
301
  time: new Date(run.end_time).toISOString(),
@@ -369,7 +379,7 @@ class BaseTracer extends base_js_1.BaseCallbackHandler {
369
379
  throw new Error("No retriever run to end");
370
380
  }
371
381
  run.end_time = Date.now();
372
- run.error = error.message;
382
+ run.error = this.stringifyError(error);
373
383
  run.events.push({
374
384
  name: "error",
375
385
  time: new Date(run.end_time).toISOString(),
@@ -28,6 +28,7 @@ export declare abstract class BaseTracer extends BaseCallbackHandler {
28
28
  protected runMap: Map<string, Run>;
29
29
  constructor(_fields?: BaseCallbackHandlerInput);
30
30
  copy(): this;
31
+ protected stringifyError(error: unknown): string;
31
32
  protected abstract persistRun(run: Run): Promise<void>;
32
33
  protected _addChildRun(parentRun: Run, childRun: Run): void;
33
34
  protected _startTrace(run: Run): Promise<void>;
@@ -36,22 +37,22 @@ export declare abstract class BaseTracer extends BaseCallbackHandler {
36
37
  handleLLMStart(llm: Serialized, prompts: string[], runId: string, parentRunId?: string, extraParams?: KVMap, tags?: string[], metadata?: KVMap, name?: string): Promise<Run>;
37
38
  handleChatModelStart(llm: Serialized, messages: BaseMessage[][], runId: string, parentRunId?: string, extraParams?: KVMap, tags?: string[], metadata?: KVMap, name?: string): Promise<Run>;
38
39
  handleLLMEnd(output: LLMResult, runId: string): Promise<Run>;
39
- handleLLMError(error: Error, runId: string): Promise<Run>;
40
+ handleLLMError(error: unknown, runId: string): Promise<Run>;
40
41
  handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentRunId?: string, tags?: string[], metadata?: KVMap, runType?: string, name?: string): Promise<Run>;
41
42
  handleChainEnd(outputs: ChainValues, runId: string, _parentRunId?: string, _tags?: string[], kwargs?: {
42
43
  inputs?: Record<string, unknown>;
43
44
  }): Promise<Run>;
44
- handleChainError(error: Error, runId: string, _parentRunId?: string, _tags?: string[], kwargs?: {
45
+ handleChainError(error: unknown, runId: string, _parentRunId?: string, _tags?: string[], kwargs?: {
45
46
  inputs?: Record<string, unknown>;
46
47
  }): Promise<Run>;
47
48
  handleToolStart(tool: Serialized, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: KVMap, name?: string): Promise<Run>;
48
49
  handleToolEnd(output: string, runId: string): Promise<Run>;
49
- handleToolError(error: Error, runId: string): Promise<Run>;
50
+ handleToolError(error: unknown, runId: string): Promise<Run>;
50
51
  handleAgentAction(action: AgentAction, runId: string): Promise<void>;
51
52
  handleAgentEnd(action: AgentFinish, runId: string): Promise<void>;
52
53
  handleRetrieverStart(retriever: Serialized, query: string, runId: string, parentRunId?: string, tags?: string[], metadata?: KVMap, name?: string): Promise<Run>;
53
54
  handleRetrieverEnd(documents: Document<Record<string, unknown>>[], runId: string): Promise<Run>;
54
- handleRetrieverError(error: Error, runId: string): Promise<Run>;
55
+ handleRetrieverError(error: unknown, runId: string): Promise<Run>;
55
56
  handleText(text: string, runId: string): Promise<void>;
56
57
  handleLLMNewToken(token: string, idx: NewTokenIndices, runId: string, _parentRunId?: string, _tags?: string[], fields?: HandleLLMNewTokenCallbackFields): Promise<Run>;
57
58
  onRunCreate?(run: Run): void | Promise<void>;
@@ -25,6 +25,16 @@ export class BaseTracer extends BaseCallbackHandler {
25
25
  copy() {
26
26
  return this;
27
27
  }
28
+ stringifyError(error) {
29
+ // eslint-disable-next-line no-instanceof/no-instanceof
30
+ if (error instanceof Error) {
31
+ return error.message + (error?.stack ? `\n\n${error.stack}` : "");
32
+ }
33
+ if (typeof error === "string") {
34
+ return error;
35
+ }
36
+ return `${error}`;
37
+ }
28
38
  _addChildRun(parentRun, childRun) {
29
39
  parentRun.child_runs.push(childRun);
30
40
  }
@@ -162,7 +172,7 @@ export class BaseTracer extends BaseCallbackHandler {
162
172
  throw new Error("No LLM run to end.");
163
173
  }
164
174
  run.end_time = Date.now();
165
- run.error = error.message;
175
+ run.error = this.stringifyError(error);
166
176
  run.events.push({
167
177
  name: "error",
168
178
  time: new Date(run.end_time).toISOString(),
@@ -222,7 +232,7 @@ export class BaseTracer extends BaseCallbackHandler {
222
232
  throw new Error("No chain run to end.");
223
233
  }
224
234
  run.end_time = Date.now();
225
- run.error = error.message + (error?.stack ? `\n\n${error.stack}` : "");
235
+ run.error = this.stringifyError(error);
226
236
  run.events.push({
227
237
  name: "error",
228
238
  time: new Date(run.end_time).toISOString(),
@@ -282,7 +292,7 @@ export class BaseTracer extends BaseCallbackHandler {
282
292
  throw new Error("No tool run to end");
283
293
  }
284
294
  run.end_time = Date.now();
285
- run.error = error.message;
295
+ run.error = this.stringifyError(error);
286
296
  run.events.push({
287
297
  name: "error",
288
298
  time: new Date(run.end_time).toISOString(),
@@ -366,7 +376,7 @@ export class BaseTracer extends BaseCallbackHandler {
366
376
  throw new Error("No retriever run to end");
367
377
  }
368
378
  run.end_time = Date.now();
369
- run.error = error.message;
379
+ run.error = this.stringifyError(error);
370
380
  run.events.push({
371
381
  name: "error",
372
382
  time: new Date(run.end_time).toISOString(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/core",
3
- "version": "0.1.29-rc.0",
3
+ "version": "0.1.30",
4
4
  "description": "Core LangChain.js abstractions and schemas",
5
5
  "type": "module",
6
6
  "engines": {
@@ -43,7 +43,7 @@
43
43
  "camelcase": "6",
44
44
  "decamelize": "1.2.0",
45
45
  "js-tiktoken": "^1.0.8",
46
- "langsmith": "~0.0.48",
46
+ "langsmith": "~0.1.1",
47
47
  "ml-distance": "^4.0.0",
48
48
  "p-queue": "^6.6.2",
49
49
  "p-retry": "4",