modelfusion 0.131.1 → 0.133.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.
- package/CHANGELOG.md +17 -0
- package/core/getRun.cjs +2 -8
- package/core/getRun.d.ts +1 -1
- package/core/getRun.js +2 -8
- package/model-function/embed/EmbeddingModel.d.ts +1 -1
- package/model-provider/cohere/CohereTextEmbeddingModel.cjs +9 -10
- package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +8 -8
- package/model-provider/cohere/CohereTextEmbeddingModel.js +9 -10
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +3 -3
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +2 -2
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +3 -3
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +3 -3
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +2 -2
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +3 -3
- package/model-provider/mistral/MistralTextEmbeddingModel.cjs +1 -1
- package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +1 -1
- package/model-provider/mistral/MistralTextEmbeddingModel.js +1 -1
- package/model-provider/ollama/OllamaTextEmbeddingModel.cjs +3 -3
- package/model-provider/ollama/OllamaTextEmbeddingModel.d.ts +2 -2
- package/model-provider/ollama/OllamaTextEmbeddingModel.js +3 -3
- package/model-provider/openai/AbstractOpenAITextEmbeddingModel.cjs +1 -0
- package/model-provider/openai/AbstractOpenAITextEmbeddingModel.d.ts +1 -0
- package/model-provider/openai/AbstractOpenAITextEmbeddingModel.js +1 -0
- package/model-provider/openai/OpenAIChatModel.cjs +15 -0
- package/model-provider/openai/OpenAIChatModel.d.ts +15 -0
- package/model-provider/openai/OpenAIChatModel.js +15 -0
- package/model-provider/openai/OpenAITextEmbeddingModel.cjs +15 -4
- package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +14 -4
- package/model-provider/openai/OpenAITextEmbeddingModel.js +15 -4
- package/model-provider/openai/TikTokenTokenizer.cjs +5 -0
- package/model-provider/openai/TikTokenTokenizer.js +5 -0
- package/model-provider/openai-compatible/OpenAICompatibleTextEmbeddingModel.cjs +3 -3
- package/model-provider/openai-compatible/OpenAICompatibleTextEmbeddingModel.d.ts +2 -2
- package/model-provider/openai-compatible/OpenAICompatibleTextEmbeddingModel.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.133.0 - 2024-01-26
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- Support for OpenAI embedding custom dimensions.
|
8
|
+
|
9
|
+
### Changed
|
10
|
+
|
11
|
+
- **breaking change**: renamed `embeddingDimensions` setting to `dimensions`
|
12
|
+
|
13
|
+
## v0.132.0 - 2024-01-25
|
14
|
+
|
15
|
+
### Added
|
16
|
+
|
17
|
+
- Support for OpenAI `text-embedding-3-small` and `text-embedding-3-large` embedding models.
|
18
|
+
- Support for OpenAI `gpt-4-turbo-preview`, `gpt-4-0125-preview`, and `gpt-3.5-turbo-0125` chat models.
|
19
|
+
|
3
20
|
## v0.131.1 - 2024-01-25
|
4
21
|
|
5
22
|
### Fixed
|
package/core/getRun.cjs
CHANGED
@@ -24,16 +24,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
26
|
exports.withRun = exports.getRun = void 0;
|
27
|
+
const detectRuntime_js_1 = require("../util/detectRuntime.cjs");
|
27
28
|
let runStorage;
|
28
29
|
async function ensureLoaded() {
|
29
|
-
|
30
|
-
const versions = "versions";
|
31
|
-
const isNode = typeof process !== "undefined" &&
|
32
|
-
process[versions] != null &&
|
33
|
-
process[versions].node != null;
|
34
|
-
if (!isNode)
|
35
|
-
return Promise.resolve();
|
36
|
-
if (!runStorage) {
|
30
|
+
if ((0, detectRuntime_js_1.detectRuntime)() === "node" && !runStorage) {
|
37
31
|
// Note: using "async_hooks" instead of "node:async_hooks" to avoid webpack fallback problems.
|
38
32
|
const { AsyncLocalStorage } = await Promise.resolve().then(() => __importStar(require("async_hooks")));
|
39
33
|
runStorage = new AsyncLocalStorage();
|
package/core/getRun.d.ts
CHANGED
package/core/getRun.js
CHANGED
@@ -1,13 +1,7 @@
|
|
1
|
+
import { detectRuntime } from "../util/detectRuntime.js";
|
1
2
|
let runStorage;
|
2
3
|
async function ensureLoaded() {
|
3
|
-
|
4
|
-
const versions = "versions";
|
5
|
-
const isNode = typeof process !== "undefined" &&
|
6
|
-
process[versions] != null &&
|
7
|
-
process[versions].node != null;
|
8
|
-
if (!isNode)
|
9
|
-
return Promise.resolve();
|
10
|
-
if (!runStorage) {
|
4
|
+
if (detectRuntime() === "node" && !runStorage) {
|
11
5
|
// Note: using "async_hooks" instead of "node:async_hooks" to avoid webpack fallback problems.
|
12
6
|
const { AsyncLocalStorage } = await import("async_hooks");
|
13
7
|
runStorage = new AsyncLocalStorage();
|
@@ -7,7 +7,7 @@ export interface EmbeddingModel<VALUE, SETTINGS extends EmbeddingModelSettings =
|
|
7
7
|
/**
|
8
8
|
* The size of the embedding vector.
|
9
9
|
*/
|
10
|
-
readonly
|
10
|
+
readonly dimensions: number | undefined;
|
11
11
|
/**
|
12
12
|
* Limit of how many values can be sent in a single API call.
|
13
13
|
*/
|
@@ -12,31 +12,31 @@ const CohereTokenizer_js_1 = require("./CohereTokenizer.cjs");
|
|
12
12
|
exports.COHERE_TEXT_EMBEDDING_MODELS = {
|
13
13
|
"embed-english-light-v2.0": {
|
14
14
|
contextWindowSize: 512,
|
15
|
-
|
15
|
+
dimensions: 1024,
|
16
16
|
},
|
17
17
|
"embed-english-v2.0": {
|
18
18
|
contextWindowSize: 512,
|
19
|
-
|
19
|
+
dimensions: 4096,
|
20
20
|
},
|
21
21
|
"embed-multilingual-v2.0": {
|
22
22
|
contextWindowSize: 256,
|
23
|
-
|
23
|
+
dimensions: 768,
|
24
24
|
},
|
25
25
|
"embed-english-v3.0": {
|
26
26
|
contextWindowSize: 512,
|
27
|
-
|
27
|
+
dimensions: 1024,
|
28
28
|
},
|
29
29
|
"embed-english-light-v3.0": {
|
30
30
|
contextWindowSize: 512,
|
31
|
-
|
31
|
+
dimensions: 384,
|
32
32
|
},
|
33
33
|
"embed-multilingual-v3.0": {
|
34
34
|
contextWindowSize: 512,
|
35
|
-
|
35
|
+
dimensions: 1024,
|
36
36
|
},
|
37
37
|
"embed-multilingual-light-v3.0": {
|
38
38
|
contextWindowSize: 512,
|
39
|
-
|
39
|
+
dimensions: 384,
|
40
40
|
},
|
41
41
|
};
|
42
42
|
/**
|
@@ -74,7 +74,7 @@ class CohereTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
74
74
|
writable: true,
|
75
75
|
value: true
|
76
76
|
});
|
77
|
-
Object.defineProperty(this, "
|
77
|
+
Object.defineProperty(this, "dimensions", {
|
78
78
|
enumerable: true,
|
79
79
|
configurable: true,
|
80
80
|
writable: true,
|
@@ -98,8 +98,7 @@ class CohereTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
98
98
|
api: this.settings.api,
|
99
99
|
model: this.settings.model,
|
100
100
|
});
|
101
|
-
this.
|
102
|
-
exports.COHERE_TEXT_EMBEDDING_MODELS[this.modelName].embeddingDimensions;
|
101
|
+
this.dimensions = exports.COHERE_TEXT_EMBEDDING_MODELS[this.modelName].dimensions;
|
103
102
|
}
|
104
103
|
get modelName() {
|
105
104
|
return this.settings.model;
|
@@ -7,31 +7,31 @@ import { FullTokenizer } from "../../model-function/tokenize-text/Tokenizer.js";
|
|
7
7
|
export declare const COHERE_TEXT_EMBEDDING_MODELS: {
|
8
8
|
"embed-english-light-v2.0": {
|
9
9
|
contextWindowSize: number;
|
10
|
-
|
10
|
+
dimensions: number;
|
11
11
|
};
|
12
12
|
"embed-english-v2.0": {
|
13
13
|
contextWindowSize: number;
|
14
|
-
|
14
|
+
dimensions: number;
|
15
15
|
};
|
16
16
|
"embed-multilingual-v2.0": {
|
17
17
|
contextWindowSize: number;
|
18
|
-
|
18
|
+
dimensions: number;
|
19
19
|
};
|
20
20
|
"embed-english-v3.0": {
|
21
21
|
contextWindowSize: number;
|
22
|
-
|
22
|
+
dimensions: number;
|
23
23
|
};
|
24
24
|
"embed-english-light-v3.0": {
|
25
25
|
contextWindowSize: number;
|
26
|
-
|
26
|
+
dimensions: number;
|
27
27
|
};
|
28
28
|
"embed-multilingual-v3.0": {
|
29
29
|
contextWindowSize: number;
|
30
|
-
|
30
|
+
dimensions: number;
|
31
31
|
};
|
32
32
|
"embed-multilingual-light-v3.0": {
|
33
33
|
contextWindowSize: number;
|
34
|
-
|
34
|
+
dimensions: number;
|
35
35
|
};
|
36
36
|
};
|
37
37
|
export type CohereTextEmbeddingModelType = keyof typeof COHERE_TEXT_EMBEDDING_MODELS;
|
@@ -61,7 +61,7 @@ export declare class CohereTextEmbeddingModel extends AbstractModel<CohereTextEm
|
|
61
61
|
get modelName(): "embed-english-light-v2.0" | "embed-english-v2.0" | "embed-multilingual-v2.0" | "embed-english-v3.0" | "embed-english-light-v3.0" | "embed-multilingual-v3.0" | "embed-multilingual-light-v3.0";
|
62
62
|
readonly maxValuesPerCall = 96;
|
63
63
|
readonly isParallelizable = true;
|
64
|
-
readonly
|
64
|
+
readonly dimensions: number;
|
65
65
|
readonly contextWindowSize: number;
|
66
66
|
private readonly tokenizer;
|
67
67
|
tokenize(text: string): Promise<number[]>;
|
@@ -9,31 +9,31 @@ import { CohereTokenizer } from "./CohereTokenizer.js";
|
|
9
9
|
export const COHERE_TEXT_EMBEDDING_MODELS = {
|
10
10
|
"embed-english-light-v2.0": {
|
11
11
|
contextWindowSize: 512,
|
12
|
-
|
12
|
+
dimensions: 1024,
|
13
13
|
},
|
14
14
|
"embed-english-v2.0": {
|
15
15
|
contextWindowSize: 512,
|
16
|
-
|
16
|
+
dimensions: 4096,
|
17
17
|
},
|
18
18
|
"embed-multilingual-v2.0": {
|
19
19
|
contextWindowSize: 256,
|
20
|
-
|
20
|
+
dimensions: 768,
|
21
21
|
},
|
22
22
|
"embed-english-v3.0": {
|
23
23
|
contextWindowSize: 512,
|
24
|
-
|
24
|
+
dimensions: 1024,
|
25
25
|
},
|
26
26
|
"embed-english-light-v3.0": {
|
27
27
|
contextWindowSize: 512,
|
28
|
-
|
28
|
+
dimensions: 384,
|
29
29
|
},
|
30
30
|
"embed-multilingual-v3.0": {
|
31
31
|
contextWindowSize: 512,
|
32
|
-
|
32
|
+
dimensions: 1024,
|
33
33
|
},
|
34
34
|
"embed-multilingual-light-v3.0": {
|
35
35
|
contextWindowSize: 512,
|
36
|
-
|
36
|
+
dimensions: 384,
|
37
37
|
},
|
38
38
|
};
|
39
39
|
/**
|
@@ -71,7 +71,7 @@ export class CohereTextEmbeddingModel extends AbstractModel {
|
|
71
71
|
writable: true,
|
72
72
|
value: true
|
73
73
|
});
|
74
|
-
Object.defineProperty(this, "
|
74
|
+
Object.defineProperty(this, "dimensions", {
|
75
75
|
enumerable: true,
|
76
76
|
configurable: true,
|
77
77
|
writable: true,
|
@@ -95,8 +95,7 @@ export class CohereTextEmbeddingModel extends AbstractModel {
|
|
95
95
|
api: this.settings.api,
|
96
96
|
model: this.settings.model,
|
97
97
|
});
|
98
|
-
this.
|
99
|
-
COHERE_TEXT_EMBEDDING_MODELS[this.modelName].embeddingDimensions;
|
98
|
+
this.dimensions = COHERE_TEXT_EMBEDDING_MODELS[this.modelName].dimensions;
|
100
99
|
}
|
101
100
|
get modelName() {
|
102
101
|
return this.settings.model;
|
@@ -55,7 +55,7 @@ class HuggingFaceTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
55
55
|
writable: true,
|
56
56
|
value: undefined
|
57
57
|
});
|
58
|
-
Object.defineProperty(this, "
|
58
|
+
Object.defineProperty(this, "dimensions", {
|
59
59
|
enumerable: true,
|
60
60
|
configurable: true,
|
61
61
|
writable: true,
|
@@ -75,7 +75,7 @@ class HuggingFaceTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
75
75
|
});
|
76
76
|
// There is no limit documented in the HuggingFace API. Use 1024 as a reasonable default.
|
77
77
|
this.maxValuesPerCall = settings.maxValuesPerCall ?? 1024;
|
78
|
-
this.
|
78
|
+
this.dimensions = settings.dimensions;
|
79
79
|
}
|
80
80
|
get modelName() {
|
81
81
|
return this.settings.model;
|
@@ -112,7 +112,7 @@ class HuggingFaceTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
112
112
|
}
|
113
113
|
get settingsForEvent() {
|
114
114
|
return {
|
115
|
-
|
115
|
+
dimensions: this.settings.dimensions,
|
116
116
|
options: this.settings.options,
|
117
117
|
};
|
118
118
|
}
|
@@ -7,7 +7,7 @@ export interface HuggingFaceTextEmbeddingModelSettings extends EmbeddingModelSet
|
|
7
7
|
api?: ApiConfiguration;
|
8
8
|
model: string;
|
9
9
|
maxValuesPerCall?: number;
|
10
|
-
|
10
|
+
dimensions?: number;
|
11
11
|
options?: {
|
12
12
|
useCache?: boolean;
|
13
13
|
waitForModel?: boolean;
|
@@ -40,7 +40,7 @@ export declare class HuggingFaceTextEmbeddingModel extends AbstractModel<Hugging
|
|
40
40
|
readonly maxValuesPerCall: number;
|
41
41
|
readonly isParallelizable = true;
|
42
42
|
readonly contextWindowSize: undefined;
|
43
|
-
readonly
|
43
|
+
readonly dimensions: number | undefined;
|
44
44
|
readonly tokenizer: undefined;
|
45
45
|
callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<HuggingFaceTextEmbeddingResponse>;
|
46
46
|
get settingsForEvent(): Partial<HuggingFaceTextEmbeddingModelSettings>;
|
@@ -52,7 +52,7 @@ export class HuggingFaceTextEmbeddingModel extends AbstractModel {
|
|
52
52
|
writable: true,
|
53
53
|
value: undefined
|
54
54
|
});
|
55
|
-
Object.defineProperty(this, "
|
55
|
+
Object.defineProperty(this, "dimensions", {
|
56
56
|
enumerable: true,
|
57
57
|
configurable: true,
|
58
58
|
writable: true,
|
@@ -72,7 +72,7 @@ export class HuggingFaceTextEmbeddingModel extends AbstractModel {
|
|
72
72
|
});
|
73
73
|
// There is no limit documented in the HuggingFace API. Use 1024 as a reasonable default.
|
74
74
|
this.maxValuesPerCall = settings.maxValuesPerCall ?? 1024;
|
75
|
-
this.
|
75
|
+
this.dimensions = settings.dimensions;
|
76
76
|
}
|
77
77
|
get modelName() {
|
78
78
|
return this.settings.model;
|
@@ -109,7 +109,7 @@ export class HuggingFaceTextEmbeddingModel extends AbstractModel {
|
|
109
109
|
}
|
110
110
|
get settingsForEvent() {
|
111
111
|
return {
|
112
|
-
|
112
|
+
dimensions: this.settings.dimensions,
|
113
113
|
options: this.settings.options,
|
114
114
|
};
|
115
115
|
}
|
@@ -44,8 +44,8 @@ class LlamaCppTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
44
44
|
get isParallelizable() {
|
45
45
|
return this.settings.isParallelizable ?? false;
|
46
46
|
}
|
47
|
-
get
|
48
|
-
return this.settings.
|
47
|
+
get dimensions() {
|
48
|
+
return this.settings.dimensions;
|
49
49
|
}
|
50
50
|
async tokenize(text) {
|
51
51
|
return this.tokenizer.tokenize(text);
|
@@ -76,7 +76,7 @@ class LlamaCppTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
76
76
|
}
|
77
77
|
get settingsForEvent() {
|
78
78
|
return {
|
79
|
-
|
79
|
+
dimensions: this.settings.dimensions,
|
80
80
|
};
|
81
81
|
}
|
82
82
|
async doEmbedValues(texts, options) {
|
@@ -5,7 +5,7 @@ import { AbstractModel } from "../../model-function/AbstractModel.js";
|
|
5
5
|
import { EmbeddingModel, EmbeddingModelSettings } from "../../model-function/embed/EmbeddingModel.js";
|
6
6
|
export interface LlamaCppTextEmbeddingModelSettings extends EmbeddingModelSettings {
|
7
7
|
api?: ApiConfiguration;
|
8
|
-
|
8
|
+
dimensions?: number;
|
9
9
|
isParallelizable?: boolean;
|
10
10
|
}
|
11
11
|
export declare class LlamaCppTextEmbeddingModel extends AbstractModel<LlamaCppTextEmbeddingModelSettings> implements EmbeddingModel<string, LlamaCppTextEmbeddingModelSettings> {
|
@@ -15,7 +15,7 @@ export declare class LlamaCppTextEmbeddingModel extends AbstractModel<LlamaCppTe
|
|
15
15
|
readonly maxValuesPerCall = 1;
|
16
16
|
get isParallelizable(): boolean;
|
17
17
|
readonly contextWindowSize: undefined;
|
18
|
-
get
|
18
|
+
get dimensions(): number | undefined;
|
19
19
|
private readonly tokenizer;
|
20
20
|
tokenize(text: string): Promise<number[]>;
|
21
21
|
callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<LlamaCppTextEmbeddingResponse>;
|
@@ -41,8 +41,8 @@ export class LlamaCppTextEmbeddingModel extends AbstractModel {
|
|
41
41
|
get isParallelizable() {
|
42
42
|
return this.settings.isParallelizable ?? false;
|
43
43
|
}
|
44
|
-
get
|
45
|
-
return this.settings.
|
44
|
+
get dimensions() {
|
45
|
+
return this.settings.dimensions;
|
46
46
|
}
|
47
47
|
async tokenize(text) {
|
48
48
|
return this.tokenizer.tokenize(text);
|
@@ -73,7 +73,7 @@ export class LlamaCppTextEmbeddingModel extends AbstractModel {
|
|
73
73
|
}
|
74
74
|
get settingsForEvent() {
|
75
75
|
return {
|
76
|
-
|
76
|
+
dimensions: this.settings.dimensions,
|
77
77
|
};
|
78
78
|
}
|
79
79
|
async doEmbedValues(texts, options) {
|
@@ -33,7 +33,7 @@ class MistralTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
33
33
|
writable: true,
|
34
34
|
value: false
|
35
35
|
});
|
36
|
-
Object.defineProperty(this, "
|
36
|
+
Object.defineProperty(this, "dimensions", {
|
37
37
|
enumerable: true,
|
38
38
|
configurable: true,
|
39
39
|
writable: true,
|
@@ -26,7 +26,7 @@ export declare class MistralTextEmbeddingModel extends AbstractModel<MistralText
|
|
26
26
|
* them for now.
|
27
27
|
*/
|
28
28
|
readonly isParallelizable = false;
|
29
|
-
readonly
|
29
|
+
readonly dimensions = 1024;
|
30
30
|
callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<MistralTextEmbeddingResponse>;
|
31
31
|
get settingsForEvent(): Partial<MistralTextEmbeddingModelSettings>;
|
32
32
|
doEmbedValues(texts: string[], options: FunctionCallOptions): Promise<{
|
@@ -30,7 +30,7 @@ export class MistralTextEmbeddingModel extends AbstractModel {
|
|
30
30
|
writable: true,
|
31
31
|
value: false
|
32
32
|
});
|
33
|
-
Object.defineProperty(this, "
|
33
|
+
Object.defineProperty(this, "dimensions", {
|
34
34
|
enumerable: true,
|
35
35
|
configurable: true,
|
36
36
|
writable: true,
|
@@ -30,8 +30,8 @@ class OllamaTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
30
30
|
get isParallelizable() {
|
31
31
|
return this.settings.isParallelizable ?? false;
|
32
32
|
}
|
33
|
-
get
|
34
|
-
return this.settings.
|
33
|
+
get dimensions() {
|
34
|
+
return this.settings.dimensions;
|
35
35
|
}
|
36
36
|
async callAPI(texts, callOptions) {
|
37
37
|
if (texts.length > this.maxValuesPerCall) {
|
@@ -62,7 +62,7 @@ class OllamaTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
62
62
|
}
|
63
63
|
get settingsForEvent() {
|
64
64
|
return {
|
65
|
-
|
65
|
+
dimensions: this.settings.dimensions,
|
66
66
|
};
|
67
67
|
}
|
68
68
|
async doEmbedValues(texts, options) {
|
@@ -6,7 +6,7 @@ import { EmbeddingModel, EmbeddingModelSettings } from "../../model-function/emb
|
|
6
6
|
export interface OllamaTextEmbeddingModelSettings extends EmbeddingModelSettings {
|
7
7
|
api?: ApiConfiguration;
|
8
8
|
model: string;
|
9
|
-
|
9
|
+
dimensions?: number;
|
10
10
|
isParallelizable?: boolean;
|
11
11
|
}
|
12
12
|
export declare class OllamaTextEmbeddingModel extends AbstractModel<OllamaTextEmbeddingModelSettings> implements EmbeddingModel<string, OllamaTextEmbeddingModelSettings> {
|
@@ -15,7 +15,7 @@ export declare class OllamaTextEmbeddingModel extends AbstractModel<OllamaTextEm
|
|
15
15
|
get modelName(): null;
|
16
16
|
readonly maxValuesPerCall = 1;
|
17
17
|
get isParallelizable(): boolean;
|
18
|
-
get
|
18
|
+
get dimensions(): number | undefined;
|
19
19
|
callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<OllamaTextEmbeddingResponse>;
|
20
20
|
get settingsForEvent(): Partial<OllamaTextEmbeddingModelSettings>;
|
21
21
|
doEmbedValues(texts: string[], options: FunctionCallOptions): Promise<{
|
@@ -27,8 +27,8 @@ export class OllamaTextEmbeddingModel extends AbstractModel {
|
|
27
27
|
get isParallelizable() {
|
28
28
|
return this.settings.isParallelizable ?? false;
|
29
29
|
}
|
30
|
-
get
|
31
|
-
return this.settings.
|
30
|
+
get dimensions() {
|
31
|
+
return this.settings.dimensions;
|
32
32
|
}
|
33
33
|
async callAPI(texts, callOptions) {
|
34
34
|
if (texts.length > this.maxValuesPerCall) {
|
@@ -59,7 +59,7 @@ export class OllamaTextEmbeddingModel extends AbstractModel {
|
|
59
59
|
}
|
60
60
|
get settingsForEvent() {
|
61
61
|
return {
|
62
|
-
|
62
|
+
dimensions: this.settings.dimensions,
|
63
63
|
};
|
64
64
|
}
|
65
65
|
async doEmbedValues(texts, options) {
|
@@ -43,6 +43,7 @@ class AbstractOpenAITextEmbeddingModel extends AbstractModel_js_1.AbstractModel
|
|
43
43
|
body: {
|
44
44
|
model: this.modelName,
|
45
45
|
input: texts,
|
46
|
+
dimensions: this.settings.dimensions,
|
46
47
|
user: this.settings.isUserIdForwardingEnabled
|
47
48
|
? callOptions.run?.userId
|
48
49
|
: undefined,
|
@@ -6,6 +6,7 @@ import { EmbeddingModelSettings } from "../../model-function/embed/EmbeddingMode
|
|
6
6
|
export interface AbstractOpenAITextEmbeddingModelSettings extends EmbeddingModelSettings {
|
7
7
|
api?: ApiConfiguration;
|
8
8
|
model: string;
|
9
|
+
dimensions?: number;
|
9
10
|
maxValuesPerCall?: number | undefined;
|
10
11
|
isUserIdForwardingEnabled?: boolean;
|
11
12
|
}
|
@@ -33,11 +33,21 @@ exports.OPENAI_CHAT_MODELS = {
|
|
33
33
|
fineTunedPromptTokenCostInMillicents: null,
|
34
34
|
fineTunedCompletionTokenCostInMillicents: null,
|
35
35
|
},
|
36
|
+
"gpt-4-turbo-preview": {
|
37
|
+
contextWindowSize: 128000,
|
38
|
+
promptTokenCostInMillicents: 1,
|
39
|
+
completionTokenCostInMillicents: 3,
|
40
|
+
},
|
36
41
|
"gpt-4-1106-preview": {
|
37
42
|
contextWindowSize: 128000,
|
38
43
|
promptTokenCostInMillicents: 1,
|
39
44
|
completionTokenCostInMillicents: 3,
|
40
45
|
},
|
46
|
+
"gpt-4-0125-preview": {
|
47
|
+
contextWindowSize: 128000,
|
48
|
+
promptTokenCostInMillicents: 1,
|
49
|
+
completionTokenCostInMillicents: 3,
|
50
|
+
},
|
41
51
|
"gpt-4-vision-preview": {
|
42
52
|
contextWindowSize: 128000,
|
43
53
|
promptTokenCostInMillicents: 1,
|
@@ -65,6 +75,11 @@ exports.OPENAI_CHAT_MODELS = {
|
|
65
75
|
fineTunedPromptTokenCostInMillicents: 0.3,
|
66
76
|
fineTunedCompletionTokenCostInMillicents: 0.6,
|
67
77
|
},
|
78
|
+
"gpt-3.5-turbo-0125": {
|
79
|
+
contextWindowSize: 16385,
|
80
|
+
promptTokenCostInMillicents: 0.05,
|
81
|
+
completionTokenCostInMillicents: 0.15,
|
82
|
+
},
|
68
83
|
"gpt-3.5-turbo-1106": {
|
69
84
|
contextWindowSize: 16385,
|
70
85
|
promptTokenCostInMillicents: 0.1,
|
@@ -26,11 +26,21 @@ export declare const OPENAI_CHAT_MODELS: {
|
|
26
26
|
fineTunedPromptTokenCostInMillicents: null;
|
27
27
|
fineTunedCompletionTokenCostInMillicents: null;
|
28
28
|
};
|
29
|
+
"gpt-4-turbo-preview": {
|
30
|
+
contextWindowSize: number;
|
31
|
+
promptTokenCostInMillicents: number;
|
32
|
+
completionTokenCostInMillicents: number;
|
33
|
+
};
|
29
34
|
"gpt-4-1106-preview": {
|
30
35
|
contextWindowSize: number;
|
31
36
|
promptTokenCostInMillicents: number;
|
32
37
|
completionTokenCostInMillicents: number;
|
33
38
|
};
|
39
|
+
"gpt-4-0125-preview": {
|
40
|
+
contextWindowSize: number;
|
41
|
+
promptTokenCostInMillicents: number;
|
42
|
+
completionTokenCostInMillicents: number;
|
43
|
+
};
|
34
44
|
"gpt-4-vision-preview": {
|
35
45
|
contextWindowSize: number;
|
36
46
|
promptTokenCostInMillicents: number;
|
@@ -58,6 +68,11 @@ export declare const OPENAI_CHAT_MODELS: {
|
|
58
68
|
fineTunedPromptTokenCostInMillicents: number;
|
59
69
|
fineTunedCompletionTokenCostInMillicents: number;
|
60
70
|
};
|
71
|
+
"gpt-3.5-turbo-0125": {
|
72
|
+
contextWindowSize: number;
|
73
|
+
promptTokenCostInMillicents: number;
|
74
|
+
completionTokenCostInMillicents: number;
|
75
|
+
};
|
61
76
|
"gpt-3.5-turbo-1106": {
|
62
77
|
contextWindowSize: number;
|
63
78
|
promptTokenCostInMillicents: number;
|
@@ -30,11 +30,21 @@ export const OPENAI_CHAT_MODELS = {
|
|
30
30
|
fineTunedPromptTokenCostInMillicents: null,
|
31
31
|
fineTunedCompletionTokenCostInMillicents: null,
|
32
32
|
},
|
33
|
+
"gpt-4-turbo-preview": {
|
34
|
+
contextWindowSize: 128000,
|
35
|
+
promptTokenCostInMillicents: 1,
|
36
|
+
completionTokenCostInMillicents: 3,
|
37
|
+
},
|
33
38
|
"gpt-4-1106-preview": {
|
34
39
|
contextWindowSize: 128000,
|
35
40
|
promptTokenCostInMillicents: 1,
|
36
41
|
completionTokenCostInMillicents: 3,
|
37
42
|
},
|
43
|
+
"gpt-4-0125-preview": {
|
44
|
+
contextWindowSize: 128000,
|
45
|
+
promptTokenCostInMillicents: 1,
|
46
|
+
completionTokenCostInMillicents: 3,
|
47
|
+
},
|
38
48
|
"gpt-4-vision-preview": {
|
39
49
|
contextWindowSize: 128000,
|
40
50
|
promptTokenCostInMillicents: 1,
|
@@ -62,6 +72,11 @@ export const OPENAI_CHAT_MODELS = {
|
|
62
72
|
fineTunedPromptTokenCostInMillicents: 0.3,
|
63
73
|
fineTunedCompletionTokenCostInMillicents: 0.6,
|
64
74
|
},
|
75
|
+
"gpt-3.5-turbo-0125": {
|
76
|
+
contextWindowSize: 16385,
|
77
|
+
promptTokenCostInMillicents: 0.05,
|
78
|
+
completionTokenCostInMillicents: 0.15,
|
79
|
+
},
|
65
80
|
"gpt-3.5-turbo-1106": {
|
66
81
|
contextWindowSize: 16385,
|
67
82
|
promptTokenCostInMillicents: 0.1,
|
@@ -5,9 +5,19 @@ const countTokens_js_1 = require("../../model-function/tokenize-text/countTokens
|
|
5
5
|
const AbstractOpenAITextEmbeddingModel_js_1 = require("./AbstractOpenAITextEmbeddingModel.cjs");
|
6
6
|
const TikTokenTokenizer_js_1 = require("./TikTokenTokenizer.cjs");
|
7
7
|
exports.OPENAI_TEXT_EMBEDDING_MODELS = {
|
8
|
+
"text-embedding-3-small": {
|
9
|
+
contextWindowSize: 8192,
|
10
|
+
dimensions: 1536,
|
11
|
+
tokenCostInMillicents: 0.002,
|
12
|
+
},
|
13
|
+
"text-embedding-3-large": {
|
14
|
+
contextWindowSize: 8192,
|
15
|
+
dimensions: 3072,
|
16
|
+
tokenCostInMillicents: 0.013,
|
17
|
+
},
|
8
18
|
"text-embedding-ada-002": {
|
9
19
|
contextWindowSize: 8192,
|
10
|
-
|
20
|
+
dimensions: 1536,
|
11
21
|
tokenCostInMillicents: 0.01,
|
12
22
|
},
|
13
23
|
};
|
@@ -46,7 +56,7 @@ class OpenAITextEmbeddingModel extends AbstractOpenAITextEmbeddingModel_js_1.Abs
|
|
46
56
|
writable: true,
|
47
57
|
value: "openai"
|
48
58
|
});
|
49
|
-
Object.defineProperty(this, "
|
59
|
+
Object.defineProperty(this, "dimensions", {
|
50
60
|
enumerable: true,
|
51
61
|
configurable: true,
|
52
62
|
writable: true,
|
@@ -67,8 +77,9 @@ class OpenAITextEmbeddingModel extends AbstractOpenAITextEmbeddingModel_js_1.Abs
|
|
67
77
|
this.tokenizer = new TikTokenTokenizer_js_1.TikTokenTokenizer({ model: this.modelName });
|
68
78
|
this.contextWindowSize =
|
69
79
|
exports.OPENAI_TEXT_EMBEDDING_MODELS[this.modelName].contextWindowSize;
|
70
|
-
this.
|
71
|
-
|
80
|
+
this.dimensions =
|
81
|
+
this.settings.dimensions ??
|
82
|
+
exports.OPENAI_TEXT_EMBEDDING_MODELS[this.modelName].dimensions;
|
72
83
|
}
|
73
84
|
get modelName() {
|
74
85
|
return this.settings.model;
|
@@ -2,14 +2,24 @@ import { EmbeddingModel } from "../../model-function/embed/EmbeddingModel.js";
|
|
2
2
|
import { AbstractOpenAITextEmbeddingModel, AbstractOpenAITextEmbeddingModelSettings, OpenAITextEmbeddingResponse } from "./AbstractOpenAITextEmbeddingModel.js";
|
3
3
|
import { TikTokenTokenizer } from "./TikTokenTokenizer.js";
|
4
4
|
export declare const OPENAI_TEXT_EMBEDDING_MODELS: {
|
5
|
+
"text-embedding-3-small": {
|
6
|
+
contextWindowSize: number;
|
7
|
+
dimensions: number;
|
8
|
+
tokenCostInMillicents: number;
|
9
|
+
};
|
10
|
+
"text-embedding-3-large": {
|
11
|
+
contextWindowSize: number;
|
12
|
+
dimensions: number;
|
13
|
+
tokenCostInMillicents: number;
|
14
|
+
};
|
5
15
|
"text-embedding-ada-002": {
|
6
16
|
contextWindowSize: number;
|
7
|
-
|
17
|
+
dimensions: number;
|
8
18
|
tokenCostInMillicents: number;
|
9
19
|
};
|
10
20
|
};
|
11
21
|
export type OpenAITextEmbeddingModelType = keyof typeof OPENAI_TEXT_EMBEDDING_MODELS;
|
12
|
-
export declare const isOpenAIEmbeddingModel: (model: string) => model is "text-embedding-ada-002";
|
22
|
+
export declare const isOpenAIEmbeddingModel: (model: string) => model is "text-embedding-3-small" | "text-embedding-3-large" | "text-embedding-ada-002";
|
13
23
|
export declare const calculateOpenAIEmbeddingCostInMillicents: ({ model, responses, }: {
|
14
24
|
model: OpenAITextEmbeddingModelType;
|
15
25
|
responses: OpenAITextEmbeddingResponse[];
|
@@ -34,8 +44,8 @@ export interface OpenAITextEmbeddingModelSettings extends AbstractOpenAITextEmbe
|
|
34
44
|
export declare class OpenAITextEmbeddingModel extends AbstractOpenAITextEmbeddingModel<OpenAITextEmbeddingModelSettings> implements EmbeddingModel<string, OpenAITextEmbeddingModelSettings> {
|
35
45
|
constructor(settings: OpenAITextEmbeddingModelSettings);
|
36
46
|
readonly provider: "openai";
|
37
|
-
get modelName(): "text-embedding-ada-002";
|
38
|
-
readonly
|
47
|
+
get modelName(): "text-embedding-3-small" | "text-embedding-3-large" | "text-embedding-ada-002";
|
48
|
+
readonly dimensions: number;
|
39
49
|
readonly tokenizer: TikTokenTokenizer;
|
40
50
|
readonly contextWindowSize: number;
|
41
51
|
countTokens(input: string): Promise<number>;
|
@@ -2,9 +2,19 @@ import { countTokens } from "../../model-function/tokenize-text/countTokens.js";
|
|
2
2
|
import { AbstractOpenAITextEmbeddingModel, } from "./AbstractOpenAITextEmbeddingModel.js";
|
3
3
|
import { TikTokenTokenizer } from "./TikTokenTokenizer.js";
|
4
4
|
export const OPENAI_TEXT_EMBEDDING_MODELS = {
|
5
|
+
"text-embedding-3-small": {
|
6
|
+
contextWindowSize: 8192,
|
7
|
+
dimensions: 1536,
|
8
|
+
tokenCostInMillicents: 0.002,
|
9
|
+
},
|
10
|
+
"text-embedding-3-large": {
|
11
|
+
contextWindowSize: 8192,
|
12
|
+
dimensions: 3072,
|
13
|
+
tokenCostInMillicents: 0.013,
|
14
|
+
},
|
5
15
|
"text-embedding-ada-002": {
|
6
16
|
contextWindowSize: 8192,
|
7
|
-
|
17
|
+
dimensions: 1536,
|
8
18
|
tokenCostInMillicents: 0.01,
|
9
19
|
},
|
10
20
|
};
|
@@ -41,7 +51,7 @@ export class OpenAITextEmbeddingModel extends AbstractOpenAITextEmbeddingModel {
|
|
41
51
|
writable: true,
|
42
52
|
value: "openai"
|
43
53
|
});
|
44
|
-
Object.defineProperty(this, "
|
54
|
+
Object.defineProperty(this, "dimensions", {
|
45
55
|
enumerable: true,
|
46
56
|
configurable: true,
|
47
57
|
writable: true,
|
@@ -62,8 +72,9 @@ export class OpenAITextEmbeddingModel extends AbstractOpenAITextEmbeddingModel {
|
|
62
72
|
this.tokenizer = new TikTokenTokenizer({ model: this.modelName });
|
63
73
|
this.contextWindowSize =
|
64
74
|
OPENAI_TEXT_EMBEDDING_MODELS[this.modelName].contextWindowSize;
|
65
|
-
this.
|
66
|
-
|
75
|
+
this.dimensions =
|
76
|
+
this.settings.dimensions ??
|
77
|
+
OPENAI_TEXT_EMBEDDING_MODELS[this.modelName].dimensions;
|
67
78
|
}
|
68
79
|
get modelName() {
|
69
80
|
return this.settings.model;
|
@@ -58,17 +58,22 @@ function getTiktokenBPE(model) {
|
|
58
58
|
case "gpt-3.5-turbo-0301":
|
59
59
|
case "gpt-3.5-turbo-0613":
|
60
60
|
case "gpt-3.5-turbo-1106":
|
61
|
+
case "gpt-3.5-turbo-0125":
|
61
62
|
case "gpt-3.5-turbo-16k":
|
62
63
|
case "gpt-3.5-turbo-16k-0613":
|
63
64
|
case "gpt-3.5-turbo-instruct":
|
64
65
|
case "gpt-4":
|
65
66
|
case "gpt-4-0314":
|
66
67
|
case "gpt-4-0613":
|
68
|
+
case "gpt-4-turbo-preview":
|
67
69
|
case "gpt-4-1106-preview":
|
70
|
+
case "gpt-4-0125-preview":
|
68
71
|
case "gpt-4-vision-preview":
|
69
72
|
case "gpt-4-32k":
|
70
73
|
case "gpt-4-32k-0314":
|
71
74
|
case "gpt-4-32k-0613":
|
75
|
+
case "text-embedding-3-small":
|
76
|
+
case "text-embedding-3-large":
|
72
77
|
case "text-embedding-ada-002": {
|
73
78
|
return cl100k_base_1.default;
|
74
79
|
}
|
@@ -51,17 +51,22 @@ function getTiktokenBPE(model) {
|
|
51
51
|
case "gpt-3.5-turbo-0301":
|
52
52
|
case "gpt-3.5-turbo-0613":
|
53
53
|
case "gpt-3.5-turbo-1106":
|
54
|
+
case "gpt-3.5-turbo-0125":
|
54
55
|
case "gpt-3.5-turbo-16k":
|
55
56
|
case "gpt-3.5-turbo-16k-0613":
|
56
57
|
case "gpt-3.5-turbo-instruct":
|
57
58
|
case "gpt-4":
|
58
59
|
case "gpt-4-0314":
|
59
60
|
case "gpt-4-0613":
|
61
|
+
case "gpt-4-turbo-preview":
|
60
62
|
case "gpt-4-1106-preview":
|
63
|
+
case "gpt-4-0125-preview":
|
61
64
|
case "gpt-4-vision-preview":
|
62
65
|
case "gpt-4-32k":
|
63
66
|
case "gpt-4-32k-0314":
|
64
67
|
case "gpt-4-32k-0613":
|
68
|
+
case "text-embedding-3-small":
|
69
|
+
case "text-embedding-3-large":
|
65
70
|
case "text-embedding-ada-002": {
|
66
71
|
return cl100k_base;
|
67
72
|
}
|
@@ -12,12 +12,12 @@ class OpenAICompatibleTextEmbeddingModel extends AbstractOpenAITextEmbeddingMode
|
|
12
12
|
get modelName() {
|
13
13
|
return this.settings.model;
|
14
14
|
}
|
15
|
-
get
|
16
|
-
return this.settings.
|
15
|
+
get dimensions() {
|
16
|
+
return this.settings.dimensions;
|
17
17
|
}
|
18
18
|
get settingsForEvent() {
|
19
19
|
return {
|
20
|
-
|
20
|
+
dimensions: this.settings.dimensions,
|
21
21
|
};
|
22
22
|
}
|
23
23
|
withSettings(additionalSettings) {
|
@@ -5,13 +5,13 @@ export interface OpenAICompatibleTextEmbeddingModelSettings extends AbstractOpen
|
|
5
5
|
api: OpenAICompatibleApiConfiguration;
|
6
6
|
provider?: OpenAICompatibleProviderName;
|
7
7
|
model: string;
|
8
|
-
|
8
|
+
dimensions?: number;
|
9
9
|
}
|
10
10
|
export declare class OpenAICompatibleTextEmbeddingModel extends AbstractOpenAITextEmbeddingModel<OpenAICompatibleTextEmbeddingModelSettings> implements EmbeddingModel<string, OpenAICompatibleTextEmbeddingModelSettings> {
|
11
11
|
constructor(settings: OpenAICompatibleTextEmbeddingModelSettings);
|
12
12
|
get provider(): OpenAICompatibleProviderName;
|
13
13
|
get modelName(): string;
|
14
|
-
get
|
14
|
+
get dimensions(): number | undefined;
|
15
15
|
get settingsForEvent(): Partial<OpenAICompatibleTextEmbeddingModelSettings>;
|
16
16
|
withSettings(additionalSettings: OpenAICompatibleTextEmbeddingModelSettings): this;
|
17
17
|
}
|
@@ -9,12 +9,12 @@ export class OpenAICompatibleTextEmbeddingModel extends AbstractOpenAITextEmbedd
|
|
9
9
|
get modelName() {
|
10
10
|
return this.settings.model;
|
11
11
|
}
|
12
|
-
get
|
13
|
-
return this.settings.
|
12
|
+
get dimensions() {
|
13
|
+
return this.settings.dimensions;
|
14
14
|
}
|
15
15
|
get settingsForEvent() {
|
16
16
|
return {
|
17
|
-
|
17
|
+
dimensions: this.settings.dimensions,
|
18
18
|
};
|
19
19
|
}
|
20
20
|
withSettings(additionalSettings) {
|