langchain 0.0.144 → 0.0.145

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.
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OllamaEmbeddings = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class OllamaEmbeddings extends base_js_1.Embeddings {
6
+ constructor(params) {
7
+ super(params || {});
8
+ Object.defineProperty(this, "model", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: "llama2"
13
+ });
14
+ Object.defineProperty(this, "baseUrl", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: "http://localhost:11434"
19
+ });
20
+ Object.defineProperty(this, "requestOptions", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: void 0
25
+ });
26
+ if (params?.model) {
27
+ this.model = params.model;
28
+ }
29
+ if (params?.baseUrl) {
30
+ this.baseUrl = params.baseUrl;
31
+ }
32
+ if (params?.requestOptions) {
33
+ this.requestOptions = this._convertOptions(params.requestOptions);
34
+ }
35
+ }
36
+ /** convert camelCased Ollama request options like "useMMap" to
37
+ * the snake_cased equivalent which the ollama API actually uses.
38
+ * Used only for consistency with the llms/Ollama and chatModels/Ollama classes
39
+ */
40
+ _convertOptions(requestOptions) {
41
+ const snakeCasedOptions = {};
42
+ const mapping = {
43
+ embeddingOnly: "embedding_only",
44
+ f16KV: "f16_kv",
45
+ frequencyPenalty: "frequency_penalty",
46
+ logitsAll: "logits_all",
47
+ lowVram: "low_vram",
48
+ mainGpu: "main_gpu",
49
+ mirostat: "mirostat",
50
+ mirostatEta: "mirostat_eta",
51
+ mirostatTau: "mirostat_tau",
52
+ numBatch: "num_batch",
53
+ numCtx: "num_ctx",
54
+ numGpu: "num_gpu",
55
+ numGqa: "num_gqa",
56
+ numKeep: "num_keep",
57
+ numThread: "num_thread",
58
+ penalizeNewline: "penalize_newline",
59
+ presencePenalty: "presence_penalty",
60
+ repeatLastN: "repeat_last_n",
61
+ repeatPenalty: "repeat_penalty",
62
+ ropeFrequencyBase: "rope_frequency_base",
63
+ ropeFrequencyScale: "rope_frequency_scale",
64
+ temperature: "temperature",
65
+ stop: "stop",
66
+ tfsZ: "tfs_z",
67
+ topK: "top_k",
68
+ topP: "top_p",
69
+ typicalP: "typical_p",
70
+ useMLock: "use_mlock",
71
+ useMMap: "use_mmap",
72
+ vocabOnly: "vocab_only",
73
+ };
74
+ for (const [key, value] of Object.entries(requestOptions)) {
75
+ const snakeCasedOption = mapping[key];
76
+ if (snakeCasedOption) {
77
+ snakeCasedOptions[snakeCasedOption] = value;
78
+ }
79
+ }
80
+ return snakeCasedOptions;
81
+ }
82
+ async _request(prompt) {
83
+ const { model, baseUrl, requestOptions } = this;
84
+ const response = await fetch(`${baseUrl}/api/embeddings`, {
85
+ method: "POST",
86
+ headers: { "Content-Type": "application/json" },
87
+ body: JSON.stringify({
88
+ prompt,
89
+ model,
90
+ options: requestOptions,
91
+ }),
92
+ });
93
+ if (!response.ok) {
94
+ throw new Error(`Request to Ollama server failed: ${response.status} ${response.statusText}`);
95
+ }
96
+ const json = await response.json();
97
+ return json.embedding;
98
+ }
99
+ async _embed(strings) {
100
+ const embeddings = [];
101
+ for await (const prompt of strings) {
102
+ const embedding = await this.caller.call(() => this._request(prompt));
103
+ embeddings.push(embedding);
104
+ }
105
+ return embeddings;
106
+ }
107
+ async embedDocuments(documents) {
108
+ return this._embed(documents);
109
+ }
110
+ async embedQuery(document) {
111
+ return (await this.embedDocuments([document]))[0];
112
+ }
113
+ }
114
+ exports.OllamaEmbeddings = OllamaEmbeddings;
@@ -0,0 +1,34 @@
1
+ import { OllamaInput, OllamaRequestParams } from "../util/ollama.js";
2
+ import { Embeddings, EmbeddingsParams } from "./base.js";
3
+ type CamelCasedRequestOptions = Omit<OllamaInput, "baseUrl" | "model">;
4
+ /**
5
+ * Interface for OllamaEmbeddings parameters. Extends EmbeddingsParams and
6
+ * defines additional parameters specific to the OllamaEmbeddings class.
7
+ */
8
+ interface OllamaEmbeddingsParams extends EmbeddingsParams {
9
+ /** The Ollama model to use, e.g: "llama2:13b" */
10
+ model?: string;
11
+ /** Base URL of the Ollama server, defaults to "http://localhost:11434" */
12
+ baseUrl?: string;
13
+ /** Advanced Ollama API request parameters in camelCase, see
14
+ * https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values
15
+ * for details of the available parameters.
16
+ */
17
+ requestOptions?: CamelCasedRequestOptions;
18
+ }
19
+ export declare class OllamaEmbeddings extends Embeddings {
20
+ model: string;
21
+ baseUrl: string;
22
+ requestOptions?: OllamaRequestParams["options"];
23
+ constructor(params?: OllamaEmbeddingsParams);
24
+ /** convert camelCased Ollama request options like "useMMap" to
25
+ * the snake_cased equivalent which the ollama API actually uses.
26
+ * Used only for consistency with the llms/Ollama and chatModels/Ollama classes
27
+ */
28
+ _convertOptions(requestOptions: CamelCasedRequestOptions): Record<string, unknown>;
29
+ _request(prompt: string): Promise<number[]>;
30
+ _embed(strings: string[]): Promise<number[][]>;
31
+ embedDocuments(documents: string[]): Promise<number[][]>;
32
+ embedQuery(document: string): Promise<number[]>;
33
+ }
34
+ export {};
@@ -0,0 +1,110 @@
1
+ import { Embeddings } from "./base.js";
2
+ export class OllamaEmbeddings extends Embeddings {
3
+ constructor(params) {
4
+ super(params || {});
5
+ Object.defineProperty(this, "model", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: "llama2"
10
+ });
11
+ Object.defineProperty(this, "baseUrl", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: "http://localhost:11434"
16
+ });
17
+ Object.defineProperty(this, "requestOptions", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ if (params?.model) {
24
+ this.model = params.model;
25
+ }
26
+ if (params?.baseUrl) {
27
+ this.baseUrl = params.baseUrl;
28
+ }
29
+ if (params?.requestOptions) {
30
+ this.requestOptions = this._convertOptions(params.requestOptions);
31
+ }
32
+ }
33
+ /** convert camelCased Ollama request options like "useMMap" to
34
+ * the snake_cased equivalent which the ollama API actually uses.
35
+ * Used only for consistency with the llms/Ollama and chatModels/Ollama classes
36
+ */
37
+ _convertOptions(requestOptions) {
38
+ const snakeCasedOptions = {};
39
+ const mapping = {
40
+ embeddingOnly: "embedding_only",
41
+ f16KV: "f16_kv",
42
+ frequencyPenalty: "frequency_penalty",
43
+ logitsAll: "logits_all",
44
+ lowVram: "low_vram",
45
+ mainGpu: "main_gpu",
46
+ mirostat: "mirostat",
47
+ mirostatEta: "mirostat_eta",
48
+ mirostatTau: "mirostat_tau",
49
+ numBatch: "num_batch",
50
+ numCtx: "num_ctx",
51
+ numGpu: "num_gpu",
52
+ numGqa: "num_gqa",
53
+ numKeep: "num_keep",
54
+ numThread: "num_thread",
55
+ penalizeNewline: "penalize_newline",
56
+ presencePenalty: "presence_penalty",
57
+ repeatLastN: "repeat_last_n",
58
+ repeatPenalty: "repeat_penalty",
59
+ ropeFrequencyBase: "rope_frequency_base",
60
+ ropeFrequencyScale: "rope_frequency_scale",
61
+ temperature: "temperature",
62
+ stop: "stop",
63
+ tfsZ: "tfs_z",
64
+ topK: "top_k",
65
+ topP: "top_p",
66
+ typicalP: "typical_p",
67
+ useMLock: "use_mlock",
68
+ useMMap: "use_mmap",
69
+ vocabOnly: "vocab_only",
70
+ };
71
+ for (const [key, value] of Object.entries(requestOptions)) {
72
+ const snakeCasedOption = mapping[key];
73
+ if (snakeCasedOption) {
74
+ snakeCasedOptions[snakeCasedOption] = value;
75
+ }
76
+ }
77
+ return snakeCasedOptions;
78
+ }
79
+ async _request(prompt) {
80
+ const { model, baseUrl, requestOptions } = this;
81
+ const response = await fetch(`${baseUrl}/api/embeddings`, {
82
+ method: "POST",
83
+ headers: { "Content-Type": "application/json" },
84
+ body: JSON.stringify({
85
+ prompt,
86
+ model,
87
+ options: requestOptions,
88
+ }),
89
+ });
90
+ if (!response.ok) {
91
+ throw new Error(`Request to Ollama server failed: ${response.status} ${response.statusText}`);
92
+ }
93
+ const json = await response.json();
94
+ return json.embedding;
95
+ }
96
+ async _embed(strings) {
97
+ const embeddings = [];
98
+ for await (const prompt of strings) {
99
+ const embedding = await this.caller.call(() => this._request(prompt));
100
+ embeddings.push(embedding);
101
+ }
102
+ return embeddings;
103
+ }
104
+ async embedDocuments(documents) {
105
+ return this._embed(documents);
106
+ }
107
+ async embedQuery(document) {
108
+ return (await this.embedDocuments([document]))[0];
109
+ }
110
+ }
@@ -24,8 +24,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  return result;
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.retrievers__multi_vector = exports.retrievers__document_compressors = exports.retrievers__contextual_compression = exports.retrievers__databerry = exports.retrievers__remote = exports.output_parsers = exports.callbacks = exports.schema__storage = exports.schema__runnable = exports.schema__retriever = exports.schema__query_constructor = exports.schema__output_parser = exports.schema__document = exports.schema = exports.chat_models__minimax = exports.chat_models__ollama = exports.chat_models__baiduwenxin = exports.chat_models__anthropic = exports.chat_models__openai = exports.chat_models__base = exports.document_transformers__openai_functions = exports.document_loaders__web__sort_xyz_blockchain = exports.document_loaders__web__serpapi = exports.document_loaders__base = exports.document = exports.memory = exports.text_splitter = exports.vectorstores__xata = exports.vectorstores__vectara = exports.vectorstores__prisma = exports.vectorstores__memory = exports.vectorstores__base = exports.prompts = exports.llms__ollama = exports.llms__aleph_alpha = exports.llms__ai21 = exports.llms__openai = exports.llms__base = exports.embeddings__minimax = exports.embeddings__openai = exports.embeddings__fake = exports.embeddings__cache_backed = exports.embeddings__base = exports.chains__openai_functions = exports.chains = exports.tools = exports.base_language = exports.agents__toolkits = exports.agents = exports.load__serializable = void 0;
28
- exports.evaluation = exports.experimental__plan_and_execute = exports.experimental__generative_agents = exports.experimental__babyagi = exports.experimental__autogpt = exports.util__math = exports.storage__in_memory = exports.stores__message__in_memory = exports.stores__file__in_memory = exports.stores__doc__in_memory = exports.cache = exports.retrievers__vespa = exports.retrievers__score_threshold = exports.retrievers__hyde = exports.retrievers__document_compressors__chain_extract = exports.retrievers__time_weighted = exports.retrievers__parent_document = void 0;
27
+ exports.retrievers__document_compressors = exports.retrievers__contextual_compression = exports.retrievers__databerry = exports.retrievers__remote = exports.output_parsers = exports.callbacks = exports.schema__storage = exports.schema__runnable = exports.schema__retriever = exports.schema__query_constructor = exports.schema__output_parser = exports.schema__document = exports.schema = exports.chat_models__minimax = exports.chat_models__ollama = exports.chat_models__baiduwenxin = exports.chat_models__anthropic = exports.chat_models__openai = exports.chat_models__base = exports.document_transformers__openai_functions = exports.document_loaders__web__sort_xyz_blockchain = exports.document_loaders__web__serpapi = exports.document_loaders__base = exports.document = exports.memory = exports.text_splitter = exports.vectorstores__xata = exports.vectorstores__vectara = exports.vectorstores__prisma = exports.vectorstores__memory = exports.vectorstores__base = exports.prompts = exports.llms__ollama = exports.llms__aleph_alpha = exports.llms__ai21 = exports.llms__openai = exports.llms__base = exports.embeddings__minimax = exports.embeddings__openai = exports.embeddings__ollama = exports.embeddings__fake = exports.embeddings__cache_backed = exports.embeddings__base = exports.chains__openai_functions = exports.chains = exports.tools = exports.base_language = exports.agents__toolkits = exports.agents = exports.load__serializable = void 0;
28
+ exports.evaluation = exports.experimental__plan_and_execute = exports.experimental__generative_agents = exports.experimental__babyagi = exports.experimental__autogpt = exports.util__math = exports.storage__in_memory = exports.stores__message__in_memory = exports.stores__file__in_memory = exports.stores__doc__in_memory = exports.cache = exports.retrievers__vespa = exports.retrievers__score_threshold = exports.retrievers__hyde = exports.retrievers__document_compressors__chain_extract = exports.retrievers__time_weighted = exports.retrievers__parent_document = exports.retrievers__multi_vector = void 0;
29
29
  exports.load__serializable = __importStar(require("../load/serializable.cjs"));
