modelfusion 0.130.1 → 0.131.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 (143) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +19 -19
  3. package/core/api/postToApi.cjs +1 -1
  4. package/core/api/postToApi.js +1 -1
  5. package/core/schema/JsonSchemaProducer.d.ts +1 -1
  6. package/core/schema/Schema.d.ts +7 -7
  7. package/core/schema/TypeValidationError.cjs +5 -5
  8. package/core/schema/TypeValidationError.d.ts +4 -4
  9. package/core/schema/TypeValidationError.js +5 -5
  10. package/core/schema/UncheckedSchema.cjs +2 -2
  11. package/core/schema/UncheckedSchema.d.ts +5 -5
  12. package/core/schema/UncheckedSchema.js +2 -2
  13. package/core/schema/ZodSchema.cjs +5 -2
  14. package/core/schema/ZodSchema.d.ts +8 -8
  15. package/core/schema/ZodSchema.js +5 -2
  16. package/core/schema/parseJSON.cjs +6 -6
  17. package/core/schema/parseJSON.d.ts +3 -3
  18. package/core/schema/parseJSON.js +6 -6
  19. package/core/schema/validateTypes.cjs +13 -13
  20. package/core/schema/validateTypes.d.ts +9 -9
  21. package/core/schema/validateTypes.js +13 -13
  22. package/model-function/ModelCallEvent.d.ts +4 -4
  23. package/model-function/PromptTemplate.d.ts +2 -2
  24. package/model-function/{generate-structure/StructureFromTextGenerationModel.cjs → generate-object/ObjectFromTextGenerationModel.cjs} +8 -8
  25. package/model-function/{generate-structure/StructureFromTextGenerationModel.d.ts → generate-object/ObjectFromTextGenerationModel.d.ts} +6 -6
  26. package/model-function/{generate-structure/StructureFromTextGenerationModel.js → generate-object/ObjectFromTextGenerationModel.js} +6 -6
  27. package/model-function/{generate-structure/StructureFromTextPromptTemplate.d.ts → generate-object/ObjectFromTextPromptTemplate.d.ts} +4 -4
  28. package/model-function/{generate-structure/StructureFromTextStreamingModel.cjs → generate-object/ObjectFromTextStreamingModel.cjs} +10 -10
  29. package/model-function/generate-object/ObjectFromTextStreamingModel.d.ts +19 -0
  30. package/model-function/{generate-structure/StructureFromTextStreamingModel.js → generate-object/ObjectFromTextStreamingModel.js} +8 -8
  31. package/model-function/{generate-structure/StructureGenerationEvent.d.ts → generate-object/ObjectGenerationEvent.d.ts} +6 -6
  32. package/model-function/generate-object/ObjectGenerationModel.d.ts +24 -0
  33. package/model-function/{generate-structure/StructureParseError.cjs → generate-object/ObjectParseError.cjs} +5 -5
  34. package/model-function/{generate-structure/StructureParseError.d.ts → generate-object/ObjectParseError.d.ts} +1 -1
  35. package/model-function/{generate-structure/StructureParseError.js → generate-object/ObjectParseError.js} +3 -3
  36. package/model-function/generate-object/ObjectStream.cjs +43 -0
  37. package/model-function/generate-object/ObjectStream.d.ts +18 -0
  38. package/model-function/generate-object/ObjectStream.js +38 -0
  39. package/model-function/generate-object/ObjectStreamingEvent.d.ts +7 -0
  40. package/model-function/{generate-structure/StructureValidationError.cjs → generate-object/ObjectValidationError.cjs} +5 -5
  41. package/model-function/{generate-structure/StructureValidationError.d.ts → generate-object/ObjectValidationError.d.ts} +1 -1
  42. package/model-function/{generate-structure/StructureValidationError.js → generate-object/ObjectValidationError.js} +3 -3
  43. package/model-function/{generate-structure/generateStructure.cjs → generate-object/generateObject.cjs} +11 -12
  44. package/model-function/generate-object/generateObject.d.ts +56 -0
  45. package/model-function/{generate-structure/generateStructure.js → generate-object/generateObject.js} +9 -10
  46. package/model-function/{generate-structure → generate-object}/index.cjs +12 -11
  47. package/model-function/generate-object/index.d.ts +12 -0
  48. package/model-function/generate-object/index.js +12 -0
  49. package/model-function/{generate-structure/jsonStructurePrompt.cjs → generate-object/jsonObjectPrompt.cjs} +6 -6
  50. package/model-function/{generate-structure/jsonStructurePrompt.d.ts → generate-object/jsonObjectPrompt.d.ts} +6 -6
  51. package/model-function/{generate-structure/jsonStructurePrompt.js → generate-object/jsonObjectPrompt.js} +5 -5
  52. package/model-function/generate-object/streamObject.cjs +80 -0
  53. package/model-function/generate-object/streamObject.d.ts +57 -0
  54. package/model-function/generate-object/streamObject.js +76 -0
  55. package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +3 -3
  56. package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +3 -3
  57. package/model-function/generate-text/PromptTemplateTextGenerationModel.js +3 -3
  58. package/model-function/generate-text/PromptTemplateTextStreamingModel.cjs +3 -3
  59. package/model-function/generate-text/PromptTemplateTextStreamingModel.d.ts +3 -3
  60. package/model-function/generate-text/PromptTemplateTextStreamingModel.js +3 -3
  61. package/model-function/generate-text/TextGenerationPromptTemplate.d.ts +1 -1
  62. package/model-function/index.cjs +1 -1
  63. package/model-function/index.d.ts +1 -1
  64. package/model-function/index.js +1 -1
  65. package/model-provider/cohere/CohereTextGenerationModel.cjs +1 -1
  66. package/model-provider/cohere/CohereTextGenerationModel.js +1 -1
  67. package/model-provider/elevenlabs/ElevenLabsSpeechModel.cjs +1 -1
  68. package/model-provider/elevenlabs/ElevenLabsSpeechModel.js +1 -1
  69. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +1 -1
  70. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +1 -1
  71. package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.cjs +1 -1
  72. package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.d.ts +1 -1
  73. package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.js +1 -1
  74. package/model-provider/llamacpp/LlamaCppCompletionModel.cjs +5 -5
  75. package/model-provider/llamacpp/LlamaCppCompletionModel.d.ts +3 -3
  76. package/model-provider/llamacpp/LlamaCppCompletionModel.js +5 -5
  77. package/model-provider/mistral/MistralChatModel.cjs +1 -1
  78. package/model-provider/mistral/MistralChatModel.js +1 -1
  79. package/model-provider/ollama/OllamaChatModel.cjs +7 -7
  80. package/model-provider/ollama/OllamaChatModel.d.ts +3 -3
  81. package/model-provider/ollama/OllamaChatModel.js +7 -7
  82. package/model-provider/ollama/OllamaCompletionModel.cjs +7 -7
  83. package/model-provider/ollama/OllamaCompletionModel.d.ts +3 -3
  84. package/model-provider/ollama/OllamaCompletionModel.js +7 -7
  85. package/model-provider/ollama/OllamaCompletionModel.test.cjs +8 -6
  86. package/model-provider/ollama/OllamaCompletionModel.test.js +8 -6
  87. package/model-provider/openai/AbstractOpenAIChatModel.cjs +1 -1
  88. package/model-provider/openai/AbstractOpenAIChatModel.js +1 -1
  89. package/model-provider/openai/AbstractOpenAICompletionModel.cjs +1 -1
  90. package/model-provider/openai/AbstractOpenAICompletionModel.js +1 -1
  91. package/model-provider/openai/{OpenAIChatFunctionCallStructureGenerationModel.cjs → OpenAIChatFunctionCallObjectGenerationModel.cjs} +12 -12
  92. package/model-provider/openai/{OpenAIChatFunctionCallStructureGenerationModel.d.ts → OpenAIChatFunctionCallObjectGenerationModel.d.ts} +10 -10
  93. package/model-provider/openai/{OpenAIChatFunctionCallStructureGenerationModel.js → OpenAIChatFunctionCallObjectGenerationModel.js} +10 -10
  94. package/model-provider/openai/OpenAIChatModel.cjs +7 -7
  95. package/model-provider/openai/OpenAIChatModel.d.ts +6 -6
  96. package/model-provider/openai/OpenAIChatModel.js +7 -7
  97. package/model-provider/openai/OpenAIChatModel.test.cjs +7 -5
  98. package/model-provider/openai/OpenAIChatModel.test.js +7 -5
  99. package/model-provider/openai-compatible/OpenAICompatibleChatModel.cjs +4 -4
  100. package/model-provider/openai-compatible/OpenAICompatibleChatModel.d.ts +3 -3
  101. package/model-provider/openai-compatible/OpenAICompatibleChatModel.js +4 -4
  102. package/model-provider/whispercpp/WhisperCppTranscriptionModel.cjs +3 -3
  103. package/model-provider/whispercpp/WhisperCppTranscriptionModel.js +3 -3
  104. package/package.json +1 -1
  105. package/tool/WebSearchTool.cjs +1 -1
  106. package/tool/WebSearchTool.js +1 -1
  107. package/tool/generate-tool-call/generateToolCall.cjs +1 -1
  108. package/tool/generate-tool-call/generateToolCall.js +1 -1
  109. package/tool/generate-tool-calls/generateToolCalls.cjs +1 -1
  110. package/tool/generate-tool-calls/generateToolCalls.js +1 -1
  111. package/{model-function/generate-structure → util}/fixJson.test.cjs +1 -1
  112. package/{model-function/generate-structure → util}/fixJson.test.js +1 -1
  113. package/util/isDeepEqualData.cjs +1 -1
  114. package/util/isDeepEqualData.d.ts +1 -1
  115. package/util/isDeepEqualData.js +1 -1
  116. package/util/streaming/parseEventSourceStreamAsAsyncIterable.cjs +1 -1
  117. package/util/streaming/parseEventSourceStreamAsAsyncIterable.js +1 -1
  118. package/vector-index/memory/MemoryVectorIndex.cjs +1 -1
  119. package/vector-index/memory/MemoryVectorIndex.js +1 -1
  120. package/model-function/generate-structure/StructureFromTextStreamingModel.d.ts +0 -19
  121. package/model-function/generate-structure/StructureGenerationModel.d.ts +0 -24
  122. package/model-function/generate-structure/StructureStreamingEvent.d.ts +0 -7
  123. package/model-function/generate-structure/generateStructure.d.ts +0 -56
  124. package/model-function/generate-structure/index.d.ts +0 -11
  125. package/model-function/generate-structure/index.js +0 -11
  126. package/model-function/generate-structure/streamStructure.cjs +0 -61
  127. package/model-function/generate-structure/streamStructure.d.ts +0 -67
  128. package/model-function/generate-structure/streamStructure.js +0 -57
  129. /package/model-function/{generate-structure/StructureFromTextPromptTemplate.cjs → generate-object/ObjectFromTextPromptTemplate.cjs} +0 -0
  130. /package/model-function/{generate-structure/StructureFromTextPromptTemplate.js → generate-object/ObjectFromTextPromptTemplate.js} +0 -0
  131. /package/model-function/{generate-structure/StructureGenerationEvent.cjs → generate-object/ObjectGenerationEvent.cjs} +0 -0
  132. /package/model-function/{generate-structure/StructureGenerationEvent.js → generate-object/ObjectGenerationEvent.js} +0 -0
  133. /package/model-function/{generate-structure/StructureGenerationModel.cjs → generate-object/ObjectGenerationModel.cjs} +0 -0
  134. /package/model-function/{generate-structure/StructureGenerationModel.js → generate-object/ObjectGenerationModel.js} +0 -0
  135. /package/model-function/{generate-structure/StructureStreamingEvent.cjs → generate-object/ObjectStreamingEvent.cjs} +0 -0
  136. /package/model-function/{generate-structure/StructureStreamingEvent.js → generate-object/ObjectStreamingEvent.js} +0 -0
  137. /package/{model-function/generate-structure → util}/fixJson.cjs +0 -0
  138. /package/{model-function/generate-structure → util}/fixJson.d.ts +0 -0
  139. /package/{model-function/generate-structure → util}/fixJson.js +0 -0
  140. /package/{model-function/generate-structure → util}/fixJson.test.d.ts +0 -0
  141. /package/{model-function/generate-structure → util}/parsePartialJson.cjs +0 -0
  142. /package/{model-function/generate-structure → util}/parsePartialJson.d.ts +0 -0
  143. /package/{model-function/generate-structure → util}/parsePartialJson.js +0 -0
