modelfusion 0.22.0 → 0.23.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 (107) hide show
  1. package/README.md +1 -0
  2. package/core/FunctionOptions.d.ts +14 -0
  3. package/core/GlobalFunctionLogging.cjs +12 -0
  4. package/core/GlobalFunctionLogging.d.ts +3 -0
  5. package/core/GlobalFunctionLogging.js +7 -0
  6. package/core/getFunctionCallLogger.cjs +74 -0
  7. package/core/getFunctionCallLogger.d.ts +3 -0
  8. package/core/getFunctionCallLogger.js +70 -0
  9. package/core/index.cjs +1 -1
  10. package/core/index.d.ts +1 -1
  11. package/core/index.js +1 -1
  12. package/model-function/AbstractModel.d.ts +1 -0
  13. package/model-function/Model.d.ts +6 -1
  14. package/model-function/ModelCallEvent.d.ts +21 -2
  15. package/model-function/embed-text/embedText.d.ts +2 -2
  16. package/model-function/executeCall.cjs +24 -17
  17. package/model-function/executeCall.d.ts +15 -13
  18. package/model-function/executeCall.js +22 -15
  19. package/model-function/generate-image/generateImage.d.ts +1 -1
  20. package/model-function/generate-json/JsonGenerationEvent.d.ts +16 -0
  21. package/model-function/generate-json/JsonGenerationModel.d.ts +13 -0
  22. package/model-function/generate-json/JsonOrTextGenerationModel.d.ts +23 -0
  23. package/model-function/generate-json/JsonTextGenerationModel.cjs +3 -0
  24. package/model-function/generate-json/JsonTextGenerationModel.d.ts +6 -5
  25. package/model-function/generate-json/JsonTextGenerationModel.js +3 -0
  26. package/model-function/generate-json/generateJson.cjs +1 -0
  27. package/model-function/generate-json/generateJson.d.ts +2 -2
  28. package/model-function/generate-json/generateJson.js +1 -0
  29. package/model-function/generate-json/generateJsonOrText.cjs +1 -0
  30. package/model-function/generate-json/generateJsonOrText.d.ts +2 -2
  31. package/model-function/generate-json/generateJsonOrText.js +1 -0
  32. package/model-function/generate-text/TextGenerationEvent.d.ts +5 -2
  33. package/model-function/generate-text/TextGenerationModel.d.ts +5 -0
  34. package/model-function/generate-text/generateText.cjs +1 -0
  35. package/model-function/generate-text/generateText.d.ts +1 -1
  36. package/model-function/generate-text/generateText.js +1 -0
  37. package/model-function/generate-text/streamText.cjs +9 -6
  38. package/model-function/generate-text/streamText.d.ts +5 -5
  39. package/model-function/generate-text/streamText.js +9 -6
  40. package/model-function/index.cjs +3 -2
  41. package/model-function/index.d.ts +3 -2
  42. package/model-function/index.js +3 -2
  43. package/model-function/synthesize-speech/SpeechSynthesisEvent.d.ts +2 -2
  44. package/model-function/synthesize-speech/SpeechSynthesisModel.d.ts +1 -1
  45. package/model-function/synthesize-speech/synthesizeSpeech.d.ts +1 -1
  46. package/model-function/transcribe-speech/TranscriptionModel.d.ts +1 -1
  47. package/model-function/transcribe-speech/transcribe.d.ts +1 -1
  48. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +9 -0
  49. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +1 -0
  50. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +9 -0
  51. package/model-provider/cohere/CohereTextEmbeddingModel.cjs +6 -0
  52. package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +1 -0
  53. package/model-provider/cohere/CohereTextEmbeddingModel.js +6 -0
  54. package/model-provider/cohere/CohereTextGenerationModel.cjs +20 -0
  55. package/model-provider/cohere/CohereTextGenerationModel.d.ts +2 -1
  56. package/model-provider/cohere/CohereTextGenerationModel.js +20 -0
  57. package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.cjs +8 -0
  58. package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.d.ts +1 -0
  59. package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.js +8 -0
  60. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +7 -0
  61. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +1 -0
  62. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +7 -0
  63. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +16 -0
  64. package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +1 -0
  65. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +16 -0
  66. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +6 -0
  67. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +1 -0
  68. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +6 -0
  69. package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +31 -0
  70. package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +6 -0
  71. package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +31 -0
  72. package/model-provider/openai/OpenAIImageGenerationModel.cjs +8 -0
  73. package/model-provider/openai/OpenAIImageGenerationModel.d.ts +1 -0
  74. package/model-provider/openai/OpenAIImageGenerationModel.js +8 -0
  75. package/model-provider/openai/OpenAITextEmbeddingModel.cjs +5 -0
  76. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +12 -11
  77. package/model-provider/openai/OpenAITextEmbeddingModel.js +5 -0
  78. package/model-provider/openai/OpenAITextGenerationModel.cjs +24 -0
  79. package/model-provider/openai/OpenAITextGenerationModel.d.ts +14 -8
  80. package/model-provider/openai/OpenAITextGenerationModel.js +24 -0
  81. package/model-provider/openai/OpenAITranscriptionModel.cjs +7 -0
  82. package/model-provider/openai/OpenAITranscriptionModel.d.ts +2 -0
  83. package/model-provider/openai/OpenAITranscriptionModel.js +7 -0
  84. package/model-provider/openai/chat/OpenAIChatModel.cjs +20 -0
  85. package/model-provider/openai/chat/OpenAIChatModel.d.ts +17 -11
  86. package/model-provider/openai/chat/OpenAIChatModel.js +20 -0
  87. package/model-provider/openai/chat/OpenAIChatPrompt.d.ts +2 -2
  88. package/model-provider/stability/StabilityImageGenerationModel.cjs +15 -0
  89. package/model-provider/stability/StabilityImageGenerationModel.d.ts +1 -0
  90. package/model-provider/stability/StabilityImageGenerationModel.js +15 -0
  91. package/package.json +1 -1
  92. package/prompt/PromptFormatTextGenerationModel.cjs +3 -0
  93. package/prompt/PromptFormatTextGenerationModel.d.ts +1 -0
  94. package/prompt/PromptFormatTextGenerationModel.js +3 -0
  95. package/tool/executeTool.cjs +3 -0
  96. package/tool/executeTool.js +3 -0
  97. package/tool/useTool.d.ts +2 -2
  98. package/tool/useToolOrGenerateText.d.ts +2 -2
  99. package/core/ConsoleLogger.cjs +0 -9
  100. package/core/ConsoleLogger.d.ts +0 -5
  101. package/core/ConsoleLogger.js +0 -5
  102. package/model-function/generate-json/GenerateJsonModel.d.ts +0 -8
  103. package/model-function/generate-json/GenerateJsonOrTextModel.d.ts +0 -18
  104. /package/model-function/generate-json/{GenerateJsonModel.cjs → JsonGenerationModel.cjs} +0 -0
  105. /package/model-function/generate-json/{GenerateJsonModel.js → JsonGenerationModel.js} +0 -0
  106. /package/model-function/generate-json/{GenerateJsonOrTextModel.cjs → JsonOrTextGenerationModel.cjs} +0 -0
  107. /package/model-function/generate-json/{GenerateJsonOrTextModel.js → JsonOrTextGenerationModel.js} +0 -0