30
30
  exports.agents = __importStar(require("../agents/index.cjs"));
31
31
  exports.agents__toolkits = __importStar(require("../agents/toolkits/index.cjs"));
@@ -36,6 +36,7 @@ exports.chains__openai_functions = __importStar(require("../chains/openai_functi
36
36
  exports.embeddings__base = __importStar(require("../embeddings/base.cjs"));
37
37
  exports.embeddings__cache_backed = __importStar(require("../embeddings/cache_backed.cjs"));
38
38
  exports.embeddings__fake = __importStar(require("../embeddings/fake.cjs"));
39
+ exports.embeddings__ollama = __importStar(require("../embeddings/ollama.cjs"));
39
40
  exports.embeddings__openai = __importStar(require("../embeddings/openai.cjs"));
40
41
  exports.embeddings__minimax = __importStar(require("../embeddings/minimax.cjs"));
41
42
  exports.llms__base = __importStar(require("../llms/base.cjs"));
@@ -8,6 +8,7 @@ export * as chains__openai_functions from "../chains/openai_functions/index.js";
8
8
  export * as embeddings__base from "../embeddings/base.js";
9
9
  export * as embeddings__cache_backed from "../embeddings/cache_backed.js";
10
10
  export * as embeddings__fake from "../embeddings/fake.js";
11
+ export * as embeddings__ollama from "../embeddings/ollama.js";
11
12
  export * as embeddings__openai from "../embeddings/openai.js";
12
13
  export * as embeddings__minimax from "../embeddings/minimax.js";
13
14
  export * as llms__base from "../llms/base.js";
@@ -9,6 +9,7 @@ export * as chains__openai_functions from "../chains/openai_functions/index.js";
9
9
  export * as embeddings__base from "../embeddings/base.js";
10
10
  export * as embeddings__cache_backed from "../embeddings/cache_backed.js";
11
11
  export * as embeddings__fake from "../embeddings/fake.js";
12
+ export * as embeddings__ollama from "../embeddings/ollama.js";
12
13
  export * as embeddings__openai from "../embeddings/openai.js";
13
14
  export * as embeddings__minimax from "../embeddings/minimax.js";
14
15
  export * as llms__base from "../llms/base.js";
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/embeddings/ollama.cjs');
@@ -0,0 +1 @@
1
+ export * from '../dist/embeddings/ollama.js'
@@ -0,0 +1 @@
1
+ export * from '../dist/embeddings/ollama.js'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "langchain",
3
- "version": "0.0.144",
3
+ "version": "0.0.145",
4
4
  "description": "Typescript bindings for langchain",
5
5
  "type": "module",
6
6
  "engines": {
@@ -82,6 +82,9 @@
82
82
  "embeddings/fake.cjs",
83
83
  "embeddings/fake.js",
84
84
  "embeddings/fake.d.ts",
85
+ "embeddings/ollama.cjs",
86
+ "embeddings/ollama.js",
87
+ "embeddings/ollama.d.ts",
85
88
  "embeddings/openai.cjs",
86
89
  "embeddings/openai.js",
87
90
  "embeddings/openai.d.ts",
@@ -617,9 +620,9 @@
617
620
  "clean": "rimraf dist/ && node scripts/create-entrypoints.js pre",
618
621
  "prepack": "yarn build",
619
622
  "release": "release-it --only-version --config .release-it.json",
620
- "test": "NODE_OPTIONS=--experimental-vm-modules jest --testPathIgnorePatterns=\\.int\\.test.ts --testTimeout 30000",
623
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest --testPathIgnorePatterns=\\.int\\.test.ts --testTimeout 30000 --maxWorkers=50%",
621
624
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --testPathIgnorePatterns=\\.int\\.test.ts",
622
- "test:integration": "NODE_OPTIONS=--experimental-vm-modules jest --testPathPattern=\\.int\\.test.ts --testTimeout 100000",
625
+ "test:integration": "NODE_OPTIONS=--experimental-vm-modules jest --testPathPattern=\\.int\\.test.ts --testTimeout 100000 --maxWorkers=50%",
623
626
  "test:single": "NODE_OPTIONS=--experimental-vm-modules yarn run jest --config jest.config.cjs --testTimeout 100000",
624
627
  "format": "prettier --write \"src\"",
625
628
  "format:check": "prettier --check \"src\""
@@ -661,9 +664,9 @@
661
664
  "@supabase/postgrest-js": "^1.1.1",
662
665
  "@supabase/supabase-js": "^2.10.0",
663
666
  "@tensorflow-models/universal-sentence-encoder": "^1.3.3",
664
- "@tensorflow/tfjs-backend-cpu": "^4.4.0",
665
- "@tensorflow/tfjs-converter": "^4.4.0",
666
- "@tensorflow/tfjs-core": "^4.4.0",
667
+ "@tensorflow/tfjs-backend-cpu": "^3",
668
+ "@tensorflow/tfjs-converter": "^3.6.0",
669
+ "@tensorflow/tfjs-core": "^3.6.0",
667
670
  "@tsconfig/recommended": "^1.0.2",
668
671
  "@types/d3-dsv": "^2",
669
672
  "@types/decamelize": "^1.2.0",
@@ -688,7 +691,7 @@
688
691
  "axios": "^0.26.0",
689
692
  "cheerio": "^1.0.0-rc.12",
690
693
  "chromadb": "^1.5.3",
691
- "cohere-ai": "^5.0.2",
694
+ "cohere-ai": ">=6.0.0",
692
695
  "d3-dsv": "^2.0.0",
693
696
  "dotenv": "^16.0.3",
694
697
  "dpdm": "^3.12.0",
@@ -786,8 +789,8 @@
786
789
  "apify-client": "^2.7.1",
787
790
  "axios": "*",
788
791
  "cheerio": "^1.0.0-rc.12",
789
- "chromadb": "^1.5.3",
790
- "cohere-ai": "^5.0.2",
792
+ "chromadb": "*",
793
+ "cohere-ai": ">=6.0.0",
791
794
  "d3-dsv": "^2.0.0",
792
795
  "epub2": "^3.0.1",
793
796
  "faiss-node": "^0.3.0",
@@ -1229,6 +1232,11 @@
1229
1232
  "import": "./embeddings/fake.js",
1230
1233
  "require": "./embeddings/fake.cjs"
1231
1234
  },
1235
+ "./embeddings/ollama": {
1236
+ "types": "./embeddings/ollama.d.ts",
1237
+ "import": "./embeddings/ollama.js",
1238
+ "require": "./embeddings/ollama.cjs"
1239
+ },
1232
1240
  "./embeddings/openai": {
1233
1241
  "types": "./embeddings/openai.d.ts",
1234
1242
  "import": "./embeddings/openai.js",