langchain 0.0.195 → 0.0.197-rc.0

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.
Files changed (236) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agents/openai/index.cjs +6 -2
  3. package/dist/agents/openai/index.js +6 -2
  4. package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts +1 -1
  5. package/dist/base_language/count_tokens.cjs +5 -70
  6. package/dist/base_language/count_tokens.d.ts +1 -10
  7. package/dist/base_language/count_tokens.js +1 -65
  8. package/dist/base_language/index.cjs +6 -196
  9. package/dist/base_language/index.d.ts +1 -111
  10. package/dist/base_language/index.js +1 -191
  11. package/dist/cache/base.cjs +15 -37
  12. package/dist/cache/base.d.ts +1 -20
  13. package/dist/cache/base.js +1 -33
  14. package/dist/cache/index.cjs +2 -46
  15. package/dist/cache/index.d.ts +1 -29
  16. package/dist/cache/index.js +1 -45
  17. package/dist/callbacks/base.cjs +3 -139
  18. package/dist/callbacks/base.d.ts +1 -266
  19. package/dist/callbacks/base.js +1 -126
  20. package/dist/callbacks/handlers/console.cjs +14 -221
  21. package/dist/callbacks/handlers/console.d.ts +1 -117
  22. package/dist/callbacks/handlers/console.js +1 -217
  23. package/dist/callbacks/handlers/initialize.cjs +15 -30
  24. package/dist/callbacks/handlers/initialize.d.ts +1 -16
  25. package/dist/callbacks/handlers/initialize.js +1 -27
  26. package/dist/callbacks/handlers/log_stream.cjs +15 -293
  27. package/dist/callbacks/handlers/log_stream.d.ts +1 -100
  28. package/dist/callbacks/handlers/log_stream.js +1 -289
  29. package/dist/callbacks/handlers/run_collector.cjs +15 -48
  30. package/dist/callbacks/handlers/run_collector.d.ts +1 -26
  31. package/dist/callbacks/handlers/run_collector.js +1 -46
  32. package/dist/callbacks/handlers/tracer.cjs +15 -375
  33. package/dist/callbacks/handlers/tracer.d.ts +1 -70
  34. package/dist/callbacks/handlers/tracer.js +1 -373
  35. package/dist/callbacks/handlers/tracer_langchain.cjs +15 -104
  36. package/dist/callbacks/handlers/tracer_langchain.d.ts +1 -41
  37. package/dist/callbacks/handlers/tracer_langchain.js +1 -102
  38. package/dist/callbacks/handlers/tracer_langchain_v1.cjs +15 -197
  39. package/dist/callbacks/handlers/tracer_langchain_v1.d.ts +1 -57
  40. package/dist/callbacks/handlers/tracer_langchain_v1.js +1 -195
  41. package/dist/callbacks/manager.cjs +15 -676
  42. package/dist/callbacks/manager.d.ts +1 -180
  43. package/dist/callbacks/manager.js +1 -666
  44. package/dist/callbacks/promises.cjs +14 -42
  45. package/dist/callbacks/promises.d.ts +1 -11
  46. package/dist/callbacks/promises.js +1 -37
  47. package/dist/chains/graph_qa/prompts.d.ts +1 -1
  48. package/dist/chains/openai_functions/structured_output.cjs +2 -2
  49. package/dist/chains/openai_functions/structured_output.d.ts +1 -1
  50. package/dist/chains/openai_functions/structured_output.js +1 -1
  51. package/dist/chat_models/anthropic.cjs +15 -348
  52. package/dist/chat_models/anthropic.d.ts +1 -156
  53. package/dist/chat_models/anthropic.js +1 -346
  54. package/dist/chat_models/baiduwenxin.d.ts +1 -1
  55. package/dist/chat_models/base.cjs +15 -296
  56. package/dist/chat_models/base.d.ts +1 -122
  57. package/dist/chat_models/base.js +1 -292
  58. package/dist/chat_models/bedrock/web.cjs +21 -1
  59. package/dist/chat_models/bedrock/web.d.ts +2 -2
  60. package/dist/chat_models/bedrock/web.js +21 -1
  61. package/dist/chat_models/fireworks.d.ts +1 -1
  62. package/dist/document.cjs +2 -24
  63. package/dist/document.d.ts +1 -12
  64. package/dist/document.js +1 -23
  65. package/dist/document_loaders/web/azure_blob_storage_file.d.ts +1 -1
  66. package/dist/document_loaders/web/github.cjs +105 -0
  67. package/dist/document_loaders/web/github.d.ts +26 -0
  68. package/dist/document_loaders/web/github.js +105 -0
  69. package/dist/document_loaders/web/s3.d.ts +1 -1
  70. package/dist/embeddings/base.cjs +15 -22
  71. package/dist/embeddings/base.d.ts +1 -33
  72. package/dist/embeddings/base.js +1 -20
  73. package/dist/embeddings/cache_backed.cjs +2 -2
  74. package/dist/embeddings/cache_backed.js +1 -1
  75. package/dist/evaluation/agents/trajectory.d.ts +1 -1
  76. package/dist/evaluation/criteria/prompt.d.ts +2 -2
  77. package/dist/evaluation/qa/prompt.d.ts +2 -2
  78. package/dist/experimental/hubs/makersuite/googlemakersuitehub.d.ts +1 -1
  79. package/dist/experimental/plan_and_execute/prompt.d.ts +1 -1
  80. package/dist/llms/base.cjs +15 -278
  81. package/dist/llms/base.d.ts +1 -115
  82. package/dist/llms/base.js +1 -275
  83. package/dist/llms/bedrock/web.cjs +21 -1
  84. package/dist/llms/bedrock/web.d.ts +2 -2
  85. package/dist/llms/bedrock/web.js +21 -1
  86. package/dist/llms/fireworks.d.ts +1 -1
  87. package/dist/load/import_map.cjs +2 -1
  88. package/dist/load/import_map.d.ts +1 -0
  89. package/dist/load/import_map.js +1 -0
  90. package/dist/load/index.cjs +7 -148
  91. package/dist/load/index.js +7 -148
  92. package/dist/load/map_keys.cjs +0 -24
  93. package/dist/load/map_keys.d.ts +0 -6
  94. package/dist/load/map_keys.js +1 -17
  95. package/dist/load/serializable.cjs +15 -178
  96. package/dist/load/serializable.d.ts +1 -66
  97. package/dist/load/serializable.js +1 -175
  98. package/dist/memory/base.cjs +17 -92
  99. package/dist/memory/base.d.ts +2 -68
  100. package/dist/memory/base.js +2 -87
  101. package/dist/output_parsers/list.cjs +4 -122
  102. package/dist/output_parsers/list.d.ts +1 -57
  103. package/dist/output_parsers/list.js +1 -119
  104. package/dist/output_parsers/openai_functions.cjs +2 -2
  105. package/dist/output_parsers/openai_functions.d.ts +1 -1
  106. package/dist/output_parsers/openai_functions.js +1 -1
  107. package/dist/output_parsers/regex.d.ts +1 -1
  108. package/dist/output_parsers/structured.d.ts +1 -1
  109. package/dist/prompts/base.cjs +8 -183
  110. package/dist/prompts/base.d.ts +3 -132
  111. package/dist/prompts/base.js +3 -178
  112. package/dist/prompts/chat.cjs +13 -477
  113. package/dist/prompts/chat.d.ts +2 -219
  114. package/dist/prompts/chat.js +2 -466
  115. package/dist/prompts/few_shot.cjs +3 -352
  116. package/dist/prompts/few_shot.d.ts +1 -192
  117. package/dist/prompts/few_shot.js +1 -350
  118. package/dist/prompts/index.cjs +3 -2
  119. package/dist/prompts/index.d.ts +2 -1
  120. package/dist/prompts/index.js +2 -1
  121. package/dist/prompts/pipeline.cjs +2 -141
  122. package/dist/prompts/pipeline.d.ts +1 -98
  123. package/dist/prompts/pipeline.js +1 -140
  124. package/dist/prompts/prompt.cjs +2 -145
  125. package/dist/prompts/prompt.d.ts +1 -92
  126. package/dist/prompts/prompt.js +1 -144
  127. package/dist/prompts/selectors/LengthBasedExampleSelector.cjs +2 -147
  128. package/dist/prompts/selectors/LengthBasedExampleSelector.d.ts +1 -89
  129. package/dist/prompts/selectors/LengthBasedExampleSelector.js +1 -146
  130. package/dist/prompts/selectors/SemanticSimilarityExampleSelector.cjs +15 -137
  131. package/dist/prompts/selectors/SemanticSimilarityExampleSelector.d.ts +1 -91
  132. package/dist/prompts/selectors/SemanticSimilarityExampleSelector.js +1 -135
  133. package/dist/prompts/selectors/conditional.cjs +5 -73
  134. package/dist/prompts/selectors/conditional.d.ts +1 -63
  135. package/dist/prompts/selectors/conditional.js +1 -69
  136. package/dist/prompts/serde.d.ts +1 -43
  137. package/dist/prompts/template.cjs +8 -88
  138. package/dist/prompts/template.d.ts +1 -36
  139. package/dist/prompts/template.js +1 -83
  140. package/dist/{util/@cfworker/json-schema → runnables}/index.cjs +1 -1
  141. package/dist/runnables/index.d.ts +1 -0
  142. package/dist/runnables/index.js +1 -0
  143. package/dist/schema/document.cjs +3 -34
  144. package/dist/schema/document.d.ts +2 -29
  145. package/dist/schema/document.js +2 -32
  146. package/dist/schema/index.cjs +37 -612
  147. package/dist/schema/index.d.ts +11 -311
  148. package/dist/schema/index.js +8 -583
  149. package/dist/schema/output_parser.cjs +15 -309
  150. package/dist/schema/output_parser.d.ts +1 -173
  151. package/dist/schema/output_parser.js +1 -301
  152. package/dist/schema/retriever.cjs +15 -77
  153. package/dist/schema/retriever.d.ts +1 -43
  154. package/dist/schema/retriever.js +1 -75
  155. package/dist/schema/runnable/base.cjs +10 -1072
  156. package/dist/schema/runnable/base.d.ts +1 -356
  157. package/dist/schema/runnable/base.js +1 -1060
  158. package/dist/schema/runnable/branch.cjs +2 -131
  159. package/dist/schema/runnable/branch.d.ts +1 -94
  160. package/dist/schema/runnable/branch.js +1 -130
  161. package/dist/schema/runnable/config.cjs +0 -6
  162. package/dist/schema/runnable/config.d.ts +1 -3
  163. package/dist/schema/runnable/config.js +1 -4
  164. package/dist/schema/runnable/index.cjs +15 -16
  165. package/dist/schema/runnable/index.d.ts +1 -5
  166. package/dist/schema/runnable/index.js +1 -4
  167. package/dist/schema/runnable/passthrough.cjs +3 -113
  168. package/dist/schema/runnable/passthrough.d.ts +1 -72
  169. package/dist/schema/runnable/passthrough.js +1 -111
  170. package/dist/schema/runnable/router.cjs +2 -71
  171. package/dist/schema/runnable/router.d.ts +1 -29
  172. package/dist/schema/runnable/router.js +1 -70
  173. package/dist/schema/storage.cjs +15 -8
  174. package/dist/schema/storage.d.ts +1 -57
  175. package/dist/schema/storage.js +1 -6
  176. package/dist/tools/bingserpapi.d.ts +1 -1
  177. package/dist/tools/searchapi.d.ts +1 -1
  178. package/dist/tools/serpapi.d.ts +1 -1
  179. package/dist/tools/serper.d.ts +1 -1
  180. package/dist/util/async_caller.cjs +14 -128
  181. package/dist/util/async_caller.d.ts +1 -45
  182. package/dist/util/async_caller.js +1 -124
  183. package/dist/vectorstores/momento_vector_index.cjs +39 -0
  184. package/dist/vectorstores/momento_vector_index.d.ts +17 -1
  185. package/dist/vectorstores/momento_vector_index.js +40 -1
  186. package/dist/vectorstores/mongodb_atlas.cjs +22 -2
  187. package/dist/vectorstores/mongodb_atlas.d.ts +13 -0
  188. package/dist/vectorstores/mongodb_atlas.js +22 -2
  189. package/package.json +18 -11
  190. package/runnables.cjs +1 -0
  191. package/runnables.d.ts +1 -0
  192. package/runnables.js +1 -0
  193. package/dist/util/@cfworker/json-schema/index.d.ts +0 -1
  194. package/dist/util/@cfworker/json-schema/index.js +0 -1
  195. package/dist/util/@cfworker/json-schema/src/deep-compare-strict.cjs +0 -43
  196. package/dist/util/@cfworker/json-schema/src/deep-compare-strict.d.ts +0 -1
  197. package/dist/util/@cfworker/json-schema/src/deep-compare-strict.js +0 -39
  198. package/dist/util/@cfworker/json-schema/src/dereference.cjs +0 -169
  199. package/dist/util/@cfworker/json-schema/src/dereference.d.ts +0 -12
  200. package/dist/util/@cfworker/json-schema/src/dereference.js +0 -165
  201. package/dist/util/@cfworker/json-schema/src/format.cjs +0 -139
  202. package/dist/util/@cfworker/json-schema/src/format.d.ts +0 -2
  203. package/dist/util/@cfworker/json-schema/src/format.js +0 -136
  204. package/dist/util/@cfworker/json-schema/src/index.cjs +0 -24
  205. package/dist/util/@cfworker/json-schema/src/index.d.ts +0 -8
  206. package/dist/util/@cfworker/json-schema/src/index.js +0 -8
  207. package/dist/util/@cfworker/json-schema/src/pointer.cjs +0 -11
  208. package/dist/util/@cfworker/json-schema/src/pointer.d.ts +0 -2
  209. package/dist/util/@cfworker/json-schema/src/pointer.js +0 -6
  210. package/dist/util/@cfworker/json-schema/src/types.cjs +0 -2
  211. package/dist/util/@cfworker/json-schema/src/types.d.ts +0 -72
  212. package/dist/util/@cfworker/json-schema/src/types.js +0 -1
  213. package/dist/util/@cfworker/json-schema/src/ucs2-length.cjs +0 -28
  214. package/dist/util/@cfworker/json-schema/src/ucs2-length.d.ts +0 -6
  215. package/dist/util/@cfworker/json-schema/src/ucs2-length.js +0 -24
  216. package/dist/util/@cfworker/json-schema/src/validate.cjs +0 -808
  217. package/dist/util/@cfworker/json-schema/src/validate.d.ts +0 -3
  218. package/dist/util/@cfworker/json-schema/src/validate.js +0 -804
  219. package/dist/util/@cfworker/json-schema/src/validator.cjs +0 -44
  220. package/dist/util/@cfworker/json-schema/src/validator.d.ts +0 -10
  221. package/dist/util/@cfworker/json-schema/src/validator.js +0 -40
  222. package/dist/util/fast-json-patch/index.cjs +0 -49
  223. package/dist/util/fast-json-patch/index.d.ts +0 -22
  224. package/dist/util/fast-json-patch/index.js +0 -16
  225. package/dist/util/fast-json-patch/src/core.cjs +0 -469
  226. package/dist/util/fast-json-patch/src/core.d.ts +0 -111
  227. package/dist/util/fast-json-patch/src/core.js +0 -459
  228. package/dist/util/fast-json-patch/src/duplex.cjs +0 -237
  229. package/dist/util/fast-json-patch/src/duplex.d.ts +0 -23
  230. package/dist/util/fast-json-patch/src/duplex.js +0 -230
  231. package/dist/util/fast-json-patch/src/helpers.cjs +0 -194
  232. package/dist/util/fast-json-patch/src/helpers.d.ts +0 -36
  233. package/dist/util/fast-json-patch/src/helpers.js +0 -181
  234. package/dist/util/js-sha1/hash.cjs +0 -358
  235. package/dist/util/js-sha1/hash.d.ts +0 -1
  236. package/dist/util/js-sha1/hash.js +0 -355