@@ -0,0 +1,23 @@
1
+ import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
2
+ import { Model, ModelSettings } from "../Model.js";
3
+ export interface JsonOrTextGenerationModelSettings extends ModelSettings {
4
+ }
5
+ export interface JsonOrTextGenerationPrompt<RESPONSE> {
6
+ extractJsonAndText(response: RESPONSE): {
7
+ schema: null;
8
+ value: null;
9
+ text: string;
10
+ } | {
11
+ schema: string;
12
+ value: unknown;
13
+ text: string | null;
14
+ };
15
+ }
16
+ export interface JsonOrTextGenerationModel<PROMPT, RESPONSE, SETTINGS extends JsonOrTextGenerationModelSettings> extends Model<SETTINGS> {
17
+ generateJsonResponse(prompt: PROMPT & JsonOrTextGenerationPrompt<RESPONSE>, options?: ModelFunctionOptions<SETTINGS>): PromiseLike<RESPONSE>;
18
+ extractUsage?(response: RESPONSE): {
19
+ promptTokens: number;
20
+ completionTokens: number;
21
+ totalTokens: number;
22
+ };
23
+ }
@@ -25,6 +25,9 @@ class JsonTextGenerationModel {
25
25
  get settings() {
26
26
  return this.model.settings;
27
27
  }
28
+ get settingsForEvent() {
29
+ return this.model.settingsForEvent;
30
+ }
28
31
  async generateJsonResponse(prompt, options) {
29
32
  return await (0, generateText_js_1.generateText)(this.model, this.format.createPrompt(prompt), options);
30
33
  }
@@ -1,7 +1,7 @@
1
1
  import { TextGenerationModel, TextGenerationModelSettings } from "../generate-text/TextGenerationModel.js";
2
2
  import { SchemaDefinition } from "./SchemaDefinition.js";
3
3
  import { InstructionWithSchema } from "./InstructionWithSchemaPrompt.js";
4
- import { GenerateJsonModel } from "./GenerateJsonModel.js";
4
+ import { JsonGenerationModel } from "./JsonGenerationModel.js";
5
5
  import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
6
6
  export type JsonTextPromptFormat = {
7
7
  createPrompt: (prompt: {
@@ -10,7 +10,7 @@ export type JsonTextPromptFormat = {
10
10
  }) => string;
11
11
  extractJson: (response: string) => unknown;
12
12
  };
13
- export declare class JsonTextGenerationModel<SETTINGS extends TextGenerationModelSettings, MODEL extends TextGenerationModel<string, any, any, SETTINGS>> implements GenerateJsonModel<InstructionWithSchema<string, unknown>, string, SETTINGS> {
13
+ export declare class JsonTextGenerationModel<MODEL extends TextGenerationModel<string, any, any, TextGenerationModelSettings>> implements JsonGenerationModel<InstructionWithSchema<string, unknown>, string, MODEL["settings"]> {
14
14
  private readonly model;
15
15
  private readonly format;
16
16
  constructor({ model, format, }: {
@@ -18,8 +18,9 @@ export declare class JsonTextGenerationModel<SETTINGS extends TextGenerationMode
18
18
  format: JsonTextPromptFormat;
19
19
  });
20
20
  get modelInformation(): import("../ModelInformation.js").ModelInformation;
21
- get settings(): SETTINGS;
22
- generateJsonResponse(prompt: InstructionWithSchema<string, unknown>, options?: ModelFunctionOptions<SETTINGS> | undefined): Promise<string>;
21
+ get settings(): TextGenerationModelSettings;
22
+ get settingsForEvent(): Partial<MODEL["settings"]>;
23
+ generateJsonResponse(prompt: InstructionWithSchema<string, unknown>, options?: ModelFunctionOptions<MODEL["settings"]> | undefined): Promise<string>;
23
24
  extractJson(response: string): unknown;
24
- withSettings(additionalSettings: Partial<SETTINGS>): this;
25
+ withSettings(additionalSettings: Partial<MODEL["settings"]>): this;
25
26
  }
@@ -22,6 +22,9 @@ export class JsonTextGenerationModel {
22
22
  get settings() {
23
23
  return this.model.settings;
24
24
  }
25
+ get settingsForEvent() {
26
+ return this.model.settingsForEvent;
27
+ }
25
28
  async generateJsonResponse(prompt, options) {
26
29
  return await generateText(this.model, this.format.createPrompt(prompt), options);
27
30
  }
@@ -23,6 +23,7 @@ function generateJson(model, schemaDefinition, prompt, options) {
23
23
  }
24
24
  return parseResult.data;
25
25
  },
26
+ extractUsage: (result) => model.extractUsage?.(result),
26
27
  });
27
28
  }
