modelfusion 0.109.0 → 0.110.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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.110.0 - 2023-12-30
4
+
5
+ ### Changed
6
+
7
+ - **breaking change**: renamed `modelfusion/extension` to `modelfusion/internal`. This requires updating `modelfusion-experimental` (if used) to `v0.3.0`
8
+
9
+ ### Removed
10
+
11
+ - Deprecated OpenAI completion models that will be deactivated on January 4, 2024.
12
+
3
13
  ## v0.109.0 - 2023-12-30
4
14
 
5
15
  ### Added
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.parseEventSourceStream = exports.AbstractModel = exports.executeFunctionCall = exports.postToApi = exports.postJsonToApi = exports.createTextResponseHandler = exports.createJsonResponseHandler = exports.createAudioMpegResponseHandler = exports.loadApiKey = exports.callWithRetryAndThrottle = void 0;
17
+ exports.parseEventSourceStream = exports.AbstractModel = exports.executeFunctionCall = exports.postToApi = exports.postJsonToApi = exports.createTextResponseHandler = exports.createJsonResponseHandler = exports.createJsonErrorResponseHandler = exports.createAudioMpegResponseHandler = exports.loadApiKey = exports.callWithRetryAndThrottle = void 0;
18
18
  __exportStar(require("../core/ExtensionFunctionEvent.cjs"), exports);
19
19
  var callWithRetryAndThrottle_js_1 = require("../core/api/callWithRetryAndThrottle.cjs");
20
20
  Object.defineProperty(exports, "callWithRetryAndThrottle", { enumerable: true, get: function () { return callWithRetryAndThrottle_js_1.callWithRetryAndThrottle; } });
@@ -22,6 +22,7 @@ var loadApiKey_js_1 = require("../core/api/loadApiKey.cjs");
22
22
  Object.defineProperty(exports, "loadApiKey", { enumerable: true, get: function () { return loadApiKey_js_1.loadApiKey; } });
23
23
  var postToApi_js_1 = require("../core/api/postToApi.cjs");
24
24
  Object.defineProperty(exports, "createAudioMpegResponseHandler", { enumerable: true, get: function () { return postToApi_js_1.createAudioMpegResponseHandler; } });
25
+ Object.defineProperty(exports, "createJsonErrorResponseHandler", { enumerable: true, get: function () { return postToApi_js_1.createJsonErrorResponseHandler; } });
25
26
  Object.defineProperty(exports, "createJsonResponseHandler", { enumerable: true, get: function () { return postToApi_js_1.createJsonResponseHandler; } });
26
27
  Object.defineProperty(exports, "createTextResponseHandler", { enumerable: true, get: function () { return postToApi_js_1.createTextResponseHandler; } });
27
28
  Object.defineProperty(exports, "postJsonToApi", { enumerable: true, get: function () { return postToApi_js_1.postJsonToApi; } });
@@ -1,7 +1,7 @@
1
1
  export * from "../core/ExtensionFunctionEvent.js";
2
2
  export { callWithRetryAndThrottle } from "../core/api/callWithRetryAndThrottle.js";
3
3
  export { loadApiKey } from "../core/api/loadApiKey.js";
4
- export { ResponseHandler, createAudioMpegResponseHandler, createJsonResponseHandler, createTextResponseHandler, postJsonToApi, postToApi, } from "../core/api/postToApi.js";
4
+ export { ResponseHandler, createAudioMpegResponseHandler, createJsonErrorResponseHandler, createJsonResponseHandler, createTextResponseHandler, postJsonToApi, postToApi, } from "../core/api/postToApi.js";
5
5
  export { executeFunctionCall } from "../core/executeFunctionCall.js";
6
6
  export { AbstractModel } from "../model-function/AbstractModel.js";
7
7
  export { ErrorHandler } from "../util/ErrorHandler.js";
@@ -1,7 +1,7 @@
1
1
  export * from "../core/ExtensionFunctionEvent.js";
2
2
  export { callWithRetryAndThrottle } from "../core/api/callWithRetryAndThrottle.js";
3
3
  export { loadApiKey } from "../core/api/loadApiKey.js";
