@langchain/core 0.2.26 → 0.2.27

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.
@@ -305,7 +305,13 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
305
305
  else if (typeof item.text === "string") {
306
306
  text = item.text ?? "";
307
307
  }
308
- prompt.push(prompt_js_1.PromptTemplate.fromTemplate(text, additionalOptions));
308
+ const options = {
309
+ ...additionalOptions,
310
+ ...(typeof item !== "string"
311
+ ? { additionalContentFields: item }
312
+ : {}),
313
+ };
314
+ prompt.push(prompt_js_1.PromptTemplate.fromTemplate(text, options));
309
315
  }
310
316
  else if (typeof item === "object" && "image_url" in item) {
311
317
  let imgTemplate = item.image_url ?? "";
@@ -334,6 +340,7 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
334
340
  template: imgTemplate,
335
341
  inputVariables,
336
342
  templateFormat: additionalOptions?.templateFormat,
343
+ additionalContentFields: item,
337
344
  });
338
345
  }
339
346
  else if (typeof imgTemplate === "object") {
@@ -354,6 +361,7 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
354
361
  template: imgTemplate,
355
362
  inputVariables,
356
363
  templateFormat: additionalOptions?.templateFormat,
364
+ additionalContentFields: item,
357
365
  });
358
366
  }
359
367
  else {
@@ -387,13 +395,31 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
387
395
  // eslint-disable-next-line no-instanceof/no-instanceof
388
396
  if (prompt instanceof string_js_1.BaseStringPromptTemplate) {
389
397
  const formatted = await prompt.format(inputs);
390
- content.push({ type: "text", text: formatted });
398
+ let additionalContentFields;
399
+ if ("additionalContentFields" in prompt) {
400
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
401
+ additionalContentFields = prompt.additionalContentFields;
402
+ }
403
+ content.push({
404
+ ...additionalContentFields,
405
+ type: "text",
406
+ text: formatted,
407
+ });
391
408
  /** @TODO replace this */
392
409
  // eslint-disable-next-line no-instanceof/no-instanceof
393
410
  }
394
411
  else if (prompt instanceof image_js_1.ImagePromptTemplate) {
395
412
  const formatted = await prompt.format(inputs);
396
- content.push({ type: "image_url", image_url: formatted });
413
+ let additionalContentFields;
414
+ if ("additionalContentFields" in prompt) {
415
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
416
+ additionalContentFields = prompt.additionalContentFields;
417
+ }
418
+ content.push({
419
+ ...additionalContentFields,
420
+ type: "image_url",
421
+ image_url: formatted,
422
+ });
397
423
  }
398
424
  }
399
425
  return this.createMessage(content);
@@ -491,10 +517,10 @@ function _coerceMessagePromptTemplateLike(messagePromptTemplateLike, extra) {
491
517
  // Assuming message.content is an array of complex objects, transform it.
492
518
  templateData = message.content.map((item) => {
493
519
  if ("text" in item) {
494
- return { text: item.text };
520
+ return { ...item, text: item.text };
495
521
  }
496
522
  else if ("image_url" in item) {
497
- return { image_url: item.image_url };
523
+ return { ...item, image_url: item.image_url };
498
524
  }
499
525
  else {
500
526
  return item;
@@ -297,7 +297,13 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
297
297
  else if (typeof item.text === "string") {
298
298
  text = item.text ?? "";
299
299
  }
300
- prompt.push(PromptTemplate.fromTemplate(text, additionalOptions));
300
+ const options = {
301
+ ...additionalOptions,
302
+ ...(typeof item !== "string"
303
+ ? { additionalContentFields: item }
304
+ : {}),
305
+ };
306
+ prompt.push(PromptTemplate.fromTemplate(text, options));
301
307
  }
302
308
  else if (typeof item === "object" && "image_url" in item) {
303
309
  let imgTemplate = item.image_url ?? "";
@@ -326,6 +332,7 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
326
332
  template: imgTemplate,
327
333
  inputVariables,
328
334
  templateFormat: additionalOptions?.templateFormat,
335
+ additionalContentFields: item,
329
336
  });
330
337
  }
331
338
  else if (typeof imgTemplate === "object") {
@@ -346,6 +353,7 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
346
353
  template: imgTemplate,
347
354
  inputVariables,
348
355
  templateFormat: additionalOptions?.templateFormat,
356
+ additionalContentFields: item,
349
357
  });