@@ -4,26 +4,26 @@ import { TypeValidationError } from "./TypeValidationError.js";
4
4
  * return a strongly-typed object.
5
5
  *
6
6
  * @template T - The type of the object to validate.
7
- * @param {string} structure - The JSON structure to validate.
8
- * @param {Schema<T>} schema - The schema to use for validating the JSON.
7
+ * @param {string} options.value - The object to validate.
8
+ * @param {Schema<T>} options.schema - The schema to use for validating the JSON.
9
9
  * @returns {T} - The typed object.
10
10
  */
11
- export function validateTypes({ structure, schema, }) {
11
+ export function validateTypes({ value, schema, }) {
12
12
  try {
13
- const validationResult = schema.validate(structure);
13
+ const validationResult = schema.validate(value);
14
14
  if (!validationResult.success) {
15
15
  throw new TypeValidationError({
16
- structure,
16
+ value,
17
17
  cause: validationResult.error,
18
18
  });
19
19
  }
20
- return validationResult.data;
20
+ return validationResult.value;
21
21
  }
22
22
  catch (error) {
23
23
  if (error instanceof TypeValidationError) {
24
24
  throw error;
25
25
  }
26
- throw new TypeValidationError({ structure: structure, cause: error });
26
+ throw new TypeValidationError({ value, cause: error });
27
27
  }
28
28
  }
29
29
  /**
@@ -31,20 +31,20 @@ export function validateTypes({ structure, schema, }) {
31
31
  * return a strongly-typed object.
32
32
  *
33
33
  * @template T - The type of the object to validate.
34
- * @param {string} structure - The JSON object to validate.
35
- * @param {Schema<T>} schema - The schema to use for validating the JSON.
34
+ * @param {string} options.value - The JSON object to validate.
35
+ * @param {Schema<T>} options.schema - The schema to use for validating the JSON.
36
36
  * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.
37
37
  */
38
- export function safeValidateTypes({ structure, schema, }) {
38
+ export function safeValidateTypes({ value, schema, }) {
39
39
  try {
40
- const validationResult = schema.validate(structure);
40
+ const validationResult = schema.validate(value);
41
41
  if (validationResult.success) {
42
42
  return validationResult;
43
43
  }
44
44
  return {
45
45
  success: false,
46
46
  error: new TypeValidationError({
47
- structure: structure,
47
+ value,
48
48
  cause: validationResult.error,
49
49
  }),
50
50
  };
@@ -54,7 +54,7 @@ export function safeValidateTypes({ structure, schema, }) {
54
54
  success: false,
55
55
  error: error instanceof TypeValidationError
56
56
  ? error
57
- : new TypeValidationError({ structure: structure, cause: error }),
57
+ : new TypeValidationError({ value, cause: error }),
58
58
  };
59
59
  }
60
60
  }
@@ -6,8 +6,8 @@ import { ClassifyFinishedEvent, ClassifyStartedEvent } from "./classify/Classify
6
6
  import { EmbeddingFinishedEvent, EmbeddingStartedEvent } from "./embed/EmbeddingEvent.js";
7
7
  import { ImageGenerationFinishedEvent, ImageGenerationStartedEvent } from "./generate-image/ImageGenerationEvent.js";
8
8
  import { SpeechGenerationFinishedEvent, SpeechGenerationStartedEvent, SpeechStreamingFinishedEvent, SpeechStreamingStartedEvent } from "./generate-speech/SpeechGenerationEvent.js";
9
- import { StructureGenerationFinishedEvent, StructureGenerationStartedEvent } from "./generate-structure/StructureGenerationEvent.js";
10
- import { StructureStreamingFinishedEvent, StructureStreamingStartedEvent } from "./generate-structure/StructureStreamingEvent.js";
9
+ import { ObjectGenerationFinishedEvent, ObjectGenerationStartedEvent } from "./generate-object/ObjectGenerationEvent.js";
10
+ import { ObjectStreamingFinishedEvent, ObjectStreamingStartedEvent } from "./generate-object/ObjectStreamingEvent.js";
11
11
  import { TextGenerationFinishedEvent, TextGenerationStartedEvent, TextStreamingFinishedEvent, TextStreamingStartedEvent } from "./generate-text/TextGenerationEvent.js";
12
12
  import { TranscriptionFinishedEvent, TranscriptionStartedEvent } from "./generate-transcription/TranscriptionEvent.js";
13
13
  export interface BaseModelCallStartedEvent extends BaseFunctionStartedEvent {
@@ -53,5 +53,5 @@ export interface BaseModelCallFinishedEvent extends BaseFunctionFinishedEvent {
53
53
  */
54
54
  result: BaseModelCallFinishedEventResult;
55
55
  }
56
- export type ModelCallStartedEvent = ClassifyStartedEvent | EmbeddingStartedEvent | ImageGenerationStartedEvent | SpeechGenerationStartedEvent | SpeechStreamingStartedEvent | StructureGenerationStartedEvent | StructureStreamingStartedEvent | TextGenerationStartedEvent | TextStreamingStartedEvent | ToolCallGenerationStartedEvent | ToolCallsGenerationStartedEvent | TranscriptionStartedEvent;
57
- export type ModelCallFinishedEvent = ClassifyFinishedEvent | EmbeddingFinishedEvent | ImageGenerationFinishedEvent | SpeechGenerationFinishedEvent | SpeechStreamingFinishedEvent | StructureGenerationFinishedEvent | StructureStreamingFinishedEvent | TextGenerationFinishedEvent | TextStreamingFinishedEvent | ToolCallGenerationFinishedEvent | ToolCallsGenerationFinishedEvent | TranscriptionFinishedEvent;
56
+ export type ModelCallStartedEvent = ClassifyStartedEvent | EmbeddingStartedEvent | ImageGenerationStartedEvent | SpeechGenerationStartedEvent | SpeechStreamingStartedEvent | ObjectGenerationStartedEvent | ObjectStreamingStartedEvent | TextGenerationStartedEvent | TextStreamingStartedEvent | ToolCallGenerationStartedEvent | ToolCallsGenerationStartedEvent | TranscriptionStartedEvent;
57
+ export type ModelCallFinishedEvent = ClassifyFinishedEvent | EmbeddingFinishedEvent | ImageGenerationFinishedEvent | SpeechGenerationFinishedEvent | SpeechStreamingFinishedEvent | ObjectGenerationFinishedEvent | ObjectStreamingFinishedEvent | TextGenerationFinishedEvent | TextStreamingFinishedEvent | ToolCallGenerationFinishedEvent | ToolCallsGenerationFinishedEvent | TranscriptionFinishedEvent;
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Prompt templates format a source prompt into the structure of a target prompt.
2
+ * Prompt templates format a source prompt as a target prompt.
3
3
  */
4
4
  export interface PromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> {
5
5
  /**
6
- * Formats the source prompt into the structure of the target prompt.
6
+ * Formats the source prompt as a target prompt.
7
7
  */
8
8
  format(sourcePrompt: SOURCE_PROMPT): TARGET_PROMPT;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StructureFromTextGenerationModel = void 0;
3
+ exports.ObjectFromTextGenerationModel = void 0;
4
4
  const generateText_js_1 = require("../generate-text/generateText.cjs");
5
- const StructureParseError_js_1 = require("./StructureParseError.cjs");
6
- class StructureFromTextGenerationModel {
5
+ const ObjectParseError_js_1 = require("./ObjectParseError.cjs");
6
+ class ObjectFromTextGenerationModel {
7
7
  constructor({ model, template, }) {
8
8
  Object.defineProperty(this, "model", {
9
9
  enumerable: true,
@@ -38,7 +38,7 @@ class StructureFromTextGenerationModel {
38
38
  }
39
39
  return this.model;
40
40
  }
41
- async doGenerateStructure(schema, prompt, options) {
41
+ async doGenerateObject(schema, prompt, options) {
42
42
  const { rawResponse, text } = await (0, generateText_js_1.generateText)({
43
43
  model: this.getModelWithJsonOutput(schema),
44
44
  prompt: this.template.createPrompt(prompt, schema),
@@ -48,22 +48,22 @@ class StructureFromTextGenerationModel {
48
48
  try {
49
49
  return {
50
50
  rawResponse,
51
- value: this.template.extractStructure(text),
51
+ value: this.template.extractObject(text),
52
52
  valueText: text,
53
53
  };
54
54
  }
55
55
  catch (error) {
56
- throw new StructureParseError_js_1.StructureParseError({
56
+ throw new ObjectParseError_js_1.ObjectParseError({
57
57
  valueText: text,
58
58
  cause: error,
59
59
  });
60
60
  }
61
61
  }
62
62
  withSettings(additionalSettings) {
63
- return new StructureFromTextGenerationModel({
63
+ return new ObjectFromTextGenerationModel({
64
64
  model: this.model.withSettings(additionalSettings),
65
65
  template: this.template,
66
66
  });
67
67
  }
68
68
  }
69
- exports.StructureFromTextGenerationModel = StructureFromTextGenerationModel;
69
+ exports.ObjectFromTextGenerationModel = ObjectFromTextGenerationModel;
@@ -2,20 +2,20 @@ import { FunctionOptions } from "../../core/FunctionOptions.js";
2
2
  import { JsonSchemaProducer } from "../../core/schema/JsonSchemaProducer.js";
3
3
  import { Schema } from "../../core/schema/Schema.js";
4
4
  import { TextGenerationModel, TextGenerationModelSettings } from "../generate-text/TextGenerationModel.js";
5
- import { StructureFromTextPromptTemplate } from "./StructureFromTextPromptTemplate.js";
6
- import { StructureGenerationModel } from "./StructureGenerationModel.js";
7
- export declare class StructureFromTextGenerationModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL extends TextGenerationModel<TARGET_PROMPT, TextGenerationModelSettings>> implements StructureGenerationModel<SOURCE_PROMPT, MODEL["settings"]> {
5
+ import { ObjectFromTextPromptTemplate } from "./ObjectFromTextPromptTemplate.js";
6
+ import { ObjectGenerationModel } from "./ObjectGenerationModel.js";
7
+ export declare class ObjectFromTextGenerationModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL extends TextGenerationModel<TARGET_PROMPT, TextGenerationModelSettings>> implements ObjectGenerationModel<SOURCE_PROMPT, MODEL["settings"]> {
8
8
  protected readonly model: MODEL;
9
- protected readonly template: StructureFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
9
+ protected readonly template: ObjectFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
10
10
  constructor({ model, template, }: {
11
11
  model: MODEL;
12
- template: StructureFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
12
+ template: ObjectFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
13
13
  });
14
14
  get modelInformation(): import("../ModelInformation.js").ModelInformation;
15
15
  get settings(): TextGenerationModelSettings;
16
16
  get settingsForEvent(): Partial<MODEL["settings"]>;
17
17
  getModelWithJsonOutput(schema: Schema<unknown> & JsonSchemaProducer): MODEL;
18
- doGenerateStructure(schema: Schema<unknown> & JsonSchemaProducer, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
18
+ doGenerateObject(schema: Schema<unknown> & JsonSchemaProducer, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
19
19
  rawResponse: unknown;
20
20
  value: unknown;
21
21
  valueText: string;
@@ -1,6 +1,6 @@
1
1
  import { generateText } from "../generate-text/generateText.js";
2
- import { StructureParseError } from "./StructureParseError.js";
3
- export class StructureFromTextGenerationModel {
2
+ import { ObjectParseError } from "./ObjectParseError.js";
3
+ export class ObjectFromTextGenerationModel {
4
4
  constructor({ model, template, }) {
5
5
  Object.defineProperty(this, "model", {
6
6
  enumerable: true,
@@ -35,7 +35,7 @@ export class StructureFromTextGenerationModel {
35
35
  }
36
36
  return this.model;
37
37
  }
38
- async doGenerateStructure(schema, prompt, options) {
38
+ async doGenerateObject(schema, prompt, options) {
39
39
  const { rawResponse, text } = await generateText({
40
40
  model: this.getModelWithJsonOutput(schema),
41
41
  prompt: this.template.createPrompt(prompt, schema),
@@ -45,19 +45,19 @@ export class StructureFromTextGenerationModel {
45
45
  try {
46
46
  return {
47
47
  rawResponse,
48
- value: this.template.extractStructure(text),
48
+ value: this.template.extractObject(text),
49
49
  valueText: text,
50
50
  };
51
51
  }
52
52
  catch (error) {
53
- throw new StructureParseError({
53
+ throw new ObjectParseError({
54
54
  valueText: text,
55
55
  cause: error,
56
56
  });
57
57
  }
58
58
  }
59
59
  withSettings(additionalSettings) {
60
- return new StructureFromTextGenerationModel({
60
+ return new ObjectFromTextGenerationModel({
61
61
  model: this.model.withSettings(additionalSettings),
62
62
  template: this.template,
63
63
  });
@@ -3,9 +3,9 @@ import { Schema } from "../../core/schema/Schema.js";
3
3
  import { TextStreamingModel } from "../generate-text/TextGenerationModel.js";
4
4
  import { ChatPrompt } from "../generate-text/prompt-template/ChatPrompt.js";
5
5
  import { InstructionPrompt } from "../generate-text/prompt-template/InstructionPrompt.js";
6
- export type StructureFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> = {
6
+ export type ObjectFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> = {
7
7
  createPrompt: (prompt: SOURCE_PROMPT, schema: Schema<unknown> & JsonSchemaProducer) => TARGET_PROMPT;
8
- extractStructure: (response: string) => unknown;
8
+ extractObject: (response: string) => unknown;
9
9
  withJsonOutput?({ model, schema, }: {
10
10
  model: {
11
11
  withJsonOutput(schema: Schema<unknown> & JsonSchemaProducer): typeof model;
@@ -13,9 +13,9 @@ export type StructureFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> = {
13
13
  schema: Schema<unknown> & JsonSchemaProducer;
14
14
  }): typeof model;
15
15
  };
16
- export type FlexibleStructureFromTextPromptTemplate<SOURCE_PROMPT, INTERMEDIATE_PROMPT> = {
16
+ export type FlexibleObjectFromTextPromptTemplate<SOURCE_PROMPT, INTERMEDIATE_PROMPT> = {
17
17
  createPrompt: (prompt: SOURCE_PROMPT, schema: Schema<unknown> & JsonSchemaProducer) => INTERMEDIATE_PROMPT;
18
- extractStructure: (response: string) => unknown;
18
+ extractObject: (response: string) => unknown;
19
19
  adaptModel: (model: TextStreamingModel<never> & {
20
20
  withTextPrompt(): TextStreamingModel<string>;
21
21
  withInstructionPrompt(): TextStreamingModel<InstructionPrompt>;
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StructureFromTextStreamingModel = void 0;
4
- const streamText_js_1 = require("../../model-function/generate-text/streamText.cjs");
3
+ exports.ObjectFromTextStreamingModel = void 0;
4
+ const streamText_js_1 = require("../generate-text/streamText.cjs");
5
5
  const AsyncQueue_js_1 = require("../../util/AsyncQueue.cjs");
6
- const StructureFromTextGenerationModel_js_1 = require("./StructureFromTextGenerationModel.cjs");
7
- const parsePartialJson_js_1 = require("./parsePartialJson.cjs");
8
- class StructureFromTextStreamingModel extends StructureFromTextGenerationModel_js_1.StructureFromTextGenerationModel {
6
+ const parsePartialJson_js_1 = require("../../util/parsePartialJson.cjs");
7
+ const ObjectFromTextGenerationModel_js_1 = require("./ObjectFromTextGenerationModel.cjs");
8
+ class ObjectFromTextStreamingModel extends ObjectFromTextGenerationModel_js_1.ObjectFromTextGenerationModel {
9
9
  constructor(options) {
10
10
  super(options);
11
11
  }
12
- async doStreamStructure(schema, prompt, options) {
12
+ async doStreamObject(schema, prompt, options) {
13
13
  const textStream = await (0, streamText_js_1.streamText)({
14
14
  model: this.getModelWithJsonOutput(schema),
15
15
  prompt: this.template.createPrompt(prompt, schema),
@@ -32,17 +32,17 @@ class StructureFromTextStreamingModel extends StructureFromTextGenerationModel_j
32
32
  })();
33
33
  return queue;
34
34
  }
35
- extractStructureTextDelta(delta) {
35
+ extractObjectTextDelta(delta) {
36
36
  return delta;
37
37
  }
38
- parseAccumulatedStructureText(accumulatedText) {
38
+ parseAccumulatedObjectText(accumulatedText) {
39
39
  return (0, parsePartialJson_js_1.parsePartialJson)(accumulatedText);
40
40
  }
41
41
  withSettings(additionalSettings) {
42
- return new StructureFromTextStreamingModel({
42
+ return new ObjectFromTextStreamingModel({
43
43
  model: this.model.withSettings(additionalSettings),
44
44
  template: this.template,
45
45
  });
46
46
  }
47
47
  }
48
- exports.StructureFromTextStreamingModel = StructureFromTextStreamingModel;
48
+ exports.ObjectFromTextStreamingModel = ObjectFromTextStreamingModel;
@@ -0,0 +1,19 @@
1
+ import { FunctionOptions } from "../../core/FunctionOptions.js";
2
+ import { JsonSchemaProducer } from "../../core/schema/JsonSchemaProducer.js";
3
+ import { Schema } from "../../core/schema/Schema.js";
4
+ import { Delta } from "../Delta.js";
5
+ import { AsyncQueue } from "../../util/AsyncQueue.js";
6
+ import { TextGenerationModelSettings, TextStreamingModel } from "../generate-text/TextGenerationModel.js";
7
+ import { ObjectFromTextGenerationModel } from "./ObjectFromTextGenerationModel.js";
8
+ import { ObjectFromTextPromptTemplate } from "./ObjectFromTextPromptTemplate.js";
9
+ import { ObjectStreamingModel } from "./ObjectGenerationModel.js";
10
+ export declare class ObjectFromTextStreamingModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL extends TextStreamingModel<TARGET_PROMPT, TextGenerationModelSettings>> extends ObjectFromTextGenerationModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL> implements ObjectStreamingModel<SOURCE_PROMPT, MODEL["settings"]> {
11
+ constructor(options: {
12
+ model: MODEL;
13
+ template: ObjectFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
14
+ });
15
+ doStreamObject(schema: Schema<unknown> & JsonSchemaProducer, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<AsyncQueue<Delta<string>>>;
16
+ extractObjectTextDelta(delta: unknown): string;
17
+ parseAccumulatedObjectText(accumulatedText: string): unknown;
18
+ withSettings(additionalSettings: Partial<MODEL["settings"]>): this;
19
+ }
@@ -1,12 +1,12 @@
1
- import { streamText } from "../../model-function/generate-text/streamText.js";
1
+ import { streamText } from "../generate-text/streamText.js";
2
2
  import { AsyncQueue } from "../../util/AsyncQueue.js";
3
- import { StructureFromTextGenerationModel } from "./StructureFromTextGenerationModel.js";
4
- import { parsePartialJson } from "./parsePartialJson.js";
5
- export class StructureFromTextStreamingModel extends StructureFromTextGenerationModel {
3
+ import { parsePartialJson } from "../../util/parsePartialJson.js";
4
+ import { ObjectFromTextGenerationModel } from "./ObjectFromTextGenerationModel.js";
5
+ export class ObjectFromTextStreamingModel extends ObjectFromTextGenerationModel {
6
6
  constructor(options) {
7
7
  super(options);
8
8
  }
9
- async doStreamStructure(schema, prompt, options) {
9
+ async doStreamObject(schema, prompt, options) {
10
10
  const textStream = await streamText({
11
11
  model: this.getModelWithJsonOutput(schema),
12
12
  prompt: this.template.createPrompt(prompt, schema),
@@ -29,14 +29,14 @@ export class StructureFromTextStreamingModel extends StructureFromTextGeneration
29
29
  })();
30
30
  return queue;
31
31
  }
32
- extractStructureTextDelta(delta) {
32
+ extractObjectTextDelta(delta) {
33
33
  return delta;
34
34
  }
35
- parseAccumulatedStructureText(accumulatedText) {
35
+ parseAccumulatedObjectText(accumulatedText) {
36
36
  return parsePartialJson(accumulatedText);
37
37
  }
38
38
  withSettings(additionalSettings) {
39
- return new StructureFromTextStreamingModel({
39
+ return new ObjectFromTextStreamingModel({
40
40
  model: this.model.withSettings(additionalSettings),
41
41
  template: this.template,
42
42
  });
@@ -1,8 +1,8 @@
1
1
  import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
2
- export interface StructureGenerationStartedEvent extends BaseModelCallStartedEvent {
3
- functionType: "generate-structure";
2
+ export interface ObjectGenerationStartedEvent extends BaseModelCallStartedEvent {
3
+ functionType: "generate-object";
4
4
  }
5
- export type StructureGenerationFinishedEventResult = {
5
+ export type ObjectGenerationFinishedEventResult = {
6
6
  status: "success";
7
7
  rawResponse: unknown;
8
8
  value: unknown;
@@ -17,7 +17,7 @@ export type StructureGenerationFinishedEventResult = {
17
17
  } | {
18
18
  status: "abort";
19
19
  };
20
- export type StructureGenerationFinishedEvent = BaseModelCallFinishedEvent & {
21
- functionType: "generate-structure";
22
- result: StructureGenerationFinishedEventResult;
20
+ export type ObjectGenerationFinishedEvent = BaseModelCallFinishedEvent & {
21
+ functionType: "generate-object";
22
+ result: ObjectGenerationFinishedEventResult;
23
23
  };
@@ -0,0 +1,24 @@
1
+ import { JsonSchemaProducer } from "../../core/schema/JsonSchemaProducer.js";
2
+ import { FunctionOptions } from "../../core/FunctionOptions.js";
3
+ import { Schema } from "../../core/schema/Schema.js";
4
+ import { Delta } from "../Delta.js";
5
+ import { Model, ModelSettings } from "../Model.js";
6
+ export interface ObjectGenerationModelSettings extends ModelSettings {
7
+ }
8
+ export interface ObjectGenerationModel<PROMPT, SETTINGS extends ObjectGenerationModelSettings = ObjectGenerationModelSettings> extends Model<SETTINGS> {
9
+ doGenerateObject(schema: Schema<unknown> & JsonSchemaProducer, prompt: PROMPT, options?: FunctionOptions): PromiseLike<{
10
+ rawResponse: unknown;
11
+ valueText: string;
12
+ value: unknown;
13
+ usage?: {
14
+ promptTokens: number;
15
+ completionTokens: number;
16
+ totalTokens: number;
17
+ };
18
+ }>;
19
+ }
20
+ export interface ObjectStreamingModel<PROMPT, SETTINGS extends ObjectGenerationModelSettings = ObjectGenerationModelSettings> extends ObjectGenerationModel<PROMPT, SETTINGS> {
21
+ doStreamObject(schema: Schema<unknown> & JsonSchemaProducer, prompt: PROMPT, options?: FunctionOptions): PromiseLike<AsyncIterable<Delta<unknown>>>;
22
+ extractObjectTextDelta(delta: unknown): string | undefined;
23
+ parseAccumulatedObjectText(accumulatedText: string): unknown;
24
+ }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StructureParseError = void 0;
3
+ exports.ObjectParseError = void 0;
4
4
  const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
5
- class StructureParseError extends Error {
5
+ class ObjectParseError extends Error {
6
6
  constructor({ valueText, cause }) {
7
- super(`Structure parsing failed. ` +
7
+ super(`Object parsing failed. ` +
8
8
  `Value: ${valueText}.\n` +
9
9
  `Error message: ${(0, getErrorMessage_js_1.getErrorMessage)(cause)}`);
10
10
  Object.defineProperty(this, "cause", {
@@ -19,7 +19,7 @@ class StructureParseError extends Error {
19
19
  writable: true,
20
20
  value: void 0
21
21
  });
22
- this.name = "StructureParseError";
22
+ this.name = "ObjectParseError";
23
23
  this.cause = cause;
24
24
  this.valueText = valueText;
25
25
  }
@@ -33,4 +33,4 @@ class StructureParseError extends Error {
33
33
  };
34
34
  }
35
35
  }
36
- exports.StructureParseError = StructureParseError;
36
+ exports.ObjectParseError = ObjectParseError;
@@ -1,4 +1,4 @@
1
- export declare class StructureParseError extends Error {
1
+ export declare class ObjectParseError extends Error {
2
2
  readonly cause: unknown;
3
3
  readonly valueText: string;
4
4
  constructor({ valueText, cause }: {
@@ -1,7 +1,7 @@
1
1
  import { getErrorMessage } from "../../util/getErrorMessage.js";
2
- export class StructureParseError extends Error {
2
+ export class ObjectParseError extends Error {
3
3
  constructor({ valueText, cause }) {
4
- super(`Structure parsing failed. ` +
4
+ super(`Object parsing failed. ` +
5
5
  `Value: ${valueText}.\n` +
6
6
  `Error message: ${getErrorMessage(cause)}`);
7
7
  Object.defineProperty(this, "cause", {
@@ -16,7 +16,7 @@ export class StructureParseError extends Error {
16
16
  writable: true,
17
17
  value: void 0
18
18
  });
19
- this.name = "StructureParseError";
19
+ this.name = "ObjectParseError";
20
20
  this.cause = cause;
21
21
  this.valueText = valueText;
22
22
  }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectStreamFromResponse = exports.ObjectStreamResponse = void 0;
4
+ const parsePartialJson_js_1 = require("../../util/parsePartialJson.cjs");
5
+ class ObjectStreamResponse extends Response {
6
+ constructor(stream, init) {
7
+ super(ObjectStreamToTextStream(stream), {
8
+ ...init,
9
+ status: 200,
10
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
11
+ });
12
+ }
13
+ }
14
+ exports.ObjectStreamResponse = ObjectStreamResponse;
15
+ async function* ObjectStreamFromResponse({ response, }) {
16
+ let text = "";
17
+ const reader = response.body.getReader();
18
+ // eslint-disable-next-line no-constant-condition
19
+ while (true) {
20
+ const { done, value } = await reader.read();
21
+ if (done)
22
+ break;
23
+ text += new TextDecoder().decode(value);
24
+ const partialObject = (0, parsePartialJson_js_1.parsePartialJson)(text);
25
+ yield { partialObject };
26
+ }
27
+ }
28
+ exports.ObjectStreamFromResponse = ObjectStreamFromResponse;
29
+ function ObjectStreamToTextStream(stream) {
30
+ const textEncoder = new TextEncoder();
31
+ return new ReadableStream({
32
+ async start(controller) {
33
+ try {
34
+ for await (const { textDelta } of stream) {
35
+ controller.enqueue(textEncoder.encode(textDelta));
36
+ }
37
+ }
38
+ finally {
39
+ controller.close();
40
+ }
41
+ },
42
+ });
43
+ }
@@ -0,0 +1,18 @@
1
+ import type { PartialDeep } from "type-fest";
2
+ import { Schema } from "../../core/schema/Schema.js";
3
+ export type ObjectStream<OBJECT> = AsyncIterable<{
4
+ partialObject: PartialDeep<OBJECT, {
5
+ recurseIntoArrays: true;
6
+ }>;
7
+ partialText: string;
8
+ textDelta: string;
9
+ }>;
10
+ export declare class ObjectStreamResponse extends Response {
11
+ constructor(stream: ObjectStream<unknown>, init?: ResponseInit);
12
+ }
13
+ export declare function ObjectStreamFromResponse<OBJECT>({ response, }: {
14
+ schema: Schema<OBJECT>;
15
+ response: Response;
16
+ }): AsyncGenerator<{
17
+ partialObject: OBJECT;
18
+ }, void, unknown>;
@@ -0,0 +1,38 @@
1
+ import { parsePartialJson } from "../../util/parsePartialJson.js";
2
+ export class ObjectStreamResponse extends Response {
3
+ constructor(stream, init) {
4
+ super(ObjectStreamToTextStream(stream), {
5
+ ...init,
6
+ status: 200,
7
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
8
+ });
9
+ }
10
+ }
11
+ export async function* ObjectStreamFromResponse({ response, }) {
12
+ let text = "";
13
+ const reader = response.body.getReader();
14
+ // eslint-disable-next-line no-constant-condition
15
+ while (true) {
16
+ const { done, value } = await reader.read();
17
+ if (done)
18
+ break;
19
+ text += new TextDecoder().decode(value);
20
+ const partialObject = parsePartialJson(text);
21
+ yield { partialObject };
22
+ }
23
+ }
24
+ function ObjectStreamToTextStream(stream) {
25
+ const textEncoder = new TextEncoder();
26
+ return new ReadableStream({
27
+ async start(controller) {
28
+ try {
29
+ for await (const { textDelta } of stream) {
30
+ controller.enqueue(textEncoder.encode(textDelta));
31
+ }
32
+ }
33
+ finally {
34
+ controller.close();
35
+ }
36
+ },
37
+ });
38
+ }
@@ -0,0 +1,7 @@
1
+ import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
2
+ export interface ObjectStreamingStartedEvent extends BaseModelCallStartedEvent {
3
+ functionType: "stream-object";
4
+ }
5
+ export interface ObjectStreamingFinishedEvent extends BaseModelCallFinishedEvent {
6
+ functionType: "stream-object";
7
+ }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StructureValidationError = void 0;
3
+ exports.ObjectValidationError = void 0;
4
4
  const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
5
- class StructureValidationError extends Error {
5
+ class ObjectValidationError extends Error {
6
6
  constructor({ value, valueText, cause, }) {
7
- super(`Structure validation failed. ` +
7
+ super(`Object validation failed. ` +
8
8
  `Value: ${valueText}.\n` +
9
9
  `Error message: ${(0, getErrorMessage_js_1.getErrorMessage)(cause)}`);
10
10
  Object.defineProperty(this, "cause", {
@@ -25,7 +25,7 @@ class StructureValidationError extends Error {
25
25
  writable: true,
26
26
  value: void 0
27
27
  });
28
- this.name = "StructureValidationError";
28
+ this.name = "ObjectValidationError";
29
29
  this.cause = cause;
30
30
  this.value = value;
31
31
  this.valueText = valueText;
@@ -41,4 +41,4 @@ class StructureValidationError extends Error {
41
41
  };
42
42
  }
43
43
  }
44
- exports.StructureValidationError = StructureValidationError;
44
+ exports.ObjectValidationError = ObjectValidationError;
@@ -1,4 +1,4 @@
1
- export declare class StructureValidationError extends Error {
1
+ export declare class ObjectValidationError extends Error {
2
2
  readonly cause: unknown;
3
3
  readonly valueText: string;
4
4
  readonly value: unknown;
@@ -1,7 +1,7 @@
1
1
  import { getErrorMessage } from "../../util/getErrorMessage.js";
2
- export class StructureValidationError extends Error {
2
+ export class ObjectValidationError extends Error {
3
3
  constructor({ value, valueText, cause, }) {
4
- super(`Structure validation failed. ` +
4
+ super(`Object validation failed. ` +
5
5
  `Value: ${valueText}.\n` +
6
6
  `Error message: ${getErrorMessage(cause)}`);
7
7
  Object.defineProperty(this, "cause", {
@@ -22,7 +22,7 @@ export class StructureValidationError extends Error {
22
22
  writable: true,
23
23
  value: void 0
24
24
  });
25
- this.name = "StructureValidationError";
25
+ this.name = "ObjectValidationError";
26
26
  this.cause = cause;
27
27
  this.value = value;
28
28
  this.valueText = valueText;