modelfusion 0.48.0 → 0.50.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 (149) hide show
  1. package/README.md +186 -183
  2. package/core/FunctionEvent.d.ts +9 -1
  3. package/core/FunctionOptions.d.ts +4 -0
  4. package/core/executeFunctionCall.cjs +85 -0
  5. package/core/executeFunctionCall.d.ts +10 -0
  6. package/core/executeFunctionCall.js +81 -0
  7. package/guard/GuardEvent.d.ts +7 -0
  8. package/guard/guard.cjs +60 -54
  9. package/guard/guard.d.ts +2 -1
  10. package/guard/guard.js +60 -54
  11. package/guard/index.cjs +1 -0
  12. package/guard/index.d.ts +1 -0
  13. package/guard/index.js +1 -0
  14. package/model-function/AsyncIterableResultPromise.cjs +5 -5
  15. package/model-function/AsyncIterableResultPromise.d.ts +3 -3
  16. package/model-function/AsyncIterableResultPromise.js +5 -5
  17. package/model-function/Model.d.ts +1 -1
  18. package/model-function/ModelCallEvent.d.ts +5 -7
  19. package/model-function/embed/EmbeddingEvent.d.ts +2 -2
  20. package/model-function/embed/embed.cjs +5 -5
  21. package/model-function/embed/embed.js +5 -5
  22. package/model-function/{executeCall.cjs → executeStandardCall.cjs} +5 -3
  23. package/model-function/{executeCall.d.ts → executeStandardCall.d.ts} +1 -1
  24. package/model-function/{executeCall.js → executeStandardCall.js} +3 -1
  25. package/model-function/executeStreamCall.cjs +134 -0
  26. package/model-function/executeStreamCall.d.ts +20 -0
  27. package/model-function/executeStreamCall.js +130 -0
  28. package/model-function/generate-image/ImageGenerationEvent.d.ts +2 -2
  29. package/model-function/generate-image/generateImage.cjs +3 -3
  30. package/model-function/generate-image/generateImage.js +3 -3
  31. package/model-function/generate-speech/SpeechGenerationEvent.d.ts +27 -0
  32. package/model-function/generate-speech/SpeechGenerationModel.d.ts +15 -0
  33. package/model-function/generate-speech/generateSpeech.cjs +24 -0
  34. package/model-function/generate-speech/generateSpeech.d.ts +8 -0
  35. package/model-function/generate-speech/generateSpeech.js +20 -0
  36. package/model-function/generate-speech/index.cjs +20 -0
  37. package/model-function/generate-speech/index.d.ts +4 -0
  38. package/model-function/generate-speech/index.js +4 -0
  39. package/model-function/generate-speech/streamSpeech.cjs +34 -0
  40. package/model-function/generate-speech/streamSpeech.d.ts +8 -0
  41. package/model-function/generate-speech/streamSpeech.js +30 -0
  42. package/model-function/generate-structure/StructureGenerationEvent.d.ts +2 -2
  43. package/model-function/generate-structure/StructureStreamingEvent.d.ts +2 -2
  44. package/model-function/generate-structure/generateStructure.cjs +3 -3
  45. package/model-function/generate-structure/generateStructure.js +3 -3
  46. package/model-function/generate-structure/generateStructureOrText.cjs +3 -3
  47. package/model-function/generate-structure/generateStructureOrText.js +3 -3
  48. package/model-function/generate-structure/index.cjs +27 -0
  49. package/model-function/generate-structure/index.d.ts +11 -0
  50. package/model-function/generate-structure/index.js +11 -0
  51. package/model-function/generate-structure/streamStructure.cjs +29 -137
  52. package/model-function/generate-structure/streamStructure.js +28 -136
  53. package/model-function/generate-text/TextGenerationEvent.d.ts +8 -2
  54. package/model-function/generate-text/generateText.cjs +4 -4
  55. package/model-function/generate-text/generateText.d.ts +1 -1
  56. package/model-function/generate-text/generateText.js +4 -4
  57. package/model-function/generate-text/index.cjs +0 -1
  58. package/model-function/generate-text/index.d.ts +0 -1
  59. package/model-function/generate-text/index.js +0 -1
  60. package/model-function/generate-text/streamText.cjs +22 -129
  61. package/model-function/generate-text/streamText.js +21 -128
  62. package/model-function/generate-text/trimChatPrompt.cjs +1 -1
  63. package/model-function/generate-text/trimChatPrompt.d.ts +1 -1
  64. package/model-function/generate-text/trimChatPrompt.js +1 -1
  65. package/model-function/{transcribe-speech → generate-transcription}/TranscriptionEvent.d.ts +2 -2
  66. package/model-function/{transcribe-speech/transcribe.cjs → generate-transcription/generateTranscription.cjs} +7 -7
  67. package/model-function/{transcribe-speech/transcribe.d.ts → generate-transcription/generateTranscription.d.ts} +2 -2
  68. package/model-function/{transcribe-speech/transcribe.js → generate-transcription/generateTranscription.js} +5 -5
  69. package/model-function/index.cjs +5 -20
  70. package/model-function/index.d.ts +5 -20
  71. package/model-function/index.js +5 -20
  72. package/model-provider/elevenlabs/{ElevenLabsSpeechSynthesisModel.cjs → ElevenLabsSpeechModel.cjs} +6 -6
  73. package/model-provider/elevenlabs/{ElevenLabsSpeechSynthesisModel.d.ts → ElevenLabsSpeechModel.d.ts} +8 -8
  74. package/model-provider/elevenlabs/{ElevenLabsSpeechSynthesisModel.js → ElevenLabsSpeechModel.js} +4 -4
  75. package/model-provider/elevenlabs/index.cjs +1 -1
  76. package/model-provider/elevenlabs/index.d.ts +1 -1
  77. package/model-provider/elevenlabs/index.js +1 -1
  78. package/model-provider/huggingface/HuggingFaceImageDescriptionModel.cjs +21 -2
  79. package/model-provider/huggingface/HuggingFaceImageDescriptionModel.d.ts +11 -6
  80. package/model-provider/huggingface/HuggingFaceImageDescriptionModel.js +21 -2
  81. package/model-provider/lmnt/{LmntSpeechSynthesisModel.cjs → LmntSpeechModel.cjs} +5 -5
  82. package/model-provider/lmnt/LmntSpeechModel.d.ts +26 -0
  83. package/model-provider/lmnt/{LmntSpeechSynthesisModel.js → LmntSpeechModel.js} +3 -3
  84. package/model-provider/lmnt/index.cjs +1 -1
  85. package/model-provider/lmnt/index.d.ts +1 -1
  86. package/model-provider/lmnt/index.js +1 -1
  87. package/model-provider/openai/{OpenAITextGenerationModel.cjs → OpenAICompletionModel.cjs} +17 -17
  88. package/model-provider/openai/{OpenAITextGenerationModel.d.ts → OpenAICompletionModel.d.ts} +29 -29
  89. package/model-provider/openai/{OpenAITextGenerationModel.js → OpenAICompletionModel.js} +12 -12
  90. package/model-provider/openai/OpenAICostCalculator.cjs +8 -8
  91. package/model-provider/openai/OpenAICostCalculator.js +8 -8
  92. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
  93. package/model-provider/openai/OpenAITranscriptionModel.d.ts +1 -1
  94. package/model-provider/openai/TikTokenTokenizer.d.ts +2 -2
  95. package/model-provider/openai/chat/OpenAIChatModel.d.ts +7 -7
  96. package/model-provider/openai/index.cjs +1 -1
  97. package/model-provider/openai/index.d.ts +1 -1
  98. package/model-provider/openai/index.js +1 -1
  99. package/package.json +1 -1
  100. package/retriever/retrieve.cjs +7 -75
  101. package/retriever/retrieve.js +7 -75
  102. package/tool/UseToolEvent.d.ts +7 -0
  103. package/tool/UseToolOrGenerateTextEvent.d.ts +7 -0
  104. package/tool/executeTool.cjs +2 -0
  105. package/tool/executeTool.js +2 -0
  106. package/tool/index.cjs +2 -0
  107. package/tool/index.d.ts +2 -0
  108. package/tool/index.js +2 -0
  109. package/tool/useTool.cjs +18 -10
  110. package/tool/useTool.js +18 -10
  111. package/tool/useToolOrGenerateText.cjs +34 -26
  112. package/tool/useToolOrGenerateText.js +34 -26
  113. package/vector-index/UpsertIntoVectorIndexEvent.cjs +2 -0
  114. package/vector-index/UpsertIntoVectorIndexEvent.d.ts +9 -0
  115. package/vector-index/UpsertIntoVectorIndexEvent.js +1 -0
  116. package/vector-index/VectorIndexRetriever.cjs +1 -4
  117. package/vector-index/VectorIndexRetriever.js +1 -4
  118. package/vector-index/index.cjs +1 -0
  119. package/vector-index/index.d.ts +1 -0
  120. package/vector-index/index.js +1 -0
  121. package/vector-index/upsertIntoVectorIndex.cjs +16 -7
  122. package/vector-index/upsertIntoVectorIndex.js +16 -7
  123. package/model-function/describe-image/ImageDescriptionEvent.d.ts +0 -18
  124. package/model-function/describe-image/ImageDescriptionModel.d.ts +0 -10
  125. package/model-function/describe-image/describeImage.cjs +0 -26
  126. package/model-function/describe-image/describeImage.d.ts +0 -9
  127. package/model-function/describe-image/describeImage.js +0 -22
  128. package/model-function/generate-text/TextStreamingEvent.d.ts +0 -7
  129. package/model-function/synthesize-speech/SpeechSynthesisEvent.d.ts +0 -21
  130. package/model-function/synthesize-speech/SpeechSynthesisModel.d.ts +0 -15
  131. package/model-function/synthesize-speech/synthesizeSpeech.cjs +0 -67
  132. package/model-function/synthesize-speech/synthesizeSpeech.d.ts +0 -14
  133. package/model-function/synthesize-speech/synthesizeSpeech.js +0 -63
  134. package/model-provider/lmnt/LmntSpeechSynthesisModel.d.ts +0 -26
  135. /package/{model-function/describe-image/ImageDescriptionEvent.cjs → guard/GuardEvent.cjs} +0 -0
  136. /package/{model-function/describe-image/ImageDescriptionEvent.js → guard/GuardEvent.js} +0 -0
  137. /package/model-function/{describe-image/ImageDescriptionModel.cjs → generate-speech/SpeechGenerationEvent.cjs} +0 -0
  138. /package/model-function/{describe-image/ImageDescriptionModel.js → generate-speech/SpeechGenerationEvent.js} +0 -0
  139. /package/model-function/{generate-text/TextStreamingEvent.cjs → generate-speech/SpeechGenerationModel.cjs} +0 -0
  140. /package/model-function/{generate-text/TextStreamingEvent.js → generate-speech/SpeechGenerationModel.js} +0 -0
  141. /package/model-function/{transcribe-speech → generate-transcription}/TranscriptionEvent.cjs +0 -0
  142. /package/model-function/{transcribe-speech → generate-transcription}/TranscriptionEvent.js +0 -0
  143. /package/model-function/{transcribe-speech → generate-transcription}/TranscriptionModel.cjs +0 -0
  144. /package/model-function/{transcribe-speech → generate-transcription}/TranscriptionModel.d.ts +0 -0
  145. /package/model-function/{transcribe-speech → generate-transcription}/TranscriptionModel.js +0 -0
  146. /package/{model-function/synthesize-speech/SpeechSynthesisEvent.cjs → tool/UseToolEvent.cjs} +0 -0
  147. /package/{model-function/synthesize-speech/SpeechSynthesisEvent.js → tool/UseToolEvent.js} +0 -0
  148. /package/{model-function/synthesize-speech/SpeechSynthesisModel.cjs → tool/UseToolOrGenerateTextEvent.cjs} +0 -0
  149. /package/{model-function/synthesize-speech/SpeechSynthesisModel.js → tool/UseToolOrGenerateTextEvent.js} +0 -0
