modelfusion 0.122.0 → 0.124.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 (55) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +42 -2
  3. package/index.cjs +0 -1
  4. package/index.d.ts +0 -1
  5. package/index.js +0 -1
  6. package/model-function/ModelCallEvent.d.ts +3 -2
  7. package/model-function/classify/Classifier.cjs +2 -0
  8. package/model-function/classify/Classifier.d.ts +10 -0
  9. package/model-function/classify/Classifier.js +1 -0
  10. package/model-function/classify/ClassifyEvent.cjs +2 -0
  11. package/model-function/classify/ClassifyEvent.d.ts +20 -0
  12. package/model-function/classify/ClassifyEvent.js +1 -0
  13. package/model-function/classify/EmbeddingSimilarityClassifier.cjs +97 -0
  14. package/model-function/classify/EmbeddingSimilarityClassifier.d.ts +40 -0
  15. package/model-function/classify/EmbeddingSimilarityClassifier.js +93 -0
  16. package/model-function/classify/classify.cjs +27 -0
  17. package/model-function/classify/classify.d.ts +17 -0
  18. package/model-function/classify/classify.js +23 -0
  19. package/{classifier → model-function/classify}/index.cjs +4 -1
  20. package/model-function/classify/index.d.ts +4 -0
  21. package/model-function/classify/index.js +4 -0
  22. package/model-function/index.cjs +1 -0
  23. package/model-function/index.d.ts +1 -0
  24. package/model-function/index.js +1 -0
  25. package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +13 -13
  26. package/model-provider/ollama/OllamaChatModel.d.ts +9 -9
  27. package/model-provider/openai/AbstractOpenAITextEmbeddingModel.cjs +82 -0
  28. package/model-provider/openai/AbstractOpenAITextEmbeddingModel.d.ts +91 -0
  29. package/model-provider/openai/AbstractOpenAITextEmbeddingModel.js +78 -0
  30. package/model-provider/openai/OpenAIFacade.cjs +18 -18
  31. package/model-provider/openai/OpenAIFacade.d.ts +18 -18
  32. package/model-provider/openai/OpenAIFacade.js +18 -18
  33. package/model-provider/openai/OpenAITextEmbeddingModel.cjs +3 -68
  34. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +4 -82
  35. package/model-provider/openai/OpenAITextEmbeddingModel.js +3 -68
  36. package/model-provider/openai/index.cjs +1 -0
  37. package/model-provider/openai/index.d.ts +1 -0
  38. package/model-provider/openai/index.js +1 -0
  39. package/model-provider/openai-compatible/OpenAICompatibleChatModel.d.ts +2 -0
  40. package/model-provider/openai-compatible/OpenAICompatibleCompletionModel.d.ts +2 -0
  41. package/model-provider/openai-compatible/OpenAICompatibleFacade.cjs +28 -7
  42. package/model-provider/openai-compatible/OpenAICompatibleFacade.d.ts +24 -6
  43. package/model-provider/openai-compatible/OpenAICompatibleFacade.js +26 -6
  44. package/model-provider/openai-compatible/OpenAICompatibleTextEmbeddingModel.cjs +27 -0
  45. package/model-provider/openai-compatible/OpenAICompatibleTextEmbeddingModel.d.ts +18 -0
  46. package/model-provider/openai-compatible/OpenAICompatibleTextEmbeddingModel.js +23 -0
  47. package/model-provider/openai-compatible/index.cjs +1 -0
  48. package/model-provider/openai-compatible/index.d.ts +1 -0
  49. package/model-provider/openai-compatible/index.js +1 -0
  50. package/package.json +1 -1
  51. package/classifier/SemanticClassifier.cjs +0 -81
  52. package/classifier/SemanticClassifier.d.ts +0 -25
  53. package/classifier/SemanticClassifier.js +0 -77
  54. package/classifier/index.d.ts +0 -1
  55. package/classifier/index.js +0 -1
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SemanticClassifier = void 0;
4
- const embed_js_1 = require("../model-function/embed/embed.cjs");
5
- const cosineSimilarity_js_1 = require("../util/cosineSimilarity.cjs");
6
- class SemanticClassifier {
7
- constructor({ clusters, embeddingModel, similarityThreshold, }) {
8
- Object.defineProperty(this, "clusters", {
9
- enumerable: true,
10
- configurable: true,
11
- writable: true,
12
- value: void 0
13
- });
14
- Object.defineProperty(this, "embeddingModel", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: void 0
19
- });
20
- Object.defineProperty(this, "similarityThreshold", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: void 0
25
- });
26
- Object.defineProperty(this, "embeddings", {
27
- enumerable: true,
28
- configurable: true,
29
- writable: true,
30
- value: void 0
31
- });
32
- this.clusters = clusters;
33
- this.embeddingModel = embeddingModel;
34
- this.similarityThreshold = similarityThreshold;
35
- }
36
- async getEmbeddings() {
37
- if (this.embeddings != null) {
38
- return this.embeddings;
39
- }
40
- const embeddings = [];
41
- for (const cluster of this.clusters) {
42
- const clusterEmbeddings = await (0, embed_js_1.embedMany)({
43
- model: this.embeddingModel,
44
- values: cluster.values,
45
- });
46
- for (let i = 0; i < clusterEmbeddings.length; i++) {
47
- embeddings.push({
48
- embedding: clusterEmbeddings[i],
49
- clusterValue: cluster.values[i],
50
- clusterName: cluster.name,
51
- });
52
- }
53
- }
54
- this.embeddings = embeddings; // lazy caching
55
- return embeddings;
56
- }
57
- async classify(value) {
58
- const valueEmbedding = await (0, embed_js_1.embed)({
59
- model: this.embeddingModel,
60
- value,
61
- });
62
- const clusterEmbeddings = await this.getEmbeddings();
63
- const allMatches = [];
64
- for (const embedding of clusterEmbeddings) {
65
- const similarity = (0, cosineSimilarity_js_1.cosineSimilarity)(valueEmbedding, embedding.embedding);
66
- if (similarity >= this.similarityThreshold) {
67
- allMatches.push({
68
- similarity,
69
- clusterValue: embedding.clusterValue,
70
- clusterName: embedding.clusterName,
71
- });
72
- }
73
- }
74
- // sort (highest similarity first)
75
- allMatches.sort((a, b) => b.similarity - a.similarity);
76
- return allMatches.length > 0
77
- ? allMatches[0].clusterName
78
- : null;
79
- }
80
- }
81
- exports.SemanticClassifier = SemanticClassifier;
@@ -1,25 +0,0 @@
1
- import { Vector } from "../core/Vector.js";
2
- import { EmbeddingModel } from "../model-function/embed/EmbeddingModel.js";
3
- export interface SemanticCluster<VALUE, NAME extends string> {
4
- name: NAME;
5
- values: VALUE[];
6
- }
7
- export declare class SemanticClassifier<VALUE, CLUSTERS extends Array<SemanticCluster<VALUE, string>>> {
8
- readonly clusters: CLUSTERS;
9
- readonly embeddingModel: EmbeddingModel<VALUE>;
10
- readonly similarityThreshold: number;
11
- private embeddings;
12
- constructor({ clusters, embeddingModel, similarityThreshold, }: {
13
- clusters: CLUSTERS;
14
- embeddingModel: EmbeddingModel<VALUE>;
15
- similarityThreshold: number;
16
- });
17
- getEmbeddings(): Promise<{
18
- embedding: Vector;
19
- clusterValue: VALUE;
20
- clusterName: string;
21
- }[]>;
22
- classify(value: VALUE): Promise<ClusterNames<CLUSTERS> | null>;
23
- }
24
- type ClusterNames<CLUSTERS> = CLUSTERS extends Array<SemanticCluster<unknown, infer NAME>> ? NAME : never;
25
- export {};
@@ -1,77 +0,0 @@
1
- import { embed, embedMany } from "../model-function/embed/embed.js";
2
- import { cosineSimilarity } from "../util/cosineSimilarity.js";
3
- export class SemanticClassifier {
4
- constructor({ clusters, embeddingModel, similarityThreshold, }) {
5
- Object.defineProperty(this, "clusters", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "embeddingModel", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- Object.defineProperty(this, "similarityThreshold", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: void 0
22
- });
23
- Object.defineProperty(this, "embeddings", {
24
- enumerable: true,
25
- configurable: true,
26
- writable: true,
27
- value: void 0
28
- });
29
- this.clusters = clusters;
30
- this.embeddingModel = embeddingModel;
31
- this.similarityThreshold = similarityThreshold;
32
- }
33
- async getEmbeddings() {
34
- if (this.embeddings != null) {
35
- return this.embeddings;
36
- }
37
- const embeddings = [];
38
- for (const cluster of this.clusters) {
39
- const clusterEmbeddings = await embedMany({
40
- model: this.embeddingModel,
41
- values: cluster.values,
42
- });
43
- for (let i = 0; i < clusterEmbeddings.length; i++) {
44
- embeddings.push({
45
- embedding: clusterEmbeddings[i],
46
- clusterValue: cluster.values[i],
47
- clusterName: cluster.name,
48
- });
49
- }
50
- }
51
- this.embeddings = embeddings; // lazy caching
52
- return embeddings;
53
- }
54
- async classify(value) {
55
- const valueEmbedding = await embed({
56
- model: this.embeddingModel,
57
- value,
58
- });
59
- const clusterEmbeddings = await this.getEmbeddings();
60
- const allMatches = [];
61
- for (const embedding of clusterEmbeddings) {
62
- const similarity = cosineSimilarity(valueEmbedding, embedding.embedding);
63
- if (similarity >= this.similarityThreshold) {
64
- allMatches.push({
65
- similarity,
66
- clusterValue: embedding.clusterValue,
67
- clusterName: embedding.clusterName,
68
- });
69
- }
70
- }
71
- // sort (highest similarity first)
72
- allMatches.sort((a, b) => b.similarity - a.similarity);
73
- return allMatches.length > 0
74
- ? allMatches[0].clusterName
75
- : null;
76
- }
77
- }
@@ -1 +0,0 @@
1
- export * from "./SemanticClassifier.js";
@@ -1 +0,0 @@
1
- export * from "./SemanticClassifier.js";