28
29
  exports.generateJson = generateJson;
@@ -1,5 +1,5 @@
1
1
  import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
2
2
  import { ModelFunctionPromise } from "../executeCall.js";
3
- import { GenerateJsonModel, GenerateJsonModelSettings } from "./GenerateJsonModel.js";
3
+ import { JsonGenerationModel, JsonGenerationModelSettings } from "./JsonGenerationModel.js";
4
4
  import { SchemaDefinition } from "./SchemaDefinition.js";
5
- export declare function generateJson<STRUCTURE, PROMPT, RESPONSE, NAME extends string, SETTINGS extends GenerateJsonModelSettings>(model: GenerateJsonModel<PROMPT, RESPONSE, SETTINGS>, schemaDefinition: SchemaDefinition<NAME, STRUCTURE>, prompt: (schemaDefinition: SchemaDefinition<NAME, STRUCTURE>) => PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<GenerateJsonModel<PROMPT, RESPONSE, SETTINGS>, STRUCTURE, RESPONSE>;
5
+ export declare function generateJson<STRUCTURE, PROMPT, RESPONSE, NAME extends string, SETTINGS extends JsonGenerationModelSettings>(model: JsonGenerationModel<PROMPT, RESPONSE, SETTINGS>, schemaDefinition: SchemaDefinition<NAME, STRUCTURE>, prompt: (schemaDefinition: SchemaDefinition<NAME, STRUCTURE>) => PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<STRUCTURE, RESPONSE>;
@@ -20,5 +20,6 @@ export function generateJson(model, schemaDefinition, prompt, options) {
20
20
  }
21
21
  return parseResult.data;
22
22
  },
23
+ extractUsage: (result) => model.extractUsage?.(result),
23
24
  });
24
25
  }
@@ -36,6 +36,7 @@ function generateJsonOrText(model, schemaDefinitions, prompt, options) {
36
36
  text: text, // text is string | null, which is part of the response for schema values
37
37
  };
38
38
  },
39
+ extractUsage: (result) => model.extractUsage?.(result),
39
40
  });
40
41
  }
41
42
  exports.generateJsonOrText = generateJsonOrText;
@@ -1,6 +1,6 @@
1
1
  import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
2
2
  import { ModelFunctionPromise } from "../executeCall.js";
3
- import { GenerateJsonOrTextModel, GenerateJsonOrTextModelSettings, GenerateJsonOrTextPrompt } from "./GenerateJsonOrTextModel.js";
3
+ import { JsonOrTextGenerationModel, JsonOrTextGenerationModelSettings, JsonOrTextGenerationPrompt } from "./JsonOrTextGenerationModel.js";
4
4
  import { SchemaDefinition } from "./SchemaDefinition.js";
5
5
  type SchemaDefinitionArray<T extends SchemaDefinition<any, any>[]> = T;
6
6
  type ToSchemaDefinitionsMap<T extends SchemaDefinitionArray<SchemaDefinition<any, any>[]>> = {
@@ -14,7 +14,7 @@ type ToSchemaUnion<T> = {
14
14
  } : never;
15
15
  }[keyof T];
16
16
  type ToOutputValue<SCHEMAS extends SchemaDefinitionArray<SchemaDefinition<any, any>[]>> = ToSchemaUnion<ToSchemaDefinitionsMap<SCHEMAS>>;
17
- export declare function generateJsonOrText<SCHEMAS extends SchemaDefinition<any, any>[], PROMPT, RESPONSE, SETTINGS extends GenerateJsonOrTextModelSettings>(model: GenerateJsonOrTextModel<PROMPT, RESPONSE, SETTINGS>, schemaDefinitions: SCHEMAS, prompt: (schemaDefinitions: SCHEMAS) => PROMPT & GenerateJsonOrTextPrompt<RESPONSE>, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<GenerateJsonOrTextModel<PROMPT, RESPONSE, SETTINGS>, {
17
+ export declare function generateJsonOrText<SCHEMAS extends SchemaDefinition<any, any>[], PROMPT, RESPONSE, SETTINGS extends JsonOrTextGenerationModelSettings>(model: JsonOrTextGenerationModel<PROMPT, RESPONSE, SETTINGS>, schemaDefinitions: SCHEMAS, prompt: (schemaDefinitions: SCHEMAS) => PROMPT & JsonOrTextGenerationPrompt<RESPONSE>, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<{
18
18
  schema: null;
19
19
  value: null;
20
20
  text: string;
@@ -33,5 +33,6 @@ export function generateJsonOrText(model, schemaDefinitions, prompt, options) {
33
33
  text: text, // text is string | null, which is part of the response for schema values
34
34
  };
35
35
  },
36
+ extractUsage: (result) => model.extractUsage?.(result),
36
37
  });
37
38
  }