350
358
  }
351
359
  else {
@@ -379,13 +387,31 @@ class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate {
379
387
  // eslint-disable-next-line no-instanceof/no-instanceof
380
388
  if (prompt instanceof BaseStringPromptTemplate) {
381
389
  const formatted = await prompt.format(inputs);
382
- content.push({ type: "text", text: formatted });
390
+ let additionalContentFields;
391
+ if ("additionalContentFields" in prompt) {
392
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
393
+ additionalContentFields = prompt.additionalContentFields;
394
+ }
395
+ content.push({
396
+ ...additionalContentFields,
397
+ type: "text",
398
+ text: formatted,
399
+ });
383
400
  /** @TODO replace this */
384
401
  // eslint-disable-next-line no-instanceof/no-instanceof
385
402
  }
386
403
  else if (prompt instanceof ImagePromptTemplate) {
387
404
  const formatted = await prompt.format(inputs);
388
- content.push({ type: "image_url", image_url: formatted });
405
+ let additionalContentFields;
406
+ if ("additionalContentFields" in prompt) {
407
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
408
+ additionalContentFields = prompt.additionalContentFields;
409
+ }
410
+ content.push({
411
+ ...additionalContentFields,
412
+ type: "image_url",
413
+ image_url: formatted,
414
+ });
389
415
  }
390
416
  }
391
417
  return this.createMessage(content);
@@ -480,10 +506,10 @@ function _coerceMessagePromptTemplateLike(messagePromptTemplateLike, extra) {
480
506
  // Assuming message.content is an array of complex objects, transform it.
481
507
  templateData = message.content.map((item) => {
482
508
  if ("text" in item) {
483
- return { text: item.text };
509
+ return { ...item, text: item.text };
484
510
  }
485
511
  else if ("image_url" in item) {
486
- return { image_url: item.image_url };
512
+ return { ...item, image_url: item.image_url };
487
513
  }
488
514
  else {
489
515
  return item;
@@ -37,9 +37,22 @@ class ImagePromptTemplate extends base_js_1.BasePromptTemplate {
37
37
  writable: true,
38
38
  value: true
39
39
  });
40
+ /**
41
+ * Additional fields which should be included inside
42
+ * the message content array if using a complex message
43
+ * content.
44
+ */
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ Object.defineProperty(this, "additionalContentFields", {
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true,
50
+ value: void 0
51
+ });
40
52
  this.template = input.template;
41
53
  this.templateFormat = input.templateFormat ?? this.templateFormat;
42
54
  this.validateTemplate = input.validateTemplate ?? this.validateTemplate;
55
+ this.additionalContentFields = input.additionalContentFields;
43
56
  if (this.validateTemplate) {
44
57
  let totalInputVariables = this.inputVariables;
45
58
  if (this.partialVariables) {
@@ -1,3 +1,4 @@
1
+ import { MessageContentComplex } from "../messages/index.js";
1
2
  import { ImagePromptValue, ImageContent } from "../prompt_values.js";
2
3
  import type { InputValues, PartialValues } from "../utils/types/index.js";
3
4
  import { BasePromptTemplate, BasePromptTemplateInput, TypedPromptInputValues } from "./base.js";
@@ -23,6 +24,12 @@ export interface ImagePromptTemplateInput<RunInput extends InputValues = any, Pa
23
24
  * @defaultValue `true`
24
25
  */
25
26
  validateTemplate?: boolean;
27
+ /**
28
+ * Additional fields which should be included inside
29
+ * the message content array if using a complex message
30
+ * content.
31
+ */
32
+ additionalContentFields?: MessageContentComplex;
26
33
  }
27
34
  /**
28
35
  * An image prompt template for a multimodal model.
@@ -33,6 +40,12 @@ export declare class ImagePromptTemplate<RunInput extends InputValues = any, Par
33
40
  template: Record<string, unknown>;
34
41
  templateFormat: TemplateFormat;
35
42
  validateTemplate: boolean;
43
+ /**
44
+ * Additional fields which should be included inside
45
+ * the message content array if using a complex message
46
+ * content.
47
+ */
48
+ additionalContentFields?: MessageContentComplex;
36
49
  constructor(input: ImagePromptTemplateInput<RunInput, PartialVariableName>);
37
50
  _getPromptType(): "prompt";
38
51
  /**
@@ -34,9 +34,22 @@ export class ImagePromptTemplate extends BasePromptTemplate {
34
34
  writable: true,
35
35
  value: true
36
36
  });
37
+ /**
38
+ * Additional fields which should be included inside
39
+ * the message content array if using a complex message
40
+ * content.
41
+ */
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ Object.defineProperty(this, "additionalContentFields", {
44
+ enumerable: true,
45
+ configurable: true,
46
+ writable: true,
47
+ value: void 0
48
+ });
37
49
  this.template = input.template;
38
50
  this.templateFormat = input.templateFormat ?? this.templateFormat;
39
51
  this.validateTemplate = input.validateTemplate ?? this.validateTemplate;
52
+ this.additionalContentFields = input.additionalContentFields;
40
53
  if (this.validateTemplate) {
41
54
  let totalInputVariables = this.inputVariables;
42
55
  if (this.partialVariables) {
@@ -44,6 +44,18 @@ class PromptTemplate extends string_js_1.BaseStringPromptTemplate {
44
44
  writable: true,
45
45
  value: true
46
46
  });
47
+ /**
48
+ * Additional fields which should be included inside
49
+ * the message content array if using a complex message
50
+ * content.
51
+ */
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ Object.defineProperty(this, "additionalContentFields", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: void 0
58
+ });
47
59
  // If input is mustache and validateTemplate is not defined, set it to false
48
60
  if (input.templateFormat === "mustache" &&
49
61
  input.validateTemplate === undefined) {
@@ -3,7 +3,7 @@ import type { BasePromptTemplateInput, TypedPromptInputValues } from "./base.js"
3
3
  import { type TemplateFormat } from "./template.js";
4
4
  import type { SerializedPromptTemplate } from "./serde.js";
5
5
  import type { InputValues, PartialValues } from "../utils/types/index.js";
6
- import { MessageContent } from "../messages/index.js";
6
+ import { MessageContent, MessageContentComplex } from "../messages/index.js";
7
7
  /**
8
8
  * Inputs to create a {@link PromptTemplate}
9
9
  * @augments BasePromptTemplateInput
@@ -23,6 +23,12 @@ export interface PromptTemplateInput<RunInput extends InputValues = any, Partial
23
23
  * @defaultValue `true`
24
24
  */
25
25
  validateTemplate?: boolean;
26
+ /**
27
+ * Additional fields which should be included inside
28
+ * the message content array if using a complex message
29
+ * content.
30
+ */
31
+ additionalContentFields?: MessageContentComplex;
26
32
  }
27
33
  type NonAlphanumeric = " " | "\t" | "\n" | "\r" | '"' | "'" | "{" | "[" | "(" | "`" | ":" | ";";
28
34
  /**
@@ -55,6 +61,12 @@ export declare class PromptTemplate<RunInput extends InputValues = any, PartialV
55
61
  template: MessageContent;
56
62
  templateFormat: TemplateFormat;
57
63
  validateTemplate: boolean;
64
+ /**
65
+ * Additional fields which should be included inside
66
+ * the message content array if using a complex message
67
+ * content.
68
+ */
69
+ additionalContentFields?: MessageContentComplex;
58
70
  constructor(input: PromptTemplateInput<RunInput, PartialVariableName>);
59
71
  _getPromptType(): "prompt";
60
72
  /**
@@ -41,6 +41,18 @@ export class PromptTemplate extends BaseStringPromptTemplate {
41
41
  writable: true,
42
42
  value: true
43
43
  });
44
+ /**
45
+ * Additional fields which should be included inside
46
+ * the message content array if using a complex message
47
+ * content.
48
+ */
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ Object.defineProperty(this, "additionalContentFields", {
51
+ enumerable: true,
52
+ configurable: true,
53
+ writable: true,
54
+ value: void 0
55
+ });
44
56
  // If input is mustache and validateTemplate is not defined, set it to false
45
57
  if (input.templateFormat === "mustache" &&
46
58
  input.validateTemplate === undefined) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/core",
3
- "version": "0.2.26",
3
+ "version": "0.2.27",
4
4
  "description": "Core LangChain.js abstractions and schemas",
5
5
  "type": "module",
6
6
  "engines": {