4
- export { createAudioMpegResponseHandler, createJsonResponseHandler, createTextResponseHandler, postJsonToApi, postToApi, } from "../core/api/postToApi.js";
4
+ export { createAudioMpegResponseHandler, createJsonErrorResponseHandler, createJsonResponseHandler, createTextResponseHandler, postJsonToApi, postToApi, } from "../core/api/postToApi.js";
5
5
  export { executeFunctionCall } from "../core/executeFunctionCall.js";
6
6
  export { AbstractModel } from "../model-function/AbstractModel.js";
7
7
  export { parseEventSourceStream } from "../util/streaming/parseEventSourceStream.js";
@@ -17,100 +17,12 @@ exports.OPENAI_TEXT_GENERATION_MODELS = {
17
17
  promptTokenCostInMillicents: 0.15,
18
18
  completionTokenCostInMillicents: 0.2,
19
19
  },
20
- "davinci-002": {
21
- contextWindowSize: 16384,
22
- promptTokenCostInMillicents: 0.2,
23
- completionTokenCostInMillicents: 0.2,
24
- fineTunedTokenCostInMillicents: 1.2,
25
- },
26
- "babbage-002": {
27
- contextWindowSize: 16384,
28
- promptTokenCostInMillicents: 0.04,
29
- completionTokenCostInMillicents: 0.04,
30
- fineTunedTokenCostInMillicents: 0.16,
31
- },
32
- "text-davinci-003": {
33
- contextWindowSize: 4096,
34
- promptTokenCostInMillicents: 2,
35
- completionTokenCostInMillicents: 2,
36
- },
37
- "text-davinci-002": {
38
- contextWindowSize: 4096,
39
- promptTokenCostInMillicents: 2,
40
- completionTokenCostInMillicents: 2,
41
- },
42
- "code-davinci-002": {
43
- contextWindowSize: 8000,
44
- promptTokenCostInMillicents: 2,
45
- completionTokenCostInMillicents: 2,
46
- },
47
- davinci: {
48
- contextWindowSize: 2048,
49
- promptTokenCostInMillicents: 2,
50
- completionTokenCostInMillicents: 2,
51
- },
52
- "text-curie-001": {
53
- contextWindowSize: 2048,
54
- promptTokenCostInMillicents: 0.2,
55
- completionTokenCostInMillicents: 0.2,
56
- },
57
- curie: {
58
- contextWindowSize: 2048,
59
- promptTokenCostInMillicents: 0.2,
60
- completionTokenCostInMillicents: 0.2,
61
- },
62
- "text-babbage-001": {
63
- contextWindowSize: 2048,
64
- promptTokenCostInMillicents: 0.05,
65
- completionTokenCostInMillicents: 0.05,
66
- },
67
- babbage: {
68
- contextWindowSize: 2048,
69
- promptTokenCostInMillicents: 0.05,
70
- completionTokenCostInMillicents: 0.05,
71
- },
72
- "text-ada-001": {
73
- contextWindowSize: 2048,
74
- promptTokenCostInMillicents: 0.04,
75
- completionTokenCostInMillicents: 0.04,
76
- },
77
- ada: {
78
- contextWindowSize: 2048,
79
- promptTokenCostInMillicents: 0.04,
80
- completionTokenCostInMillicents: 0.04,
81
- },
82
20
  };
83
21
  function getOpenAICompletionModelInformation(model) {
84
- // Model is already a base model:
85
- if (model in exports.OPENAI_TEXT_GENERATION_MODELS) {
86
- const baseModelInformation = exports.OPENAI_TEXT_GENERATION_MODELS[model];
87
- return {
88
- baseModel: model,
89
- isFineTuned: false,
90
- contextWindowSize: baseModelInformation.contextWindowSize,
91
- promptTokenCostInMillicents: baseModelInformation.promptTokenCostInMillicents,
92
- completionTokenCostInMillicents: baseModelInformation.completionTokenCostInMillicents,
93
- };
94
- }
95
- // Extract the base model from the fine-tuned model:
96
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
97
- const [_, baseModel, ___, ____, _____] = model.split(":");
98
- if (["davinci-002", "babbage-002"].includes(baseModel)) {
99
- const baseModelInformation = exports.OPENAI_TEXT_GENERATION_MODELS[baseModel];
100
- return {
101
- baseModel: baseModel,
102
- isFineTuned: true,
103
- contextWindowSize: baseModelInformation.contextWindowSize,
104
- promptTokenCostInMillicents: baseModelInformation.fineTunedTokenCostInMillicents,
105
- completionTokenCostInMillicents: baseModelInformation.fineTunedTokenCostInMillicents,
106
- };
107
- }
108
- throw new Error(`Unknown OpenAI chat base model ${baseModel}.`);
22
+ return exports.OPENAI_TEXT_GENERATION_MODELS[model];
109
23
  }