@@ -1,12 +1,16 @@
1
1
  import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
2
2
  export interface TextGenerationStartedEvent extends BaseModelCallStartedEvent {
3
3
  functionType: "text-generation";
4
- prompt: unknown;
5
4
  }
6
5
  export type TextGenerationFinishedEventResult = {
7
6
  status: "success";
8
7
  response: unknown;
9
8
  output: string;
9
+ usage?: {
10
+ promptTokens: number;
11
+ completionTokens: number;
12
+ totalTokens: number;
13
+ };
10
14
  } | {
11
15
  status: "error";
12
16
  error: unknown;
@@ -15,6 +19,5 @@ export type TextGenerationFinishedEventResult = {
15
19
  };
16
20
  export interface TextGenerationFinishedEvent extends BaseModelCallFinishedEvent {
17
21
  functionType: "text-generation";
18
- prompt: unknown;
19
22
  result: TextGenerationFinishedEventResult;
20
23
  }
@@ -38,5 +38,10 @@ export interface TextGenerationModel<PROMPT, RESPONSE, FULL_DELTA, SETTINGS exte
38
38
  * Optional. Implement for streaming support.
39
39
  */
40
40
  readonly extractTextDelta: ((fullDelta: FULL_DELTA) => string | undefined) | undefined;
41
+ extractUsage?(response: RESPONSE): {
42
+ promptTokens: number;
43
+ completionTokens: number;
44
+ totalTokens: number;
45
+ };
41
46
  withPromptFormat<INPUT_PROMPT>(promptFormat: PromptFormat<INPUT_PROMPT, PROMPT>): PromptFormatTextGenerationModel<INPUT_PROMPT, PROMPT, RESPONSE, FULL_DELTA, SETTINGS, this>;
42
47
  }
@@ -29,6 +29,7 @@ model, prompt, options) {
29
29
  ? model.extractText(result).trim()
30
30
  : model.extractText(result);
31
31
  },
32
+ extractUsage: (result) => model.extractUsage?.(result),
32
33
  });
33
34
  }
34
35
  exports.generateText = generateText;
@@ -13,4 +13,4 @@ import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerati
13
13
  * "Write a short story about a robot learning to love:\n\n"
14
14
  * );
15
15
  */
16
- export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, string, RESPONSE>;
16
+ export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<string, RESPONSE>;
@@ -26,5 +26,6 @@ model, prompt, options) {
26
26
  ? model.extractText(result).trim()
27
27
  : model.extractText(result);
28
28
  },
29
+ extractUsage: (result) => model.extractUsage?.(result),
29
30
  });
30
31
  }
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.streamText = exports.StreamTextPromise = void 0;
4
4
  const nanoid_1 = require("nanoid");
5
5
  const FunctionEventSource_js_1 = require("../../core/FunctionEventSource.cjs");
6
+ const GlobalFunctionLogging_js_1 = require("../../core/GlobalFunctionLogging.cjs");
6
7
  const GlobalFunctionObservers_js_1 = require("../../core/GlobalFunctionObservers.cjs");
8
+ const getFunctionCallLogger_js_1 = require("../../core/getFunctionCallLogger.cjs");
7
9
  const DurationMeasurement_js_1 = require("../../util/DurationMeasurement.cjs");
8
10
  const AbortError_js_1 = require("../../util/api/AbortError.cjs");
9
11
  const runSafe_js_1 = require("../../util/runSafe.cjs");