@@ -1,89 +1 @@
1
- import { Example } from "../../schema/index.js";
2
- import { BaseExampleSelector } from "../base.js";
3
- import { PromptTemplate } from "../prompt.js";
4
- /**
5
- * Interface for the input parameters of the LengthBasedExampleSelector
6
- * class.
7
- */
8
- export interface LengthBasedExampleSelectorInput {
9
- examplePrompt: PromptTemplate;
10
- maxLength?: number;
11
- getTextLength?: (text: string) => number;
12
- }
13
- /**
14
- * A specialized example selector that selects examples based on their
15
- * length, ensuring that the total length of the selected examples does
16
- * not exceed a specified maximum length.
17
- * @example
18
- * ```typescript
19
- * const exampleSelector = new LengthBasedExampleSelector(
20
- * [
21
- * { input: "happy", output: "sad" },
22
- * { input: "tall", output: "short" },
23
- * { input: "energetic", output: "lethargic" },
24
- * { input: "sunny", output: "gloomy" },
25
- * { input: "windy", output: "calm" },
26
- * ],
27
- * {
28
- * examplePrompt: new PromptTemplate({
29
- * inputVariables: ["input", "output"],
30
- * template: "Input: {input}\nOutput: {output}",
31
- * }),
32
- * maxLength: 25,
33
- * },
34
- * );
35
- * const dynamicPrompt = new FewShotPromptTemplate({
36
- * exampleSelector,
37
- * examplePrompt: new PromptTemplate({
38
- * inputVariables: ["input", "output"],
39
- * template: "Input: {input}\nOutput: {output}",
40
- * }),
41
- * prefix: "Give the antonym of every input",
42
- * suffix: "Input: {adjective}\nOutput:",
43
- * inputVariables: ["adjective"],
44
- * });
45
- * console.log(dynamicPrompt.format({ adjective: "big" }));
46
- * console.log(
47
- * dynamicPrompt.format({
48
- * adjective:
49
- * "big and huge and massive and large and gigantic and tall and much much much much much bigger than everything else",
50
- * }),
51
- * );
52
- * ```
53
- */
54
- export declare class LengthBasedExampleSelector extends BaseExampleSelector {
55
- protected examples: Example[];
56
- examplePrompt: PromptTemplate;
57
- getTextLength: (text: string) => number;
58
- maxLength: number;
59
- exampleTextLengths: number[];
60
- constructor(data: LengthBasedExampleSelectorInput);
61
- /**
62
- * Adds an example to the list of examples and calculates its length.
63
- * @param example The example to be added.
64
- * @returns Promise that resolves when the example has been added and its length calculated.
65
- */
66
- addExample(example: Example): Promise<void>;
67
- /**
68
- * Calculates the lengths of the examples.
69
- * @param v Array of lengths of the examples.
70
- * @param values Instance of LengthBasedExampleSelector.
71
- * @returns Promise that resolves with an array of lengths of the examples.
72
- */
73
- calculateExampleTextLengths(v: number[], values: LengthBasedExampleSelector): Promise<number[]>;
74
- /**
75
- * Selects examples until the total length of the selected examples
76
- * reaches the maxLength.
77
- * @param inputVariables The input variables for the examples.
78
- * @returns Promise that resolves with an array of selected examples.
79
- */
80
- selectExamples(inputVariables: Example): Promise<Example[]>;
81
- /**
82
- * Creates a new instance of LengthBasedExampleSelector and adds a list of
83
- * examples to it.
84
- * @param examples Array of examples to be added.
85
- * @param args Input parameters for the LengthBasedExampleSelector.
86
- * @returns Promise that resolves with a new instance of LengthBasedExampleSelector with the examples added.
87
- */
88
- static fromExamples(examples: Example[], args: LengthBasedExampleSelectorInput): Promise<LengthBasedExampleSelector>;
89
- }
1
+ export { type LengthBasedExampleSelectorInput, LengthBasedExampleSelector, } from "langchain-core/example_selectors";
@@ -1,146 +1 @@
1
- import { BaseExampleSelector } from "../base.js";
2
- /**
3
- * Calculates the length of a text based on the number of words and lines.
4
- */
5
- function getLengthBased(text) {
6
- return text.split(/\n| /).length;
7
- }
8
- /**
9
- * A specialized example selector that selects examples based on their
10
- * length, ensuring that the total length of the selected examples does
11
- * not exceed a specified maximum length.
12
- * @example
13
- * ```typescript
14
- * const exampleSelector = new LengthBasedExampleSelector(
15
- * [
16
- * { input: "happy", output: "sad" },
17
- * { input: "tall", output: "short" },
18
- * { input: "energetic", output: "lethargic" },
19
- * { input: "sunny", output: "gloomy" },
20
- * { input: "windy", output: "calm" },
21
- * ],
22
- * {
23
- * examplePrompt: new PromptTemplate({
24
- * inputVariables: ["input", "output"],
25
- * template: "Input: {input}\nOutput: {output}",
26
- * }),
27
- * maxLength: 25,
28
- * },
29
- * );
30
- * const dynamicPrompt = new FewShotPromptTemplate({
31
- * exampleSelector,
32
- * examplePrompt: new PromptTemplate({
33
- * inputVariables: ["input", "output"],
34
- * template: "Input: {input}\nOutput: {output}",
35
- * }),
36
- * prefix: "Give the antonym of every input",
37
- * suffix: "Input: {adjective}\nOutput:",
38
- * inputVariables: ["adjective"],
39
- * });
40
- * console.log(dynamicPrompt.format({ adjective: "big" }));
41
- * console.log(
42
- * dynamicPrompt.format({
43
- * adjective:
44
- * "big and huge and massive and large and gigantic and tall and much much much much much bigger than everything else",
45
- * }),
46
- * );
47
- * ```
48
- */
49
- export class LengthBasedExampleSelector extends BaseExampleSelector {
50
- constructor(data) {
51
- super(data);
52
- Object.defineProperty(this, "examples", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: []
57
- });
58
- Object.defineProperty(this, "examplePrompt", {
59
- enumerable: true,
60
- configurable: true,
61
- writable: true,
62
- value: void 0
63
- });
64
- Object.defineProperty(this, "getTextLength", {
65
- enumerable: true,
66
- configurable: true,
67
- writable: true,
68
- value: getLengthBased
69
- });
70
- Object.defineProperty(this, "maxLength", {
71
- enumerable: true,
72
- configurable: true,
73
- writable: true,
74
- value: 2048
75
- });
76
- Object.defineProperty(this, "exampleTextLengths", {
77
- enumerable: true,
78
- configurable: true,
79
- writable: true,
80
- value: []
81
- });
82
- this.examplePrompt = data.examplePrompt;
83
- this.maxLength = data.maxLength ?? 2048;
84
- this.getTextLength = data.getTextLength ?? getLengthBased;
85
- }
86
- /**
87
- * Adds an example to the list of examples and calculates its length.
88
- * @param example The example to be added.
89
- * @returns Promise that resolves when the example has been added and its length calculated.
90
- */
91
- async addExample(example) {
92
- this.examples.push(example);
93
- const stringExample = await this.examplePrompt.format(example);
94
- this.exampleTextLengths.push(this.getTextLength(stringExample));
95
- }
96
- /**
97
- * Calculates the lengths of the examples.
98
- * @param v Array of lengths of the examples.
99
- * @param values Instance of LengthBasedExampleSelector.
100
- * @returns Promise that resolves with an array of lengths of the examples.
101
- */
102
- async calculateExampleTextLengths(v, values) {
103
- if (v.length > 0) {
104
- return v;
105
- }
106
- const { examples, examplePrompt } = values;
107
- const stringExamples = await Promise.all(examples.map((eg) => examplePrompt.format(eg)));
108
- return stringExamples.map((eg) => this.getTextLength(eg));
109
- }
110
- /**
111
- * Selects examples until the total length of the selected examples
112
- * reaches the maxLength.
113
- * @param inputVariables The input variables for the examples.
114
- * @returns Promise that resolves with an array of selected examples.
115
- */
116
- async selectExamples(inputVariables) {
117
- const inputs = Object.values(inputVariables).join(" ");
118
- let remainingLength = this.maxLength - this.getTextLength(inputs);
119
- let i = 0;
120
- const examples = [];
121
- while (remainingLength > 0 && i < this.examples.length) {
122
- const newLength = remainingLength - this.exampleTextLengths[i];
123
- if (newLength < 0) {
124
- break;
125
- }
126
- else {
127
- examples.push(this.examples[i]);
128
- remainingLength = newLength;
129
- }
130
- i += 1;
131
- }
132
- return examples;
133
- }
134
- /**
135
- * Creates a new instance of LengthBasedExampleSelector and adds a list of
136
- * examples to it.
137
- * @param examples Array of examples to be added.
138
- * @param args Input parameters for the LengthBasedExampleSelector.
139
- * @returns Promise that resolves with a new instance of LengthBasedExampleSelector with the examples added.
140
- */
141
- static async fromExamples(examples, args) {
142
- const selector = new LengthBasedExampleSelector(args);
143
- await Promise.all(examples.map((eg) => selector.addExample(eg)));
144
- return selector;
145
- }
146
- }
1
+ export { LengthBasedExampleSelector, } from "langchain-core/example_selectors";
@@ -1,139 +1,17 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SemanticSimilarityExampleSelector = void 0;
4
- const document_js_1 = require("../../document.cjs");
5
- const base_js_1 = require("../base.cjs");
6
- function sortedValues(values) {
7
- return Object.keys(values)
8
- .sort()
9
- .map((key) => values[key]);
10
- }
11
- /**
12
- * Class that selects examples based on semantic similarity. It extends
13
- * the BaseExampleSelector class.
14
- * @example
15
- * ```typescript
16
- * const exampleSelector = await SemanticSimilarityExampleSelector.fromExamples(
17
- * [
18
- * { input: "happy", output: "sad" },
19
- * { input: "tall", output: "short" },
20
- * { input: "energetic", output: "lethargic" },
21
- * { input: "sunny", output: "gloomy" },
22
- * { input: "windy", output: "calm" },
23
- * ],
24
- * new OpenAIEmbeddings(),
25
- * HNSWLib,
26
- * { k: 1 },
27
- * );
28
- * const dynamicPrompt = new FewShotPromptTemplate({
29
- * exampleSelector,
30
- * examplePrompt: PromptTemplate.fromTemplate(
31
- * "Input: {input}\nOutput: {output}",
32
- * ),
33
- * prefix: "Give the antonym of every input",
34
- * suffix: "Input: {adjective}\nOutput:",
35
- * inputVariables: ["adjective"],
36
- * });
37
- * console.log(await dynamicPrompt.format({ adjective: "rainy" }));
38
- * ```
39
- */
40
- class SemanticSimilarityExampleSelector extends base_js_1.BaseExampleSelector {
41
- constructor(data) {
42
- super(data);
43
- Object.defineProperty(this, "vectorStoreRetriever", {
44
- enumerable: true,
45
- configurable: true,
46
- writable: true,
47
- value: void 0
48
- });
49
- Object.defineProperty(this, "exampleKeys", {
50
- enumerable: true,
51
- configurable: true,
52
- writable: true,
53
- value: void 0
54
- });
55
- Object.defineProperty(this, "inputKeys", {
56
- enumerable: true,
57
- configurable: true,
58
- writable: true,
59
- value: void 0
60
- });
61
- this.exampleKeys = data.exampleKeys;
62
- this.inputKeys = data.inputKeys;
63
- if (data.vectorStore !== undefined) {
64
- this.vectorStoreRetriever = data.vectorStore.asRetriever({
65
- k: data.k ?? 4,
66
- filter: data.filter,
67
- });
68
- }
69
- else if (data.vectorStoreRetriever) {
70
- this.vectorStoreRetriever = data.vectorStoreRetriever;
71
- }
72
- else {
73
- throw new Error(`You must specify one of "vectorStore" and "vectorStoreRetriever".`);
74
- }
75
- }
76
- /**
77
- * Method that adds a new example to the vectorStore. The example is
78
- * converted to a string and added to the vectorStore as a document.
79
- * @param example The example to be added to the vectorStore.
80
- * @returns Promise that resolves when the example has been added to the vectorStore.
81
- */
82
- async addExample(example) {
83
- const inputKeys = this.inputKeys ?? Object.keys(example);
84
- const stringExample = sortedValues(inputKeys.reduce((acc, key) => ({ ...acc, [key]: example[key] }), {})).join(" ");
85
- await this.vectorStoreRetriever.addDocuments([
86
- new document_js_1.Document({
87
- pageContent: stringExample,
88
- metadata: example,
89
- }),
90
- ]);
91
- }
92
- /**
93
- * Method that selects which examples to use based on semantic similarity.
94
- * It performs a similarity search in the vectorStore using the input
95
- * variables and returns the examples with the highest similarity.
96
- * @param inputVariables The input variables used for the similarity search.
97
- * @returns Promise that resolves with an array of the selected examples.
98
- */
99
- async selectExamples(inputVariables) {
100
- const inputKeys = this.inputKeys ?? Object.keys(inputVariables);
101
- const query = sortedValues(inputKeys.reduce((acc, key) => ({ ...acc, [key]: inputVariables[key] }), {})).join(" ");
102
- const exampleDocs = await this.vectorStoreRetriever.invoke(query);
103
- const examples = exampleDocs.map((doc) => doc.metadata);
104
- if (this.exampleKeys) {
105
- // If example keys are provided, filter examples to those keys.
106
- return examples.map((example) => this.exampleKeys.reduce((acc, key) => ({ ...acc, [key]: example[key] }), {}));
107
- }
108
- return examples;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
109
7
  }
110
- /**
111
- * Static method that creates a new instance of
112
- * SemanticSimilarityExampleSelector. It takes a list of examples, an
113
- * instance of Embeddings, a VectorStore class, and an options object as
114
- * parameters. It converts the examples to strings, creates a VectorStore
115
- * from the strings and the embeddings, and returns a new
116
- * SemanticSimilarityExampleSelector with the created VectorStore and the
117
- * options provided.
118
- * @param examples The list of examples to be used.
119
- * @param embeddings The instance of Embeddings to be used.
120
- * @param vectorStoreCls The VectorStore class to be used.
121
- * @param options The options object for the SemanticSimilarityExampleSelector.
122
- * @returns Promise that resolves with a new instance of SemanticSimilarityExampleSelector.
123
- */
124
- static async fromExamples(examples, embeddings, vectorStoreCls, options = {}) {
125
- const inputKeys = options.inputKeys ?? null;
126
- const stringExamples = examples.map((example) => sortedValues(inputKeys
127
- ? inputKeys.reduce((acc, key) => ({ ...acc, [key]: example[key] }), {})
128
- : example).join(" "));
129
- const vectorStore = await vectorStoreCls.fromTexts(stringExamples, examples, // metadatas
130
- embeddings, options);
131
- return new SemanticSimilarityExampleSelector({
132
- vectorStore,
133
- k: options.k ?? 4,
134
- exampleKeys: options.exampleKeys,
135
- inputKeys: options.inputKeys,
136
- });
137
- }
138
- }
139
- exports.SemanticSimilarityExampleSelector = SemanticSimilarityExampleSelector;
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("langchain-core/example_selectors"), exports);
@@ -1,91 +1 @@
1
- import { Embeddings } from "../../embeddings/base.js";
2
- import { VectorStore, VectorStoreRetriever } from "../../vectorstores/base.js";
3
- import { Example } from "../../schema/index.js";
4
- import { BaseExampleSelector } from "../base.js";
5
- /**
6
- * Interface for the input data of the SemanticSimilarityExampleSelector
7
- * class.
8
- */
9
- export type SemanticSimilarityExampleSelectorInput<V extends VectorStore = VectorStore> = {
10
- vectorStore: V;
11
- k?: number;
12
- filter?: V["FilterType"];
13
- exampleKeys?: string[];
14
- inputKeys?: string[];
15
- vectorStoreRetriever?: never;
16
- } | {
17
- vectorStoreRetriever: VectorStoreRetriever<V>;
18
- exampleKeys?: string[];
19
- inputKeys?: string[];
20
- vectorStore?: never;
21
- k?: never;
22
- filter?: never;
23
- };
24
- /**
25
- * Class that selects examples based on semantic similarity. It extends
26
- * the BaseExampleSelector class.
27
- * @example
28
- * ```typescript
29
- * const exampleSelector = await SemanticSimilarityExampleSelector.fromExamples(
30
- * [
31
- * { input: "happy", output: "sad" },
32
- * { input: "tall", output: "short" },
33
- * { input: "energetic", output: "lethargic" },
34
- * { input: "sunny", output: "gloomy" },
35
- * { input: "windy", output: "calm" },
36
- * ],
37
- * new OpenAIEmbeddings(),
38
- * HNSWLib,
39
- * { k: 1 },
40
- * );
41
- * const dynamicPrompt = new FewShotPromptTemplate({
42
- * exampleSelector,
43
- * examplePrompt: PromptTemplate.fromTemplate(
44
- * "Input: {input}\nOutput: {output}",
45
- * ),
46
- * prefix: "Give the antonym of every input",
47
- * suffix: "Input: {adjective}\nOutput:",
48
- * inputVariables: ["adjective"],
49
- * });
50
- * console.log(await dynamicPrompt.format({ adjective: "rainy" }));
51
- * ```
52
- */
53
- export declare class SemanticSimilarityExampleSelector<V extends VectorStore = VectorStore> extends BaseExampleSelector {
54
- vectorStoreRetriever: VectorStoreRetriever<V>;
55
- exampleKeys?: string[];
56
- inputKeys?: string[];
57
- constructor(data: SemanticSimilarityExampleSelectorInput<V>);
58
- /**
59
- * Method that adds a new example to the vectorStore. The example is
60
- * converted to a string and added to the vectorStore as a document.
61
- * @param example The example to be added to the vectorStore.
62
- * @returns Promise that resolves when the example has been added to the vectorStore.
63
- */
64
- addExample(example: Example): Promise<void>;
65
- /**
66
- * Method that selects which examples to use based on semantic similarity.
67
- * It performs a similarity search in the vectorStore using the input
68
- * variables and returns the examples with the highest similarity.
69
- * @param inputVariables The input variables used for the similarity search.
70
- * @returns Promise that resolves with an array of the selected examples.
71
- */
72
- selectExamples<T>(inputVariables: Record<string, T>): Promise<Example[]>;
73
- /**
74
- * Static method that creates a new instance of
75
- * SemanticSimilarityExampleSelector. It takes a list of examples, an
76
- * instance of Embeddings, a VectorStore class, and an options object as
77
- * parameters. It converts the examples to strings, creates a VectorStore
78
- * from the strings and the embeddings, and returns a new
79
- * SemanticSimilarityExampleSelector with the created VectorStore and the
80
- * options provided.
81
- * @param examples The list of examples to be used.
82
- * @param embeddings The instance of Embeddings to be used.
83
- * @param vectorStoreCls The VectorStore class to be used.
84
- * @param options The options object for the SemanticSimilarityExampleSelector.
85
- * @returns Promise that resolves with a new instance of SemanticSimilarityExampleSelector.
86
- */
87
- static fromExamples<C extends typeof VectorStore>(examples: Record<string, string>[], embeddings: Embeddings, vectorStoreCls: C, options?: {
88
- k?: number;
89
- inputKeys?: string[];
90
- } & Parameters<C["fromTexts"]>[3]): Promise<SemanticSimilarityExampleSelector>;
91
- }
1
+ export * from "langchain-core/example_selectors";
@@ -1,135 +1 @@
1
- import { Document } from "../../document.js";
2
- import { BaseExampleSelector } from "../base.js";
3
- function sortedValues(values) {
4
- return Object.keys(values)
5
- .sort()
6
- .map((key) => values[key]);
7
- }
8
- /**
9
- * Class that selects examples based on semantic similarity. It extends
10
- * the BaseExampleSelector class.
11
- * @example
12
- * ```typescript
13
- * const exampleSelector = await SemanticSimilarityExampleSelector.fromExamples(
14
- * [
15
- * { input: "happy", output: "sad" },
16
- * { input: "tall", output: "short" },
17
- * { input: "energetic", output: "lethargic" },
18
- * { input: "sunny", output: "gloomy" },
19
- * { input: "windy", output: "calm" },
20
- * ],
21
- * new OpenAIEmbeddings(),
22
- * HNSWLib,
23
- * { k: 1 },
24
- * );
25
- * const dynamicPrompt = new FewShotPromptTemplate({
26
- * exampleSelector,
27
- * examplePrompt: PromptTemplate.fromTemplate(
28
- * "Input: {input}\nOutput: {output}",
29
- * ),
30
- * prefix: "Give the antonym of every input",
31
- * suffix: "Input: {adjective}\nOutput:",
32
- * inputVariables: ["adjective"],
33
- * });
34
- * console.log(await dynamicPrompt.format({ adjective: "rainy" }));
35
- * ```
36
- */
37
- export class SemanticSimilarityExampleSelector extends BaseExampleSelector {
38
- constructor(data) {
39
- super(data);
40
- Object.defineProperty(this, "vectorStoreRetriever", {
41
- enumerable: true,
42
- configurable: true,
43
- writable: true,
44
- value: void 0
45
- });
46
- Object.defineProperty(this, "exampleKeys", {
47
- enumerable: true,
48
- configurable: true,
49
- writable: true,
50
- value: void 0
51
- });
52
- Object.defineProperty(this, "inputKeys", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: void 0
57
- });
58
- this.exampleKeys = data.exampleKeys;
59
- this.inputKeys = data.inputKeys;
60
- if (data.vectorStore !== undefined) {
61
- this.vectorStoreRetriever = data.vectorStore.asRetriever({
62
- k: data.k ?? 4,
63
- filter: data.filter,
64
- });
65
- }
66
- else if (data.vectorStoreRetriever) {
67
- this.vectorStoreRetriever = data.vectorStoreRetriever;
68
- }
69
- else {
70
- throw new Error(`You must specify one of "vectorStore" and "vectorStoreRetriever".`);
71
- }
72
- }
73
- /**
74
- * Method that adds a new example to the vectorStore. The example is
75
- * converted to a string and added to the vectorStore as a document.
76
- * @param example The example to be added to the vectorStore.
77
- * @returns Promise that resolves when the example has been added to the vectorStore.
78
- */
79
- async addExample(example) {
80
- const inputKeys = this.inputKeys ?? Object.keys(example);
81
- const stringExample = sortedValues(inputKeys.reduce((acc, key) => ({ ...acc, [key]: example[key] }), {})).join(" ");
82
- await this.vectorStoreRetriever.addDocuments([
83
- new Document({
84
- pageContent: stringExample,
85
- metadata: example,
86
- }),
87
- ]);
88
- }
89
- /**
90
- * Method that selects which examples to use based on semantic similarity.
91
- * It performs a similarity search in the vectorStore using the input
92
- * variables and returns the examples with the highest similarity.
93
- * @param inputVariables The input variables used for the similarity search.
94
- * @returns Promise that resolves with an array of the selected examples.
95
- */
96
- async selectExamples(inputVariables) {
97
- const inputKeys = this.inputKeys ?? Object.keys(inputVariables);
98
- const query = sortedValues(inputKeys.reduce((acc, key) => ({ ...acc, [key]: inputVariables[key] }), {})).join(" ");
99
- const exampleDocs = await this.vectorStoreRetriever.invoke(query);
100
- const examples = exampleDocs.map((doc) => doc.metadata);
101
- if (this.exampleKeys) {
102
- // If example keys are provided, filter examples to those keys.
103
- return examples.map((example) => this.exampleKeys.reduce((acc, key) => ({ ...acc, [key]: example[key] }), {}));
104
- }
105
- return examples;
106
- }
107
- /**
108
- * Static method that creates a new instance of
109
- * SemanticSimilarityExampleSelector. It takes a list of examples, an
110
- * instance of Embeddings, a VectorStore class, and an options object as
111
- * parameters. It converts the examples to strings, creates a VectorStore
112
- * from the strings and the embeddings, and returns a new
113
- * SemanticSimilarityExampleSelector with the created VectorStore and the
114
- * options provided.
115
- * @param examples The list of examples to be used.
116
- * @param embeddings The instance of Embeddings to be used.
117
- * @param vectorStoreCls The VectorStore class to be used.
118
- * @param options The options object for the SemanticSimilarityExampleSelector.
119
- * @returns Promise that resolves with a new instance of SemanticSimilarityExampleSelector.
120
- */
121
- static async fromExamples(examples, embeddings, vectorStoreCls, options = {}) {
122
- const inputKeys = options.inputKeys ?? null;
123
- const stringExamples = examples.map((example) => sortedValues(inputKeys
124
- ? inputKeys.reduce((acc, key) => ({ ...acc, [key]: example[key] }), {})
125
- : example).join(" "));
126
- const vectorStore = await vectorStoreCls.fromTexts(stringExamples, examples, // metadatas
127
- embeddings, options);
128
- return new SemanticSimilarityExampleSelector({
129
- vectorStore,
130
- k: options.k ?? 4,
131
- exampleKeys: options.exampleKeys,
132
- inputKeys: options.inputKeys,
133
- });
134
- }
135
- }
1
+ export * from "langchain-core/example_selectors";