110
24
  exports.getOpenAICompletionModelInformation = getOpenAICompletionModelInformation;
111
- const isOpenAICompletionModel = (model) => model in exports.OPENAI_TEXT_GENERATION_MODELS ||
112
- model.startsWith("ft:davinci-002:") ||
113
- model.startsWith("ft:babbage-002:");
25
+ const isOpenAICompletionModel = (model) => model in exports.OPENAI_TEXT_GENERATION_MODELS;
114
26
  exports.isOpenAICompletionModel = isOpenAICompletionModel;
115
27
  const calculateOpenAICompletionCostInMillicents = ({ model, response, }) => {
116
28
  const modelInformation = getOpenAICompletionModelInformation(model);
@@ -161,7 +73,7 @@ class OpenAICompletionModel extends AbstractOpenAICompletionModel_js_1.AbstractO
161
73
  });
162
74
  const modelInformation = getOpenAICompletionModelInformation(this.settings.model);
163
75
  this.tokenizer = new TikTokenTokenizer_js_1.TikTokenTokenizer({
164
- model: modelInformation.baseModel,
76
+ model: this.settings.model,
165
77
  });
166
78
  this.contextWindowSize = modelInformation.contextWindowSize;
167
79
  }
@@ -13,81 +13,14 @@ export declare const OPENAI_TEXT_GENERATION_MODELS: {
13
13
  promptTokenCostInMillicents: number;
14
14
  completionTokenCostInMillicents: number;
15
15
  };
16
- "davinci-002": {
17
- contextWindowSize: number;
18
- promptTokenCostInMillicents: number;
19
- completionTokenCostInMillicents: number;
20
- fineTunedTokenCostInMillicents: number;
21
- };
22
- "babbage-002": {
23
- contextWindowSize: number;
24
- promptTokenCostInMillicents: number;
25
- completionTokenCostInMillicents: number;
26
- fineTunedTokenCostInMillicents: number;
27
- };
28
- "text-davinci-003": {
29
- contextWindowSize: number;
30
- promptTokenCostInMillicents: number;
31
- completionTokenCostInMillicents: number;
32
- };
33
- "text-davinci-002": {
34
- contextWindowSize: number;
35
- promptTokenCostInMillicents: number;
36
- completionTokenCostInMillicents: number;
37
- };
38
- "code-davinci-002": {
39
- contextWindowSize: number;
40
- promptTokenCostInMillicents: number;
41
- completionTokenCostInMillicents: number;
42
- };
43
- davinci: {
44
- contextWindowSize: number;
45
- promptTokenCostInMillicents: number;
46
- completionTokenCostInMillicents: number;
47
- };
48
- "text-curie-001": {
49
- contextWindowSize: number;
50
- promptTokenCostInMillicents: number;
51
- completionTokenCostInMillicents: number;
52
- };
53
- curie: {
54
- contextWindowSize: number;
55
- promptTokenCostInMillicents: number;
56
- completionTokenCostInMillicents: number;
57
- };
58
- "text-babbage-001": {
59
- contextWindowSize: number;
60
- promptTokenCostInMillicents: number;
61
- completionTokenCostInMillicents: number;
62
- };
63
- babbage: {
64
- contextWindowSize: number;
65
- promptTokenCostInMillicents: number;
66
- completionTokenCostInMillicents: number;
67
- };
68
- "text-ada-001": {
69
- contextWindowSize: number;
70
- promptTokenCostInMillicents: number;
71
- completionTokenCostInMillicents: number;
72
- };
73
- ada: {
74
- contextWindowSize: number;
75
- promptTokenCostInMillicents: number;
76
- completionTokenCostInMillicents: number;
77
- };
78
16
  };