@@ -59,6 +61,7 @@ async function doStreamText(model, prompt, options) {
59
61
  const settings = model.settings;
60
62
  const eventSource = new FunctionEventSource_js_1.FunctionEventSource({
61
63
  observers: [
64
+ ...(0, getFunctionCallLogger_js_1.getFunctionCallLogger)(options?.logging ?? (0, GlobalFunctionLogging_js_1.getGlobalFunctionLogging)()),
62
65
  ...(0, GlobalFunctionObservers_js_1.getGlobalFunctionObservers)(),
63
66
  ...(settings.observers ?? []),
64
67
  ...(run?.observers ?? []),
@@ -68,21 +71,21 @@ async function doStreamText(model, prompt, options) {
68
71
  });
69
72
  const durationMeasurement = (0, DurationMeasurement_js_1.startDurationMeasurement)();
70
73
  const startMetadata = {
74
+ functionType: "text-streaming",
71
75
  callId: `call-${(0, nanoid_1.nanoid)()}`,
72
76
  runId: run?.runId,
73
77
  sessionId: run?.sessionId,
74
78
  userId: run?.userId,
75
79
  functionId: options?.functionId,
76
80
  model: model.modelInformation,
77
- functionType: "text-streaming",
81
+ settings: model.settingsForEvent,
78
82
  input: prompt,
79
- settings,
80
83
  timestamp: durationMeasurement.startDate,
81
84
  startTimestamp: durationMeasurement.startDate,
82
85
  };
83
86
  eventSource.notify({
84
- ...startMetadata,
85
87
  eventType: "started",
88
+ ...startMetadata,
86
89
  });
87
90
  const result = await (0, runSafe_js_1.runSafe)(async () => (0, extractTextDeltas_js_1.extractTextDeltas)({
88
91
  deltaIterable: await model.generateDeltaStreamResponse(prompt, {
@@ -93,8 +96,8 @@ async function doStreamText(model, prompt, options) {
93
96
  extractDelta: (fullDelta) => model.extractTextDelta(fullDelta),
94
97
  onDone: (fullText, lastFullDelta) => {
95
98
  const finishMetadata = {
96
- ...startMetadata,
97
99
  eventType: "finished",
100
+ ...startMetadata,
98
101
  finishTimestamp: new Date(),
99
102
  durationInMs: durationMeasurement.durationInMs,
100
103
  };
@@ -109,8 +112,8 @@ async function doStreamText(model, prompt, options) {
109
112
  },
110
113
  onError: (error) => {
111
114
  const finishMetadata = {
112
- ...startMetadata,
113
115
  eventType: "finished",
116
+ ...startMetadata,
114
117
  finishTimestamp: new Date(),
115
118
  durationInMs: durationMeasurement.durationInMs,
116
119
  };
@@ -132,8 +135,8 @@ async function doStreamText(model, prompt, options) {
132
135
  }));
133
136
  if (!result.ok) {
134
137
  const finishMetadata = {
135
- ...startMetadata,
136
138
  eventType: "finished",
139
+ ...startMetadata,
137
140
  finishTimestamp: new Date(),
138
141
  durationInMs: durationMeasurement.durationInMs,
139
142
  };
@@ -1,17 +1,17 @@
1
1
  import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
2
- import { CallMetadata } from "../executeCall.js";
2
+ import { ModelCallMetadata } from "../executeCall.js";
3
3
  import { DeltaEvent } from "./DeltaEvent.js";
4
4
  import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerationModel.js";
5
- export declare class StreamTextPromise<PROMPT, FULL_DELTA, SETTINGS extends TextGenerationModelSettings> extends Promise<AsyncIterable<string>> {
5
+ export declare class StreamTextPromise extends Promise<AsyncIterable<string>> {
6
6
  private fullPromise;
7
7
  private outputPromise;
8
8
  constructor(fullPromise: Promise<{
9
9
  output: AsyncIterable<string>;
10
- metadata: Omit<CallMetadata<TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS>>, "durationInMs" | "finishTimestamp">;
10
+ metadata: Omit<ModelCallMetadata, "durationInMs" | "finishTimestamp">;
11
11
  }>);
12
12
  asFullResponse(): Promise<{
13
13
  output: AsyncIterable<string>;
14
- metadata: Omit<CallMetadata<TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS>>, "durationInMs" | "finishTimestamp">;
14
+ metadata: Omit<ModelCallMetadata, "durationInMs" | "finishTimestamp">;
15
15
  }>;
16
16
  then<TResult1 = AsyncIterable<string>, TResult2 = never>(onfulfilled?: ((value: AsyncIterable<string>) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
17
17
  catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<AsyncIterable<string> | TResult>;
@@ -20,4 +20,4 @@ export declare class StreamTextPromise<PROMPT, FULL_DELTA, SETTINGS extends Text
20
20
  export declare function streamText<PROMPT, FULL_DELTA, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS> & {
21
21
  generateDeltaStreamResponse: (prompt: PROMPT, options: ModelFunctionOptions<SETTINGS>) => PromiseLike<AsyncIterable<DeltaEvent<FULL_DELTA>>>;
22
22
  extractTextDelta: (fullDelta: FULL_DELTA) => string | undefined;
23
- }, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): StreamTextPromise<PROMPT, FULL_DELTA, SETTINGS>;
23
+ }, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): StreamTextPromise;
@@ -1,6 +1,8 @@
1
1
  import { nanoid as createId } from "nanoid";
2
2
  import { FunctionEventSource } from "../../core/FunctionEventSource.js";
3
+ import { getGlobalFunctionLogging } from "../../core/GlobalFunctionLogging.js";
3
4
  import { getGlobalFunctionObservers } from "../../core/GlobalFunctionObservers.js";
5
+ import { getFunctionCallLogger } from "../../core/getFunctionCallLogger.js";
4
6
  import { startDurationMeasurement } from "../../util/DurationMeasurement.js";
5
7
  import { AbortError } from "../../util/api/AbortError.js";
6
8
  import { runSafe } from "../../util/runSafe.js";
@@ -54,6 +56,7 @@ async function doStreamText(model, prompt, options) {
54
56
  const settings = model.settings;
55
57
  const eventSource = new FunctionEventSource({
56
58
  observers: [
59
+ ...getFunctionCallLogger(options?.logging ?? getGlobalFunctionLogging()),
57
60
  ...getGlobalFunctionObservers(),
58
61
  ...(settings.observers ?? []),
59
62
  ...(run?.observers ?? []),
@@ -63,21 +66,21 @@ async function doStreamText(model, prompt, options) {
63
66
  });
64
67
  const durationMeasurement = startDurationMeasurement();
65
68
  const startMetadata = {
69
+ functionType: "text-streaming",
66
70
  callId: `call-${createId()}`,
67
71
  runId: run?.runId,
68
72
  sessionId: run?.sessionId,
69
73
  userId: run?.userId,
70
74
  functionId: options?.functionId,
71
75
  model: model.modelInformation,
72
- functionType: "text-streaming",
76
+ settings: model.settingsForEvent,
73
77
  input: prompt,
74
- settings,
75
78
  timestamp: durationMeasurement.startDate,
76
79
  startTimestamp: durationMeasurement.startDate,
77
80
  };
78
81
  eventSource.notify({
79
- ...startMetadata,
80
82
  eventType: "started",
83
+ ...startMetadata,
81
84
  });
82
85
  const result = await runSafe(async () => extractTextDeltas({
83
86
  deltaIterable: await model.generateDeltaStreamResponse(prompt, {
@@ -88,8 +91,8 @@ async function doStreamText(model, prompt, options) {
88
91
  extractDelta: (fullDelta) => model.extractTextDelta(fullDelta),
89
92
  onDone: (fullText, lastFullDelta) => {
90
93
  const finishMetadata = {
91
- ...startMetadata,
92
94
  eventType: "finished",
95
+ ...startMetadata,
93
96
  finishTimestamp: new Date(),
94
97
  durationInMs: durationMeasurement.durationInMs,
95
98
  };
@@ -104,8 +107,8 @@ async function doStreamText(model, prompt, options) {
104
107
  },
105
108
  onError: (error) => {
106
109
  const finishMetadata = {
107
- ...startMetadata,
108
110
  eventType: "finished",
111
+ ...startMetadata,
109
112
  finishTimestamp: new Date(),
110
113
  durationInMs: durationMeasurement.durationInMs,
111
114
  };
@@ -127,8 +130,8 @@ async function doStreamText(model, prompt, options) {
127
130
  }));
128
131
  if (!result.ok) {
129
132
  const finishMetadata = {
130
- ...startMetadata,
131
133
  eventType: "finished",
134
+ ...startMetadata,
132
135
  finishTimestamp: new Date(),
133
136
  durationInMs: durationMeasurement.durationInMs,
134
137
  };
@@ -25,10 +25,10 @@ __exportStar(require("./embed-text/embedText.cjs"), exports);
25
25
  __exportStar(require("./generate-image/ImageGenerationEvent.cjs"), exports);
26
26
  __exportStar(require("./generate-image/ImageGenerationModel.cjs"), exports);
27
27
  __exportStar(require("./generate-image/generateImage.cjs"), exports);
28
- __exportStar(require("./generate-json/GenerateJsonModel.cjs"), exports);
29
- __exportStar(require("./generate-json/GenerateJsonOrTextModel.cjs"), exports);
30
28
  __exportStar(require("./generate-json/InstructionWithSchemaPrompt.cjs"), exports);
31
29
  __exportStar(require("./generate-json/JsonGenerationEvent.cjs"), exports);
30
+ __exportStar(require("./generate-json/JsonGenerationModel.cjs"), exports);
31
+ __exportStar(require("./generate-json/JsonOrTextGenerationModel.cjs"), exports);
32
32
  __exportStar(require("./generate-json/JsonTextGenerationModel.cjs"), exports);
33
33
  __exportStar(require("./generate-json/NoSuchSchemaError.cjs"), exports);
34
34
  __exportStar(require("./generate-json/SchemaDefinition.cjs"), exports);
@@ -39,6 +39,7 @@ __exportStar(require("./generate-text/DeltaEvent.cjs"), exports);
39
39
  __exportStar(require("./generate-text/TextDeltaEventSource.cjs"), exports);
40
40
  __exportStar(require("./generate-text/TextGenerationEvent.cjs"), exports);
41
41
  __exportStar(require("./generate-text/TextGenerationModel.cjs"), exports);
42
+ __exportStar(require("./generate-text/TextStreamingEvent.cjs"), exports);
42
43
  __exportStar(require("./generate-text/generateText.cjs"), exports);
43
44
  __exportStar(require("./generate-text/streamText.cjs"), exports);
44
45
  __exportStar(require("./synthesize-speech/SpeechSynthesisEvent.cjs"), exports);
@@ -9,10 +9,10 @@ export * from "./embed-text/embedText.js";
9
9
  export * from "./generate-image/ImageGenerationEvent.js";
10
10
  export * from "./generate-image/ImageGenerationModel.js";
11
11
  export * from "./generate-image/generateImage.js";
12
- export * from "./generate-json/GenerateJsonModel.js";
13
- export * from "./generate-json/GenerateJsonOrTextModel.js";
14
12
  export * from "./generate-json/InstructionWithSchemaPrompt.js";
15
13
  export * from "./generate-json/JsonGenerationEvent.js";
14
+ export * from "./generate-json/JsonGenerationModel.js";
15
+ export * from "./generate-json/JsonOrTextGenerationModel.js";
16
16
  export * from "./generate-json/JsonTextGenerationModel.js";
17
17
  export * from "./generate-json/NoSuchSchemaError.js";
18
18
  export * from "./generate-json/SchemaDefinition.js";
@@ -23,6 +23,7 @@ export * from "./generate-text/DeltaEvent.js";
23
23
  export * from "./generate-text/TextDeltaEventSource.js";
24
24
  export * from "./generate-text/TextGenerationEvent.js";
25
25
  export * from "./generate-text/TextGenerationModel.js";
26
+ export * from "./generate-text/TextStreamingEvent.js";
26
27
  export * from "./generate-text/generateText.js";
27
28
  export * from "./generate-text/streamText.js";
28
29
  export * from "./synthesize-speech/SpeechSynthesisEvent.js";
@@ -9,10 +9,10 @@ export * from "./embed-text/embedText.js";
9
9
  export * from "./generate-image/ImageGenerationEvent.js";
10
10
  export * from "./generate-image/ImageGenerationModel.js";
11
11
  export * from "./generate-image/generateImage.js";
12
- export * from "./generate-json/GenerateJsonModel.js";
13
- export * from "./generate-json/GenerateJsonOrTextModel.js";
14
12
  export * from "./generate-json/InstructionWithSchemaPrompt.js";
15
13
  export * from "./generate-json/JsonGenerationEvent.js";
14
+ export * from "./generate-json/JsonGenerationModel.js";
15
+ export * from "./generate-json/JsonOrTextGenerationModel.js";
16
16
  export * from "./generate-json/JsonTextGenerationModel.js";
17
17
  export * from "./generate-json/NoSuchSchemaError.js";
18
18
  export * from "./generate-json/SchemaDefinition.js";
@@ -23,6 +23,7 @@ export * from "./generate-text/DeltaEvent.js";
23
23
  export * from "./generate-text/TextDeltaEventSource.js";
24
24
  export * from "./generate-text/TextGenerationEvent.js";
25
25
  export * from "./generate-text/TextGenerationModel.js";
26
+ export * from "./generate-text/TextStreamingEvent.js";
26
27
  export * from "./generate-text/generateText.js";
27
28
  export * from "./generate-text/streamText.js";
28
29
  export * from "./synthesize-speech/SpeechSynthesisEvent.js";
@@ -2,7 +2,7 @@
2
2
  import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
3
3
  export interface SpeechSynthesisStartedEvent extends BaseModelCallStartedEvent {
4
4
  functionType: "speech-synthesis";
5
- text: string;
5
+ input: string;
6
6
  }
7
7
  export type SpeechSynthesisFinishedEventResult = {
8
8
  status: "success";
@@ -16,6 +16,6 @@ export type SpeechSynthesisFinishedEventResult = {
16
16
  };
17
17
  export interface SpeechSynthesisFinishedEvent extends BaseModelCallFinishedEvent {
18
18
  functionType: "speech-synthesis";
19
- text: string;
19
+ input: string;
20
20
  result: SpeechSynthesisFinishedEventResult;
21
21
  }
@@ -3,7 +3,7 @@ import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
3
3
  import { Model, ModelSettings } from "../Model.js";
4
4
  export interface SpeechSynthesisModelSettings extends ModelSettings {
5
5
  }
6
- export interface SpeechSynthesisModel<SETTINGS> extends Model<SETTINGS> {
6
+ export interface SpeechSynthesisModel<SETTINGS extends SpeechSynthesisModelSettings> extends Model<SETTINGS> {
7
7
  /**
8
8
  * Generates an mp3 audio buffer that contains the speech for the given text.
9
9
  */
@@ -5,4 +5,4 @@ import { SpeechSynthesisModel, SpeechSynthesisModelSettings } from "./SpeechSynt
5
5
  /**
6
6
  * Synthesizes speech from text.
7
7
  */
8
- export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<SpeechSynthesisModel<SETTINGS>, Buffer, Buffer>;
8
+ export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<Buffer, Buffer>;
@@ -2,7 +2,7 @@ import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
2
2
  import { Model, ModelSettings } from "../Model.js";
3
3
  export interface TranscriptionModelSettings extends ModelSettings {
4
4
  }
5
- export interface TranscriptionModel<DATA, RESPONSE, SETTINGS> extends Model<SETTINGS> {
5
+ export interface TranscriptionModel<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings> extends Model<SETTINGS> {
6
6
  generateTranscriptionResponse: (data: DATA, options?: ModelFunctionOptions<SETTINGS>) => PromiseLike<RESPONSE>;
7
7
  extractTranscriptionText: (response: RESPONSE) => string;
8
8
  }
@@ -15,4 +15,4 @@ import { TranscriptionModel, TranscriptionModelSettings } from "./TranscriptionM
15
15
  * }
16
16
  * );
17
17
  */
18
- export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<TranscriptionModel<DATA, RESPONSE, SETTINGS>, string, RESPONSE>;
18
+ export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<string, RESPONSE>;
@@ -38,6 +38,15 @@ class Automatic1111ImageGenerationModel extends AbstractModel_js_1.AbstractModel
38
38
  call: async () => callAutomatic1111ImageGenerationAPI(callSettings),
39
39
  });
40
40
  }
41
+ get settingsForEvent() {
42
+ return {
43
+ baseUrl: this.settings.baseUrl,
44
+ height: this.settings.height,
45
+ width: this.settings.width,
46
+ sampler: this.settings.sampler,
47
+ steps: this.settings.steps,
48
+ };
49
+ }
41
50
  generateImageResponse(prompt, options) {
42
51
  return this.callAPI(prompt, options);
43
52
  }
@@ -14,6 +14,7 @@ export declare class Automatic1111ImageGenerationModel extends AbstractModel<Aut
14
14
  readonly provider: "Automatic1111";
15
15
  get modelName(): string;
16
16
  callAPI(input: A111ImageGenerationPrompt, options?: ModelFunctionOptions<Automatic1111ImageGenerationModelSettings>): Promise<Automatic1111ImageGenerationResponse>;
17
+ get settingsForEvent(): Partial<Automatic1111ImageGenerationModelSettings>;
17
18
  generateImageResponse(prompt: A111ImageGenerationPrompt, options?: ModelFunctionOptions<Automatic1111ImageGenerationModelSettings>): Promise<{
18
19
  images: string[];
19
20
  parameters: {};
@@ -35,6 +35,15 @@ export class Automatic1111ImageGenerationModel extends AbstractModel {
35
35
  call: async () => callAutomatic1111ImageGenerationAPI(callSettings),
36
36
  });
37
37
  }
38
+ get settingsForEvent() {
39
+ return {
40
+ baseUrl: this.settings.baseUrl,
41
+ height: this.settings.height,
42
+ width: this.settings.width,
43
+ sampler: this.settings.sampler,
44
+ steps: this.settings.steps,
45
+ };
46
+ }
38
47
  generateImageResponse(prompt, options) {
39
48
  return this.callAPI(prompt, options);
40
49
  }
@@ -120,6 +120,12 @@ class CohereTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
120
120
  call: async () => callCohereEmbeddingAPI(callSettings),
121
121
  });
122
122
  }
123
+ get settingsForEvent() {
124
+ return {
125
+ baseUrl: this.settings.baseUrl,
126
+ truncate: this.settings.truncate,
127
+ };
128
+ }
123
129
  generateEmbeddingResponse(texts, options) {
124
130
  return this.callAPI(texts, options);
125
131
  }
@@ -62,6 +62,7 @@ export declare class CohereTextEmbeddingModel extends AbstractModel<CohereTextEm
62
62
  detokenize(tokens: number[]): Promise<string>;
63
63
  private get apiKey();
64
64
  callAPI(texts: Array<string>, options?: ModelFunctionOptions<CohereTextEmbeddingModelSettings>): Promise<CohereTextEmbeddingResponse>;
65
+ get settingsForEvent(): Partial<CohereTextEmbeddingModelSettings>;
65
66
  generateEmbeddingResponse(texts: string[], options?: ModelFunctionOptions<CohereTextEmbeddingModelSettings>): Promise<{
66
67
  id: string;
67
68
  meta: {
@@ -114,6 +114,12 @@ export class CohereTextEmbeddingModel extends AbstractModel {
114
114
  call: async () => callCohereEmbeddingAPI(callSettings),
115
115
  });
116
116
  }
117
+ get settingsForEvent() {
118
+ return {
119
+ baseUrl: this.settings.baseUrl,
120
+ truncate: this.settings.truncate,
121
+ };
122
+ }
117
123
  generateEmbeddingResponse(texts, options) {
118
124
  return this.callAPI(texts, options);
119
125
  }
@@ -102,6 +102,8 @@ class CohereTextGenerationModel extends AbstractModel_js_1.AbstractModel {
102
102
  // to exclude stop tokens from the generated text
103
103
  endSequences: combinedSettings.stopSequences,
104
104
  maxTokens: combinedSettings.maxCompletionTokens,
105
+ // mapped name because of conflict with stopSequences:
106
+ stopSequences: combinedSettings.cohereStopSequences,
105
107
  abortSignal: run?.abortSignal,
106
108
  prompt,
107
109
  responseFormat,
@@ -112,6 +114,24 @@ class CohereTextGenerationModel extends AbstractModel_js_1.AbstractModel {
112
114
  call: async () => callCohereTextGenerationAPI(callSettings),
113
115
  });
114
116
  }
117
+ get settingsForEvent() {
118
+ const eventSettingProperties = [
119
+ "maxCompletionTokens",
120
+ "stopSequences",
121
+ "baseUrl",
122
+ "numGenerations",
123
+ "temperature",
124
+ "k",
125
+ "p",
126
+ "frequencyPenalty",
127
+ "presencePenalty",
128
+ "returnLikelihoods",
129
+ "logitBias",
130
+ "truncate",
131
+ "cohereStopSequences",
132
+ ];
133
+ return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
134
+ }
115
135
  generateTextResponse(prompt, options) {
116
136
  return this.callAPI(prompt, {
117
137
  ...options,
@@ -40,10 +40,10 @@ export interface CohereTextGenerationModelSettings extends TextGenerationModelSe
40
40
  p?: number;
41
41
  frequencyPenalty?: number;
42
42
  presencePenalty?: number;
43
- stopSequences?: string[];
44
43
  returnLikelihoods?: "GENERATION" | "ALL" | "NONE";
45
44
  logitBias?: Record<string, number>;
46
45
  truncate?: "NONE" | "START" | "END";
46
+ cohereStopSequences?: string[];
47
47
  }
48
48
  /**
49
49
  * Create a text generation model that calls the Cohere Co.Generate API.
@@ -73,6 +73,7 @@ export declare class CohereTextGenerationModel extends AbstractModel<CohereTextG
73
73
  callAPI<RESPONSE>(prompt: string, options: {
74
74
  responseFormat: CohereTextGenerationResponseFormatType<RESPONSE>;
75
75
  } & ModelFunctionOptions<CohereTextGenerationModelSettings>): Promise<RESPONSE>;
76
+ get settingsForEvent(): Partial<CohereTextGenerationModelSettings>;
76
77
  generateTextResponse(prompt: string, options?: ModelFunctionOptions<CohereTextGenerationModelSettings>): Promise<{
77
78
  prompt: string;
78
79
  id: string;