@@ -84,7 +84,7 @@ export const OPENAI_TEXT_GENERATION_MODELS = {
84
84
  completionTokenCostInMillicents: 0.04,
85
85
  },
86
86
  };
87
- export function getOpenAITextGenerationModelInformation(model) {
87
+ export function getOpenAICompletionModelInformation(model) {
88
88
  // Model is already a base model:
89
89
  if (model in OPENAI_TEXT_GENERATION_MODELS) {
90
90
  const baseModelInformation = OPENAI_TEXT_GENERATION_MODELS[model];
@@ -111,11 +111,11 @@ export function getOpenAITextGenerationModelInformation(model) {
111
111
  }
112
112
  throw new Error(`Unknown OpenAI chat base model ${baseModel}.`);
113
113
  }
114
- export const isOpenAITextGenerationModel = (model) => model in OPENAI_TEXT_GENERATION_MODELS ||
114
+ export const isOpenAICompletionModel = (model) => model in OPENAI_TEXT_GENERATION_MODELS ||
115
115
  model.startsWith("ft:davinci-002:") ||
116
116
  model.startsWith("ft:babbage-002:");
117
- export const calculateOpenAITextGenerationCostInMillicents = ({ model, response, }) => {
118
- const modelInformation = getOpenAITextGenerationModelInformation(model);
117
+ export const calculateOpenAICompletionCostInMillicents = ({ model, response, }) => {
118
+ const modelInformation = getOpenAICompletionModelInformation(model);
119
119
  return (response.usage.prompt_tokens *
120
120
  modelInformation.promptTokenCostInMillicents +
121
121
  response.usage.completion_tokens *
@@ -127,7 +127,7 @@ export const calculateOpenAITextGenerationCostInMillicents = ({ model, response,
127
127
  * @see https://platform.openai.com/docs/api-reference/completions/create
128
128
  *
129
129
  * @example
130
- * const model = new OpenAITextGenerationModel({
130
+ * const model = new OpenAICompletionModel({
131
131
  * model: "gpt-3.5-turbo-instruct",
132
132
  * temperature: 0.7,
133
133
  * maxCompletionTokens: 500,
@@ -139,7 +139,7 @@ export const calculateOpenAITextGenerationCostInMillicents = ({ model, response,
139
139
  * "Write a short story about a robot learning to love:\n\n"
140
140
  * );
141
141
  */
142
- export class OpenAITextGenerationModel extends AbstractModel {
142
+ export class OpenAICompletionModel extends AbstractModel {
143
143
  constructor(settings) {
144
144
  super({ settings });
145
145
  Object.defineProperty(this, "provider", {
@@ -160,7 +160,7 @@ export class OpenAITextGenerationModel extends AbstractModel {
160
160
  writable: true,
161
161
  value: void 0
162
162
  });
163
- const modelInformation = getOpenAITextGenerationModelInformation(this.settings.model);
163
+ const modelInformation = getOpenAICompletionModelInformation(this.settings.model);
164
164
  this.tokenizer = new TikTokenTokenizer({
165
165
  model: modelInformation.baseModel,
166
166
  });
@@ -189,7 +189,7 @@ export class OpenAITextGenerationModel extends AbstractModel {
189
189
  return callWithRetryAndThrottle({
190
190
  retry: callSettings.api?.retry,
191
191
  throttle: callSettings.api?.throttle,
192
- call: async () => callOpenAITextGenerationAPI(callSettings),
192
+ call: async () => callOpenAICompletionAPI(callSettings),
193
193
  });
194
194
  }
195
195
  get settingsForEvent() {
@@ -254,10 +254,10 @@ export class OpenAITextGenerationModel extends AbstractModel {
254
254
  });
255
255
  }
256
256
  withSettings(additionalSettings) {
257
- return new OpenAITextGenerationModel(Object.assign({}, this.settings, additionalSettings));
257
+ return new OpenAICompletionModel(Object.assign({}, this.settings, additionalSettings));
258
258
  }
259
259
  }
260
- const openAITextGenerationResponseSchema = z.object({
260
+ const OpenAICompletionResponseSchema = z.object({
261
261
  id: z.string(),
262
262
  object: z.literal("text_completion"),
263
263
  created: z.number(),
@@ -274,7 +274,7 @@ const openAITextGenerationResponseSchema = z.object({
274
274
  total_tokens: z.number(),
275
275
  }),
276
276
  });
277
- async function callOpenAITextGenerationAPI({ api = new OpenAIApiConfiguration(), abortSignal, responseFormat, model, prompt, suffix, maxTokens, temperature, topP, n, logprobs, echo, stop, presencePenalty, frequencyPenalty, bestOf, logitBias, user, }) {
277
+ async function callOpenAICompletionAPI({ api = new OpenAIApiConfiguration(), abortSignal, responseFormat, model, prompt, suffix, maxTokens, temperature, topP, n, logprobs, echo, stop, presencePenalty, frequencyPenalty, bestOf, logitBias, user, }) {
278
278
  // empty arrays are not allowed for stop:
279
279
  if (stop != null && Array.isArray(stop) && stop.length === 0) {
280
280
  stop = undefined;
@@ -311,7 +311,7 @@ export const OpenAITextResponseFormat = {
311
311
  */
312
312
  json: {
313
313
  stream: false,
314
- handler: createJsonResponseHandler(openAITextGenerationResponseSchema),
314
+ handler: createJsonResponseHandler(OpenAICompletionResponseSchema),
315
315
  },
316
316
  /**
317
317
  * Returns an async iterable over the full deltas (all choices, including full current state at time of event)
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenAICostCalculator = void 0;
4
4
  const OpenAIImageGenerationModel_js_1 = require("./OpenAIImageGenerationModel.cjs");
5
5
  const OpenAITextEmbeddingModel_js_1 = require("./OpenAITextEmbeddingModel.cjs");
6
- const OpenAITextGenerationModel_js_1 = require("./OpenAITextGenerationModel.cjs");
6
+ const OpenAICompletionModel_js_1 = require("./OpenAICompletionModel.cjs");
7
7
  const OpenAITranscriptionModel_js_1 = require("./OpenAITranscriptionModel.cjs");
8
8
  const OpenAIChatModel_js_1 = require("./chat/OpenAIChatModel.cjs");
9
9
  class OpenAICostCalculator {
@@ -19,12 +19,12 @@ class OpenAICostCalculator {
19
19
  const type = call.functionType;
20
20
  const model = call.model.modelName;
21
21
  switch (type) {
22
- case "image-generation": {
22
+ case "generate-image": {
23
23
  return (0, OpenAIImageGenerationModel_js_1.calculateOpenAIImageGenerationCostInMillicents)({
24
24
  settings: call.settings,
25
25
  });
26
26
  }
27
- case "embedding": {
27
+ case "embed": {
28
28
  if (model == null) {
29
29
  return null;
30
30
  }
@@ -39,8 +39,8 @@ class OpenAICostCalculator {
39
39
  }
40
40
  break;
41
41
  }
42
- case "structure-generation":
43
- case "text-generation": {
42
+ case "generate-structure":
43
+ case "generate-text": {
44
44
  if (model == null) {
45
45
  return null;
46
46
  }
@@ -50,15 +50,15 @@ class OpenAICostCalculator {
50
50
  response: call.result.response,
51
51
  });
52
52
  }
53
- if ((0, OpenAITextGenerationModel_js_1.isOpenAITextGenerationModel)(model)) {
54
- return (0, OpenAITextGenerationModel_js_1.calculateOpenAITextGenerationCostInMillicents)({
53
+ if ((0, OpenAICompletionModel_js_1.isOpenAICompletionModel)(model)) {
54
+ return (0, OpenAICompletionModel_js_1.calculateOpenAICompletionCostInMillicents)({
55
55
  model,
56
56
  response: call.result.response,
57
57
  });
58
58
  }
59
59
  break;
60
60
  }
61
- case "transcription": {
61
+ case "generate-transcription": {
62
62
  if (model == null) {
63
63
  return null;
64
64
  }
@@ -1,6 +1,6 @@
1
1
  import { calculateOpenAIImageGenerationCostInMillicents, } from "./OpenAIImageGenerationModel.js";
2
2
  import { calculateOpenAIEmbeddingCostInMillicents, isOpenAIEmbeddingModel, } from "./OpenAITextEmbeddingModel.js";
3
- import { calculateOpenAITextGenerationCostInMillicents, isOpenAITextGenerationModel, } from "./OpenAITextGenerationModel.js";
3
+ import { calculateOpenAICompletionCostInMillicents, isOpenAICompletionModel, } from "./OpenAICompletionModel.js";
4
4
  import { calculateOpenAITranscriptionCostInMillicents, } from "./OpenAITranscriptionModel.js";
5
5
  import { calculateOpenAIChatCostInMillicents, isOpenAIChatModel, } from "./chat/OpenAIChatModel.js";
6
6
  export class OpenAICostCalculator {
@@ -16,12 +16,12 @@ export class OpenAICostCalculator {
16
16
  const type = call.functionType;
17
17
  const model = call.model.modelName;
18
18
  switch (type) {
19
- case "image-generation": {
19
+ case "generate-image": {
20
20
  return calculateOpenAIImageGenerationCostInMillicents({
21
21
  settings: call.settings,
22
22
  });
23
23
  }
24
- case "embedding": {
24
+ case "embed": {
25
25
  if (model == null) {
26
26
  return null;
27
27
  }
@@ -36,8 +36,8 @@ export class OpenAICostCalculator {
36
36
  }
37
37
  break;
38
38
  }
39
- case "structure-generation":
40
- case "text-generation": {
39
+ case "generate-structure":
40
+ case "generate-text": {
41
41
  if (model == null) {
42
42
  return null;
43
43
  }
@@ -47,15 +47,15 @@ export class OpenAICostCalculator {
47
47
  response: call.result.response,
48
48
  });
49
49
  }
50
- if (isOpenAITextGenerationModel(model)) {
51
- return calculateOpenAITextGenerationCostInMillicents({
50
+ if (isOpenAICompletionModel(model)) {
51
+ return calculateOpenAICompletionCostInMillicents({
52
52
  model,
53
53
  response: call.result.response,
54
54
  });
55
55
  }
56
56
  break;
57
57
  }
58
- case "transcription": {
58
+ case "generate-transcription": {
59
59
  if (model == null) {
60
60
  return null;
61
61
  }
@@ -50,11 +50,11 @@ export declare class OpenAITextEmbeddingModel extends AbstractModel<OpenAITextEm
50
50
  doEmbedValues(texts: string[], options?: FunctionOptions): Promise<{
51
51
  response: {
52
52
  object: "list";
53
- model: string;
54
53
  usage: {
55
54
  prompt_tokens: number;
56
55
  total_tokens: number;
57
56
  };
57
+ model: string;
58
58
  data: {
59
59
  object: "embedding";
60
60
  embedding: number[];
@@ -93,11 +93,11 @@ declare const openAITextEmbeddingResponseSchema: z.ZodObject<{
93
93
  }>;
94
94
  }, "strip", z.ZodTypeAny, {
95
95
  object: "list";
96
- model: string;
97
96
  usage: {
98
97
  prompt_tokens: number;
99
98
  total_tokens: number;
100
99
  };
100
+ model: string;
101
101
  data: {
102
102
  object: "embedding";
103
103
  embedding: number[];
@@ -105,11 +105,11 @@ declare const openAITextEmbeddingResponseSchema: z.ZodObject<{
105
105
  }[];
106
106
  }, {
107
107
  object: "list";
108
- model: string;
109
108
  usage: {
110
109
  prompt_tokens: number;
111
110
  total_tokens: number;
112
111
  };
112
+ model: string;
113
113
  data: {
114
114
  object: "embedding";
115
115
  embedding: number[];
@@ -4,7 +4,7 @@ import { FunctionOptions } from "../../core/FunctionOptions.js";
4
4
  import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
5
5
  import { ResponseHandler } from "../../core/api/postToApi.js";
6
6
  import { AbstractModel } from "../../model-function/AbstractModel.js";
7
- import { TranscriptionModel, TranscriptionModelSettings } from "../../model-function/transcribe-speech/TranscriptionModel.js";
7
+ import { TranscriptionModel, TranscriptionModelSettings } from "../../model-function/generate-transcription/TranscriptionModel.js";
8
8
  /**
9
9
  * @see https://openai.com/pricing
10
10
  */
@@ -1,6 +1,6 @@
1
1
  import { FullTokenizer } from "../../model-function/tokenize-text/Tokenizer.js";
2
2
  import { OpenAITextEmbeddingModelType } from "./OpenAITextEmbeddingModel.js";
3
- import { OpenAITextGenerationBaseModelType } from "./OpenAITextGenerationModel.js";
3
+ import { OpenAICompletionBaseModelType } from "./OpenAICompletionModel.js";
4
4
  import { OpenAIChatBaseModelType } from "./chat/OpenAIChatModel.js";
5
5
  /**
6
6
  * TikToken tokenizer for OpenAI language models.
@@ -22,7 +22,7 @@ export declare class TikTokenTokenizer implements FullTokenizer {
22
22
  * Get a TikToken tokenizer for a specific model or encoding.
23
23
  */
24
24
  constructor(options: {
25
- model: OpenAIChatBaseModelType | OpenAITextGenerationBaseModelType | OpenAITextEmbeddingModelType;
25
+ model: OpenAIChatBaseModelType | OpenAICompletionBaseModelType | OpenAITextEmbeddingModelType;
26
26
  });
27
27
  private readonly tiktoken;
28
28
  tokenize(text: string): Promise<number[]>;
@@ -158,12 +158,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
158
158
  doGenerateText(prompt: OpenAIChatMessage[], options?: FunctionOptions): Promise<{
159
159
  response: {
160
160
  object: "chat.completion";
161
- model: string;
162
161
  usage: {
163
162
  prompt_tokens: number;
164
163
  completion_tokens: number;
165
164
  total_tokens: number;
166
165
  };
166
+ model: string;
167
167
  id: string;
168
168
  created: number;
169
169
  choices: {
@@ -198,12 +198,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
198
198
  doGenerateStructure(structureDefinition: StructureDefinition<string, unknown>, prompt: OpenAIChatMessage[], options?: FunctionOptions): Promise<{
199
199
  response: {
200
200
  object: "chat.completion";
201
- model: string;
202
201
  usage: {
203
202
  prompt_tokens: number;
204
203
  completion_tokens: number;
205
204
  total_tokens: number;
206
205
  };
206
+ model: string;
207
207
  id: string;
208
208
  created: number;
209
209
  choices: {
@@ -232,12 +232,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
232
232
  doGenerateStructureOrText(structureDefinitions: Array<StructureDefinition<string, unknown>>, prompt: OpenAIChatMessage[], options?: FunctionOptions): Promise<{
233
233
  response: {
234
234
  object: "chat.completion";
235
- model: string;
236
235
  usage: {
237
236
  prompt_tokens: number;
238
237
  completion_tokens: number;
239
238
  total_tokens: number;
240
239
  };
240
+ model: string;
241
241
  id: string;
242
242
  created: number;
243
243
  choices: {
@@ -268,12 +268,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
268
268
  } | {
269
269
  response: {
270
270
  object: "chat.completion";
271
- model: string;
272
271
  usage: {
273
272
  prompt_tokens: number;
274
273
  completion_tokens: number;
275
274
  total_tokens: number;
276
275
  };
276
+ model: string;
277
277
  id: string;
278
278
  created: number;
279
279
  choices: {
@@ -395,12 +395,12 @@ declare const openAIChatResponseSchema: z.ZodObject<{
395
395
  }>;
396
396
  }, "strip", z.ZodTypeAny, {
397
397
  object: "chat.completion";
398
- model: string;
399
398
  usage: {
400
399
  prompt_tokens: number;
401
400
  completion_tokens: number;
402
401
  total_tokens: number;
403
402
  };
403
+ model: string;
404
404
  id: string;
405
405
  created: number;
406
406
  choices: {
@@ -418,12 +418,12 @@ declare const openAIChatResponseSchema: z.ZodObject<{
418
418
  }[];
419
419
  }, {
420
420
  object: "chat.completion";
421
- model: string;
422
421
  usage: {
423
422
  prompt_tokens: number;
424
423
  completion_tokens: number;
425
424
  total_tokens: number;
426
425
  };
426
+ model: string;
427
427
  id: string;
428
428
  created: number;
429
429
  choices: {
@@ -453,12 +453,12 @@ export declare const OpenAIChatResponseFormat: {
453
453
  stream: false;
454
454
  handler: ResponseHandler<{
455
455
  object: "chat.completion";
456
- model: string;
457
456
  usage: {
458
457
  prompt_tokens: number;
459
458
  completion_tokens: number;
460
459
  total_tokens: number;
461
460
  };
461
+ model: string;
462
462
  id: string;
463
463
  created: number;
464
464
  choices: {
@@ -22,7 +22,7 @@ var OpenAIError_js_1 = require("./OpenAIError.cjs");
22
22
  Object.defineProperty(exports, "OpenAIError", { enumerable: true, get: function () { return OpenAIError_js_1.OpenAIError; } });
23
23
  __exportStar(require("./OpenAIImageGenerationModel.cjs"), exports);
24
24
  __exportStar(require("./OpenAITextEmbeddingModel.cjs"), exports);
25
- __exportStar(require("./OpenAITextGenerationModel.cjs"), exports);
25
+ __exportStar(require("./OpenAICompletionModel.cjs"), exports);
26
26
  __exportStar(require("./OpenAITranscriptionModel.cjs"), exports);
27
27
  __exportStar(require("./TikTokenTokenizer.cjs"), exports);
28
28
  __exportStar(require("./chat/OpenAIChatMessage.cjs"), exports);
@@ -4,7 +4,7 @@ export * from "./OpenAICostCalculator.js";
4
4
  export { OpenAIError, OpenAIErrorData } from "./OpenAIError.js";
5
5
  export * from "./OpenAIImageGenerationModel.js";
6
6
  export * from "./OpenAITextEmbeddingModel.js";
7
- export * from "./OpenAITextGenerationModel.js";
7
+ export * from "./OpenAICompletionModel.js";
8
8
  export * from "./OpenAITranscriptionModel.js";
9
9
  export * from "./TikTokenTokenizer.js";
10
10
  export * from "./chat/OpenAIChatMessage.js";
@@ -4,7 +4,7 @@ export * from "./OpenAICostCalculator.js";
4
4
  export { OpenAIError } from "./OpenAIError.js";
5
5
  export * from "./OpenAIImageGenerationModel.js";
6
6
  export * from "./OpenAITextEmbeddingModel.js";
7
- export * from "./OpenAITextGenerationModel.js";
7
+ export * from "./OpenAICompletionModel.js";
8
8
  export * from "./OpenAITranscriptionModel.js";
9
9
  export * from "./TikTokenTokenizer.js";
10
10
  export * from "./chat/OpenAIChatMessage.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modelfusion",
3
3
  "description": "Build multimodal applications, chatbots, and agents with JavaScript and TypeScript.",
4
- "version": "0.48.0",
4
+ "version": "0.50.0",
5
5
  "author": "Lars Grammel",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -1,83 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.retrieve = void 0;
4
- const nanoid_1 = require("nanoid");
5
- const FunctionEventSource_js_1 = require("../core/FunctionEventSource.cjs");
6
- const GlobalFunctionLogging_js_1 = require("../core/GlobalFunctionLogging.cjs");
7
- const GlobalFunctionObservers_js_1 = require("../core/GlobalFunctionObservers.cjs");
8
- const AbortError_js_1 = require("../core/api/AbortError.cjs");
9
- const getFunctionCallLogger_js_1 = require("../core/getFunctionCallLogger.cjs");
10
- const getRun_js_1 = require("../core/getRun.cjs");
11
- const DurationMeasurement_js_1 = require("../util/DurationMeasurement.cjs");
12
- const runSafe_js_1 = require("../util/runSafe.cjs");
4
+ const executeFunctionCall_js_1 = require("../core/executeFunctionCall.cjs");
13
5
  async function retrieve(retriever, query, options) {
14
- const run = await (0, getRun_js_1.getRun)(options?.run);
15
- const eventSource = new FunctionEventSource_js_1.FunctionEventSource({
16
- observers: [
17
- ...(0, getFunctionCallLogger_js_1.getFunctionCallLogger)(options?.logging ?? (0, GlobalFunctionLogging_js_1.getGlobalFunctionLogging)()),
18
- ...(0, GlobalFunctionObservers_js_1.getGlobalFunctionObservers)(),
19
- ...(run?.functionObserver != null ? [run.functionObserver] : []),
20
- ...(options?.observers ?? []),
21
- ],
22
- errorHandler: run?.errorHandler,
23
- });
24
- const durationMeasurement = (0, DurationMeasurement_js_1.startDurationMeasurement)();
25
- const startMetadata = {
6
+ return (0, executeFunctionCall_js_1.executeFunctionCall)({
7
+ options,
8
+ input: query,
26
9
  functionType: "retrieve",
27
- callId: `call-${(0, nanoid_1.nanoid)()}`,
28
- runId: run?.runId,
29
- sessionId: run?.sessionId,
30
- userId: run?.userId,
31
- functionId: options?.functionId,
32
- query,
33
- timestamp: durationMeasurement.startDate,
34
- startTimestamp: durationMeasurement.startDate,
35
- };
36
- eventSource.notify({
37
- eventType: "started",
38
- ...startMetadata,
39
- });
40
- const result = await (0, runSafe_js_1.runSafe)(() => retriever.retrieve(query, {
41
- functionId: options?.functionId,
42
- logging: options?.logging,
43
- observers: options?.observers,
44
- run,
45
- }));
46
- const finishMetadata = {
47
- eventType: "finished",
48
- ...startMetadata,
49
- finishTimestamp: new Date(),
50
- durationInMs: durationMeasurement.durationInMs,
51
- };
52
- if (!result.ok) {
53
- if (result.isAborted) {
54
- eventSource.notify({
55
- ...finishMetadata,
56
- eventType: "finished",
57
- result: {
58
- status: "abort",
59
- },
60
- });
61
- throw new AbortError_js_1.AbortError();
62
- }
63
- eventSource.notify({
64
- ...finishMetadata,
65
- eventType: "finished",
66
- result: {
67
- status: "error",
68
- error: result.error,
69
- },
70
- });
71
- throw result.error;
72
- }
73
- eventSource.notify({
74
- ...finishMetadata,
75
- eventType: "finished",
76
- result: {
77
- status: "success",
78
- value: result.value,
79
- },
10
+ execute: (options) => retriever.retrieve(query, options),
11
+ inputPropertyName: "query",
12
+ outputPropertyName: "results",
80
13
  });
81
- return result.value;
82
14
  }
83
15
  exports.retrieve = retrieve;
@@ -1,79 +1,11 @@
1
- import { nanoid as createId } from "nanoid";
2
- import { FunctionEventSource } from "../core/FunctionEventSource.js";
3
- import { getGlobalFunctionLogging } from "../core/GlobalFunctionLogging.js";
4
- import { getGlobalFunctionObservers } from "../core/GlobalFunctionObservers.js";
5
- import { AbortError } from "../core/api/AbortError.js";
6
- import { getFunctionCallLogger } from "../core/getFunctionCallLogger.js";
7
- import { getRun } from "../core/getRun.js";
8
- import { startDurationMeasurement } from "../util/DurationMeasurement.js";
9
- import { runSafe } from "../util/runSafe.js";
1
+ import { executeFunctionCall } from "../core/executeFunctionCall.js";
10
2
  export async function retrieve(retriever, query, options) {
11
- const run = await getRun(options?.run);
12
- const eventSource = new FunctionEventSource({
13
- observers: [
14
- ...getFunctionCallLogger(options?.logging ?? getGlobalFunctionLogging()),
15
- ...getGlobalFunctionObservers(),
16
- ...(run?.functionObserver != null ? [run.functionObserver] : []),
17
- ...(options?.observers ?? []),
18
- ],
19
- errorHandler: run?.errorHandler,
20
- });
21
- const durationMeasurement = startDurationMeasurement();
22
- const startMetadata = {
3
+ return executeFunctionCall({
4
+ options,
5
+ input: query,
23
6
  functionType: "retrieve",
24
- callId: `call-${createId()}`,
25
- runId: run?.runId,
26
- sessionId: run?.sessionId,
27
- userId: run?.userId,
28
- functionId: options?.functionId,
29
- query,
30
- timestamp: durationMeasurement.startDate,
31
- startTimestamp: durationMeasurement.startDate,
32
- };
33
- eventSource.notify({
34
- eventType: "started",
35
- ...startMetadata,
36
- });
37
- const result = await runSafe(() => retriever.retrieve(query, {
38
- functionId: options?.functionId,
39
- logging: options?.logging,
40
- observers: options?.observers,
41
- run,
42
- }));
43
- const finishMetadata = {
44
- eventType: "finished",
45
- ...startMetadata,
46
- finishTimestamp: new Date(),
47
- durationInMs: durationMeasurement.durationInMs,
48
- };
49
- if (!result.ok) {
50
- if (result.isAborted) {
51
- eventSource.notify({
52
- ...finishMetadata,
53
- eventType: "finished",
54
- result: {
55
- status: "abort",
56
- },
57
- });
58
- throw new AbortError();
59
- }
60
- eventSource.notify({
61
- ...finishMetadata,
62
- eventType: "finished",
63
- result: {
64
- status: "error",
65
- error: result.error,
66
- },
67
- });
68
- throw result.error;
69
- }
70
- eventSource.notify({
71
- ...finishMetadata,
72
- eventType: "finished",
73
- result: {
74
- status: "success",
75
- value: result.value,
76
- },
7
+ execute: (options) => retriever.retrieve(query, options),
8
+ inputPropertyName: "query",
9
+ outputPropertyName: "results",
77
10
  });
78
- return result.value;
79
11
  }
@@ -0,0 +1,7 @@
1
+ import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
2
+ export interface UseToolStartedEvent extends BaseFunctionStartedEvent {
3
+ functionType: "use-tool";
4
+ }
5
+ export interface UseToolFinishedEvent extends BaseFunctionFinishedEvent {
6
+ functionType: "use-tool";
7
+ }
@@ -0,0 +1,7 @@
1
+ import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
2
+ export interface UseToolOrGenerateTextStartedEvent extends BaseFunctionStartedEvent {
3
+ functionType: "use-tool-or-generate-text";
4
+ }
5
+ export interface UseToolOrGenerateTextFinishedEvent extends BaseFunctionFinishedEvent {
6
+ functionType: "use-tool-or-generate-text";
7
+ }
@@ -69,6 +69,7 @@ async function doExecuteTool(tool, input, options) {
69
69
  const metadata = {
70
70
  functionType: "execute-tool",
71
71
  callId: `call-${(0, nanoid_1.nanoid)()}`,
72
+ parentCallId: options?.parentCallId,
72
73
  runId: run?.runId,
73
74
  sessionId: run?.sessionId,
74
75
  userId: run?.userId,
@@ -87,6 +88,7 @@ async function doExecuteTool(tool, input, options) {
87
88
  logging: options?.logging,
88
89
  observers: options?.observers,
89
90
  run,
91
+ parentCallId: metadata.callId,
90
92
  }));
91
93
  const finishMetadata = {
92
94
  ...metadata,
@@ -64,6 +64,7 @@ async function doExecuteTool(tool, input, options) {
64
64
  const metadata = {
65
65
  functionType: "execute-tool",
66
66
  callId: `call-${createId()}`,
67
+ parentCallId: options?.parentCallId,
67
68
  runId: run?.runId,
68
69
  sessionId: run?.sessionId,
69
70
  userId: run?.userId,
@@ -82,6 +83,7 @@ async function doExecuteTool(tool, input, options) {
82
83
  logging: options?.logging,
83
84
  observers: options?.observers,
84
85
  run,
86
+ parentCallId: metadata.callId,
85
87
  }));
86
88
  const finishMetadata = {
87
89
  ...metadata,
package/tool/index.cjs CHANGED
@@ -19,6 +19,8 @@ __exportStar(require("./InvalidToolNameError.cjs"), exports);
19
19
  __exportStar(require("./NoSuchToolError.cjs"), exports);
20
20
  __exportStar(require("./Tool.cjs"), exports);
21
21
  __exportStar(require("./ToolExecutionError.cjs"), exports);
22
+ __exportStar(require("./UseToolEvent.cjs"), exports);
23
+ __exportStar(require("./UseToolOrGenerateTextEvent.cjs"), exports);
22
24
  __exportStar(require("./WebSearchTool.cjs"), exports);
23
25
  __exportStar(require("./executeTool.cjs"), exports);
24
26
  __exportStar(require("./useTool.cjs"), exports);
package/tool/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export * from "./InvalidToolNameError.js";
3
3
  export * from "./NoSuchToolError.js";
4
4
  export * from "./Tool.js";
5
5
  export * from "./ToolExecutionError.js";
6
+ export * from "./UseToolEvent.js";
7
+ export * from "./UseToolOrGenerateTextEvent.js";
6
8
  export * from "./WebSearchTool.js";
7
9
  export * from "./executeTool.js";
8
10
  export * from "./useTool.js";
package/tool/index.js CHANGED
@@ -3,6 +3,8 @@ export * from "./InvalidToolNameError.js";
3
3
  export * from "./NoSuchToolError.js";
4
4
  export * from "./Tool.js";
5
5
  export * from "./ToolExecutionError.js";
6
+ export * from "./UseToolEvent.js";
7
+ export * from "./UseToolOrGenerateTextEvent.js";
6
8
  export * from "./WebSearchTool.js";
7
9
  export * from "./executeTool.js";
8
10
  export * from "./useTool.js";