79
17
  export declare function getOpenAICompletionModelInformation(model: OpenAICompletionModelType): {
80
- baseModel: OpenAICompletionBaseModelType;
81
- isFineTuned: boolean;
82
18
  contextWindowSize: number;
83
19
  promptTokenCostInMillicents: number;
84
20
  completionTokenCostInMillicents: number;
85
21
  };
86
- type FineTuneableOpenAICompletionModelType = "davinci-002" | "babbage-002";
87
- type FineTunedOpenAICompletionModelType = `ft:${FineTuneableOpenAICompletionModelType}:${string}:${string}:${string}`;
88
- export type OpenAICompletionBaseModelType = keyof typeof OPENAI_TEXT_GENERATION_MODELS;
89
- export type OpenAICompletionModelType = OpenAICompletionBaseModelType | FineTunedOpenAICompletionModelType;
90
- export declare const isOpenAICompletionModel: (model: string) => model is OpenAICompletionModelType;
22
+ export type OpenAICompletionModelType = keyof typeof OPENAI_TEXT_GENERATION_MODELS;
23
+ export declare const isOpenAICompletionModel: (model: string) => model is "gpt-3.5-turbo-instruct";
91
24
  export declare const calculateOpenAICompletionCostInMillicents: ({ model, response, }: {
92
25
  model: OpenAICompletionModelType;
93
26
  response: OpenAICompletionResponse;
@@ -116,7 +49,7 @@ export interface OpenAICompletionModelSettings extends AbstractOpenAICompletionM
116
49
  export declare class OpenAICompletionModel extends AbstractOpenAICompletionModel<OpenAICompletionModelSettings> implements TextStreamingModel<string, OpenAICompletionModelSettings> {
117
50
  constructor(settings: OpenAICompletionModelSettings);
118
51
  readonly provider: "openai";
119
- get modelName(): OpenAICompletionModelType;
52
+ get modelName(): "gpt-3.5-turbo-instruct";
120
53
  readonly contextWindowSize: number;
121
54
  readonly tokenizer: TikTokenTokenizer;
122
55
  countPromptTokens(input: string): Promise<number>;
@@ -135,4 +68,3 @@ export declare class OpenAICompletionModel extends AbstractOpenAICompletionModel
135
68
  withPromptTemplate<INPUT_PROMPT>(promptTemplate: TextGenerationPromptTemplate<INPUT_PROMPT, string>): PromptTemplateTextStreamingModel<INPUT_PROMPT, string, OpenAICompletionModelSettings, this>;
136
69
  withSettings(additionalSettings: Partial<OpenAICompletionModelSettings>): this;
137
70
  }
138
- export {};
@@ -14,99 +14,11 @@ export const OPENAI_TEXT_GENERATION_MODELS = {
14
14
  promptTokenCostInMillicents: 0.15,
15
15
  completionTokenCostInMillicents: 0.2,
16
16
  },
17
- "davinci-002": {
18
- contextWindowSize: 16384,
19
- promptTokenCostInMillicents: 0.2,
20
- completionTokenCostInMillicents: 0.2,
21
- fineTunedTokenCostInMillicents: 1.2,
22
- },
23
- "babbage-002": {
24
- contextWindowSize: 16384,
25
- promptTokenCostInMillicents: 0.04,
26
- completionTokenCostInMillicents: 0.04,
27
- fineTunedTokenCostInMillicents: 0.16,
28
- },
29
- "text-davinci-003": {
30
- contextWindowSize: 4096,
31
- promptTokenCostInMillicents: 2,
32
- completionTokenCostInMillicents: 2,
33
- },
34
- "text-davinci-002": {
35
- contextWindowSize: 4096,
36
- promptTokenCostInMillicents: 2,
37
- completionTokenCostInMillicents: 2,
38
- },
39
- "code-davinci-002": {
40
- contextWindowSize: 8000,
41
- promptTokenCostInMillicents: 2,
42
- completionTokenCostInMillicents: 2,
43
- },
44
- davinci: {
45
- contextWindowSize: 2048,
46
- promptTokenCostInMillicents: 2,
47
- completionTokenCostInMillicents: 2,
48
- },
49
- "text-curie-001": {
50
- contextWindowSize: 2048,
51
- promptTokenCostInMillicents: 0.2,
52
- completionTokenCostInMillicents: 0.2,
53
- },
54
- curie: {
55
- contextWindowSize: 2048,
56
- promptTokenCostInMillicents: 0.2,
57
- completionTokenCostInMillicents: 0.2,
58
- },
59
- "text-babbage-001": {
60
- contextWindowSize: 2048,
61
- promptTokenCostInMillicents: 0.05,
62
- completionTokenCostInMillicents: 0.05,
63
- },
64
- babbage: {
65
- contextWindowSize: 2048,
66
- promptTokenCostInMillicents: 0.05,
67
- completionTokenCostInMillicents: 0.05,
68
- },
69
- "text-ada-001": {
70
- contextWindowSize: 2048,
71
- promptTokenCostInMillicents: 0.04,
72
- completionTokenCostInMillicents: 0.04,
73
- },
74
- ada: {
75
- contextWindowSize: 2048,
76
- promptTokenCostInMillicents: 0.04,
77
- completionTokenCostInMillicents: 0.04,
78
- },
79
17
  };
80
18
  export function getOpenAICompletionModelInformation(model) {
81
- // Model is already a base model:
82
- if (model in OPENAI_TEXT_GENERATION_MODELS) {
83
- const baseModelInformation = OPENAI_TEXT_GENERATION_MODELS[model];
84
- return {
85
- baseModel: model,
86
- isFineTuned: false,
87
- contextWindowSize: baseModelInformation.contextWindowSize,
88
- promptTokenCostInMillicents: baseModelInformation.promptTokenCostInMillicents,
89
- completionTokenCostInMillicents: baseModelInformation.completionTokenCostInMillicents,
90
- };
91
- }
92
- // Extract the base model from the fine-tuned model:
93
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
94
- const [_, baseModel, ___, ____, _____] = model.split(":");
95
- if (["davinci-002", "babbage-002"].includes(baseModel)) {
96
- const baseModelInformation = OPENAI_TEXT_GENERATION_MODELS[baseModel];
97
- return {
98
- baseModel: baseModel,
99
- isFineTuned: true,
100
- contextWindowSize: baseModelInformation.contextWindowSize,
101
- promptTokenCostInMillicents: baseModelInformation.fineTunedTokenCostInMillicents,
102
- completionTokenCostInMillicents: baseModelInformation.fineTunedTokenCostInMillicents,
103
- };
104
- }
105
- throw new Error(`Unknown OpenAI chat base model ${baseModel}.`);
19
+ return OPENAI_TEXT_GENERATION_MODELS[model];
106
20
  }
107
- export const isOpenAICompletionModel = (model) => model in OPENAI_TEXT_GENERATION_MODELS ||
108
- model.startsWith("ft:davinci-002:") ||
109
- model.startsWith("ft:babbage-002:");
21
+ export const isOpenAICompletionModel = (model) => model in OPENAI_TEXT_GENERATION_MODELS;
110
22
  export const calculateOpenAICompletionCostInMillicents = ({ model, response, }) => {
111
23
  const modelInformation = getOpenAICompletionModelInformation(model);
112
24
  return (response.usage.prompt_tokens *
@@ -155,7 +67,7 @@ export class OpenAICompletionModel extends AbstractOpenAICompletionModel {
155
67
  });
156
68
  const modelInformation = getOpenAICompletionModelInformation(this.settings.model);
157
69
  this.tokenizer = new TikTokenTokenizer({
158
- model: modelInformation.baseModel,
70
+ model: this.settings.model,
159
71
  });
160
72
  this.contextWindowSize = modelInformation.contextWindowSize;
161
73
  }
@@ -11,7 +11,7 @@ export declare const OPENAI_IMAGE_MODELS: {
11
11
  getCost(settings: OpenAIImageGenerationSettings): 2000 | 1800 | 1600 | null;
12
12
  };
13
13
  "dall-e-3": {
14
- getCost(settings: OpenAIImageGenerationSettings): 8000 | 4000 | 12000 | null;
14
+ getCost(settings: OpenAIImageGenerationSettings): 4000 | 8000 | 12000 | null;
15
15
  };
16
16
  };
17
17
  /**
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.TikTokenTokenizer = void 0;
7
7
  const lite_1 = require("js-tiktoken/lite");
8
8
  const cl100k_base_1 = __importDefault(require("js-tiktoken/ranks/cl100k_base"));
9
- const p50k_base_1 = __importDefault(require("js-tiktoken/ranks/p50k_base"));
10
- const r50k_base_1 = __importDefault(require("js-tiktoken/ranks/r50k_base"));
11
9
  const never_js_1 = require("../../util/never.cjs");
12
10
  /**
13
11
  * TikToken tokenizer for OpenAI language models.
@@ -56,22 +54,6 @@ exports.TikTokenTokenizer = TikTokenTokenizer;
56
54
  // when new models are released
57
55
  function getTiktokenBPE(model) {
58
56
  switch (model) {
59
- case "code-davinci-002":
60
- case "text-davinci-002":
61
- case "text-davinci-003": {
62
- return p50k_base_1.default;
63
- }
64
- case "ada":
65
- case "babbage":
66
- case "curie":
67
- case "davinci":
68
- case "text-ada-001":
69
- case "text-babbage-001":
70
- case "text-curie-001": {
71
- return r50k_base_1.default;
72
- }
73
- case "babbage-002":
74
- case "davinci-002":
75
57
  case "gpt-3.5-turbo":
76
58
  case "gpt-3.5-turbo-0301":
77
59
  case "gpt-3.5-turbo-0613":
@@ -1,9 +1,9 @@
1
1
  import { FullTokenizer } from "../../model-function/tokenize-text/Tokenizer.js";
2
- import { OpenAITextEmbeddingModelType } from "./OpenAITextEmbeddingModel.js";
3
- import { OpenAICompletionBaseModelType } from "./OpenAICompletionModel.js";
4
2
  import { OpenAIChatBaseModelType } from "./OpenAIChatModel.js";
3
+ import { OpenAICompletionModelType } from "./OpenAICompletionModel.js";
4
+ import { OpenAITextEmbeddingModelType } from "./OpenAITextEmbeddingModel.js";
5
5
  export type TikTokenTokenizerSettings = {
6
- model: OpenAIChatBaseModelType | OpenAICompletionBaseModelType | OpenAITextEmbeddingModelType;
6
+ model: OpenAIChatBaseModelType | OpenAICompletionModelType | OpenAITextEmbeddingModelType;
7
7
  };
8
8
  /**
9
9
  * TikToken tokenizer for OpenAI language models.
@@ -1,7 +1,5 @@
1
1
  import { Tiktoken } from "js-tiktoken/lite";
2
2
  import cl100k_base from "js-tiktoken/ranks/cl100k_base";
3
- import p50k_base from "js-tiktoken/ranks/p50k_base";
4
- import r50k_base from "js-tiktoken/ranks/r50k_base";
5
3
  import { never } from "../../util/never.js";
6
4
  /**
7
5
  * TikToken tokenizer for OpenAI language models.
@@ -49,22 +47,6 @@ export class TikTokenTokenizer {
49
47
  // when new models are released
50
48
  function getTiktokenBPE(model) {
51
49
  switch (model) {
52
- case "code-davinci-002":
53
- case "text-davinci-002":
54
- case "text-davinci-003": {
55
- return p50k_base;
56
- }
57
- case "ada":
58
- case "babbage":
59
- case "curie":
60
- case "davinci":
61
- case "text-ada-001":
62
- case "text-babbage-001":
63
- case "text-curie-001": {
64
- return r50k_base;
65
- }
66
- case "babbage-002":
67
- case "davinci-002":
68
50
  case "gpt-3.5-turbo":
69
51
  case "gpt-3.5-turbo-0301":
70
52
  case "gpt-3.5-turbo-0613":
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modelfusion",
3
3
  "description": "The TypeScript library for building multi-modal AI applications.",
4
- "version": "0.109.0",
4
+ "version": "0.110.0",
5
5
  "author": "Lars Grammel",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -42,10 +42,10 @@
42
42
  "import": "./index.js",
43
43
  "require": "./index.cjs"
44
44
  },
45
- "./extension": {
46
- "types": "./extension/index.d.ts",
47
- "import": "./extension/index.js",
48
- "require": "./extension/index.cjs"
45
+ "./internal": {
46
+ "types": "./internal/index.d.ts",
47
+ "import": "./internal/index.js",
48
+ "require": "./internal/index.cjs"
49
49
  }
50
50
  },
51
51
  "scripts": {