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.
- package/CHANGELOG.md +58 -0
- package/README.md +19 -19
- package/core/api/postToApi.cjs +1 -1
- package/core/api/postToApi.js +1 -1
- package/core/schema/JsonSchemaProducer.d.ts +1 -1
- package/core/schema/Schema.d.ts +7 -7
- package/core/schema/TypeValidationError.cjs +5 -5
- package/core/schema/TypeValidationError.d.ts +4 -4
- package/core/schema/TypeValidationError.js +5 -5
- package/core/schema/UncheckedSchema.cjs +2 -2
- package/core/schema/UncheckedSchema.d.ts +5 -5
- package/core/schema/UncheckedSchema.js +2 -2
- package/core/schema/ZodSchema.cjs +5 -2
- package/core/schema/ZodSchema.d.ts +8 -8
- package/core/schema/ZodSchema.js +5 -2
- package/core/schema/parseJSON.cjs +6 -6
- package/core/schema/parseJSON.d.ts +3 -3
- package/core/schema/parseJSON.js +6 -6
- package/core/schema/validateTypes.cjs +13 -13
- package/core/schema/validateTypes.d.ts +9 -9
- package/core/schema/validateTypes.js +13 -13
- package/model-function/ModelCallEvent.d.ts +4 -4
- package/model-function/PromptTemplate.d.ts +2 -2
- package/model-function/{generate-structure/StructureFromTextGenerationModel.cjs → generate-object/ObjectFromTextGenerationModel.cjs} +8 -8
- package/model-function/{generate-structure/StructureFromTextGenerationModel.d.ts → generate-object/ObjectFromTextGenerationModel.d.ts} +6 -6
- package/model-function/{generate-structure/StructureFromTextGenerationModel.js → generate-object/ObjectFromTextGenerationModel.js} +6 -6
- package/model-function/{generate-structure/StructureFromTextPromptTemplate.d.ts → generate-object/ObjectFromTextPromptTemplate.d.ts} +4 -4
- package/model-function/{generate-structure/StructureFromTextStreamingModel.cjs → generate-object/ObjectFromTextStreamingModel.cjs} +10 -10
- package/model-function/generate-object/ObjectFromTextStreamingModel.d.ts +19 -0
- package/model-function/{generate-structure/StructureFromTextStreamingModel.js → generate-object/ObjectFromTextStreamingModel.js} +8 -8
- package/model-function/{generate-structure/StructureGenerationEvent.d.ts → generate-object/ObjectGenerationEvent.d.ts} +6 -6
- package/model-function/generate-object/ObjectGenerationModel.d.ts +24 -0
- package/model-function/{generate-structure/StructureParseError.cjs → generate-object/ObjectParseError.cjs} +5 -5
- package/model-function/{generate-structure/StructureParseError.d.ts → generate-object/ObjectParseError.d.ts} +1 -1
- package/model-function/{generate-structure/StructureParseError.js → generate-object/ObjectParseError.js} +3 -3
- package/model-function/generate-object/ObjectStream.cjs +43 -0
- package/model-function/generate-object/ObjectStream.d.ts +18 -0
- package/model-function/generate-object/ObjectStream.js +38 -0
- package/model-function/generate-object/ObjectStreamingEvent.d.ts +7 -0
- package/model-function/{generate-structure/StructureValidationError.cjs → generate-object/ObjectValidationError.cjs} +5 -5
- package/model-function/{generate-structure/StructureValidationError.d.ts → generate-object/ObjectValidationError.d.ts} +1 -1
- package/model-function/{generate-structure/StructureValidationError.js → generate-object/ObjectValidationError.js} +3 -3
- package/model-function/{generate-structure/generateStructure.cjs → generate-object/generateObject.cjs} +11 -12
- package/model-function/generate-object/generateObject.d.ts +56 -0
- package/model-function/{generate-structure/generateStructure.js → generate-object/generateObject.js} +9 -10
- package/model-function/{generate-structure → generate-object}/index.cjs +12 -11
- package/model-function/generate-object/index.d.ts +12 -0
- package/model-function/generate-object/index.js +12 -0
- package/model-function/{generate-structure/jsonStructurePrompt.cjs → generate-object/jsonObjectPrompt.cjs} +6 -6
- package/model-function/{generate-structure/jsonStructurePrompt.d.ts → generate-object/jsonObjectPrompt.d.ts} +6 -6
- package/model-function/{generate-structure/jsonStructurePrompt.js → generate-object/jsonObjectPrompt.js} +5 -5
- package/model-function/generate-object/streamObject.cjs +80 -0
- package/model-function/generate-object/streamObject.d.ts +57 -0
- package/model-function/generate-object/streamObject.js +76 -0
- package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +3 -3
- package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +3 -3
- package/model-function/generate-text/PromptTemplateTextGenerationModel.js +3 -3
- package/model-function/generate-text/PromptTemplateTextStreamingModel.cjs +3 -3
- package/model-function/generate-text/PromptTemplateTextStreamingModel.d.ts +3 -3
- package/model-function/generate-text/PromptTemplateTextStreamingModel.js +3 -3
- package/model-function/generate-text/TextGenerationPromptTemplate.d.ts +1 -1
- package/model-function/index.cjs +1 -1
- package/model-function/index.d.ts +1 -1
- package/model-function/index.js +1 -1
- package/model-provider/cohere/CohereTextGenerationModel.cjs +1 -1
- package/model-provider/cohere/CohereTextGenerationModel.js +1 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.cjs +1 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.js +1 -1
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +1 -1
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +1 -1
- package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.cjs +1 -1
- package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.d.ts +1 -1
- package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.js +1 -1
- package/model-provider/llamacpp/LlamaCppCompletionModel.cjs +5 -5
- package/model-provider/llamacpp/LlamaCppCompletionModel.d.ts +3 -3
- package/model-provider/llamacpp/LlamaCppCompletionModel.js +5 -5
- package/model-provider/mistral/MistralChatModel.cjs +1 -1
- package/model-provider/mistral/MistralChatModel.js +1 -1
- package/model-provider/ollama/OllamaChatModel.cjs +7 -7
- package/model-provider/ollama/OllamaChatModel.d.ts +3 -3
- package/model-provider/ollama/OllamaChatModel.js +7 -7
- package/model-provider/ollama/OllamaCompletionModel.cjs +7 -7
- package/model-provider/ollama/OllamaCompletionModel.d.ts +3 -3
- package/model-provider/ollama/OllamaCompletionModel.js +7 -7
- package/model-provider/ollama/OllamaCompletionModel.test.cjs +8 -6
- package/model-provider/ollama/OllamaCompletionModel.test.js +8 -6
- package/model-provider/openai/AbstractOpenAIChatModel.cjs +1 -1
- package/model-provider/openai/AbstractOpenAIChatModel.js +1 -1
- package/model-provider/openai/AbstractOpenAICompletionModel.cjs +1 -1
- package/model-provider/openai/AbstractOpenAICompletionModel.js +1 -1
- package/model-provider/openai/{OpenAIChatFunctionCallStructureGenerationModel.cjs → OpenAIChatFunctionCallObjectGenerationModel.cjs} +12 -12
- package/model-provider/openai/{OpenAIChatFunctionCallStructureGenerationModel.d.ts → OpenAIChatFunctionCallObjectGenerationModel.d.ts} +10 -10
- package/model-provider/openai/{OpenAIChatFunctionCallStructureGenerationModel.js → OpenAIChatFunctionCallObjectGenerationModel.js} +10 -10
- package/model-provider/openai/OpenAIChatModel.cjs +7 -7
- package/model-provider/openai/OpenAIChatModel.d.ts +6 -6
- package/model-provider/openai/OpenAIChatModel.js +7 -7
- package/model-provider/openai/OpenAIChatModel.test.cjs +7 -5
- package/model-provider/openai/OpenAIChatModel.test.js +7 -5
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.cjs +4 -4
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.d.ts +3 -3
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.js +4 -4
- package/model-provider/whispercpp/WhisperCppTranscriptionModel.cjs +3 -3
- package/model-provider/whispercpp/WhisperCppTranscriptionModel.js +3 -3
- package/package.json +1 -1
- package/tool/WebSearchTool.cjs +1 -1
- package/tool/WebSearchTool.js +1 -1
- package/tool/generate-tool-call/generateToolCall.cjs +1 -1
- package/tool/generate-tool-call/generateToolCall.js +1 -1
- package/tool/generate-tool-calls/generateToolCalls.cjs +1 -1
- package/tool/generate-tool-calls/generateToolCalls.js +1 -1
- package/{model-function/generate-structure → util}/fixJson.test.cjs +1 -1
- package/{model-function/generate-structure → util}/fixJson.test.js +1 -1
- package/util/isDeepEqualData.cjs +1 -1
- package/util/isDeepEqualData.d.ts +1 -1
- package/util/isDeepEqualData.js +1 -1
- package/util/streaming/parseEventSourceStreamAsAsyncIterable.cjs +1 -1
- package/util/streaming/parseEventSourceStreamAsAsyncIterable.js +1 -1
- package/vector-index/memory/MemoryVectorIndex.cjs +1 -1
- package/vector-index/memory/MemoryVectorIndex.js +1 -1
- package/model-function/generate-structure/StructureFromTextStreamingModel.d.ts +0 -19
- package/model-function/generate-structure/StructureGenerationModel.d.ts +0 -24
- package/model-function/generate-structure/StructureStreamingEvent.d.ts +0 -7
- package/model-function/generate-structure/generateStructure.d.ts +0 -56
- package/model-function/generate-structure/index.d.ts +0 -11
- package/model-function/generate-structure/index.js +0 -11
- package/model-function/generate-structure/streamStructure.cjs +0 -61
- package/model-function/generate-structure/streamStructure.d.ts +0 -67
- package/model-function/generate-structure/streamStructure.js +0 -57
- /package/model-function/{generate-structure/StructureFromTextPromptTemplate.cjs → generate-object/ObjectFromTextPromptTemplate.cjs} +0 -0
- /package/model-function/{generate-structure/StructureFromTextPromptTemplate.js → generate-object/ObjectFromTextPromptTemplate.js} +0 -0
- /package/model-function/{generate-structure/StructureGenerationEvent.cjs → generate-object/ObjectGenerationEvent.cjs} +0 -0
- /package/model-function/{generate-structure/StructureGenerationEvent.js → generate-object/ObjectGenerationEvent.js} +0 -0
- /package/model-function/{generate-structure/StructureGenerationModel.cjs → generate-object/ObjectGenerationModel.cjs} +0 -0
- /package/model-function/{generate-structure/StructureGenerationModel.js → generate-object/ObjectGenerationModel.js} +0 -0
- /package/model-function/{generate-structure/StructureStreamingEvent.cjs → generate-object/ObjectStreamingEvent.cjs} +0 -0
- /package/model-function/{generate-structure/StructureStreamingEvent.js → generate-object/ObjectStreamingEvent.js} +0 -0
- /package/{model-function/generate-structure → util}/fixJson.cjs +0 -0
- /package/{model-function/generate-structure → util}/fixJson.d.ts +0 -0
- /package/{model-function/generate-structure → util}/fixJson.js +0 -0
- /package/{model-function/generate-structure → util}/fixJson.test.d.ts +0 -0
- /package/{model-function/generate-structure → util}/parsePartialJson.cjs +0 -0
- /package/{model-function/generate-structure → util}/parsePartialJson.d.ts +0 -0
- /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}
|
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({
|
11
|
+
export function validateTypes({ value, schema, }) {
|
12
12
|
try {
|
13
|
-
const validationResult = schema.validate(
|
13
|
+
const validationResult = schema.validate(value);
|
14
14
|
if (!validationResult.success) {
|
15
15
|
throw new TypeValidationError({
|
16
|
-
|
16
|
+
value,
|
17
17
|
cause: validationResult.error,
|
18
18
|
});
|
19
19
|
}
|
20
|
-
return validationResult.
|
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({
|
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}
|
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({
|
38
|
+
export function safeValidateTypes({ value, schema, }) {
|
39
39
|
try {
|
40
|
-
const validationResult = schema.validate(
|
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
|
-
|
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({
|
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 {
|
10
|
-
import {
|
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 |
|
57
|
-
export type ModelCallFinishedEvent = ClassifyFinishedEvent | EmbeddingFinishedEvent | ImageGenerationFinishedEvent | SpeechGenerationFinishedEvent | SpeechStreamingFinishedEvent |
|
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
|
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
|
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.
|
3
|
+
exports.ObjectFromTextGenerationModel = void 0;
|
4
4
|
const generateText_js_1 = require("../generate-text/generateText.cjs");
|
5
|
-
const
|
6
|
-
class
|
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
|
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.
|
51
|
+
value: this.template.extractObject(text),
|
52
52
|
valueText: text,
|
53
53
|
};
|
54
54
|
}
|
55
55
|
catch (error) {
|
56
|
-
throw new
|
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
|
63
|
+
return new ObjectFromTextGenerationModel({
|
64
64
|
model: this.model.withSettings(additionalSettings),
|
65
65
|
template: this.template,
|
66
66
|
});
|
67
67
|
}
|
68
68
|
}
|
69
|
-
exports.
|
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 {
|
6
|
-
import {
|
7
|
-
export declare class
|
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:
|
9
|
+
protected readonly template: ObjectFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
|
10
10
|
constructor({ model, template, }: {
|
11
11
|
model: MODEL;
|
12
|
-
template:
|
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
|
-
|
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 {
|
3
|
-
export class
|
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
|
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.
|
48
|
+
value: this.template.extractObject(text),
|
49
49
|
valueText: text,
|
50
50
|
};
|
51
51
|
}
|
52
52
|
catch (error) {
|
53
|
-
throw new
|
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
|
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
|
6
|
+
export type ObjectFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> = {
|
7
7
|
createPrompt: (prompt: SOURCE_PROMPT, schema: Schema<unknown> & JsonSchemaProducer) => TARGET_PROMPT;
|
8
|
-
|
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
|
16
|
+
export type FlexibleObjectFromTextPromptTemplate<SOURCE_PROMPT, INTERMEDIATE_PROMPT> = {
|
17
17
|
createPrompt: (prompt: SOURCE_PROMPT, schema: Schema<unknown> & JsonSchemaProducer) => INTERMEDIATE_PROMPT;
|
18
|
-
|
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.
|
4
|
-
const streamText_js_1 = require("
|
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
|
7
|
-
const
|
8
|
-
class
|
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
|
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
|
-
|
35
|
+
extractObjectTextDelta(delta) {
|
36
36
|
return delta;
|
37
37
|
}
|
38
|
-
|
38
|
+
parseAccumulatedObjectText(accumulatedText) {
|
39
39
|
return (0, parsePartialJson_js_1.parsePartialJson)(accumulatedText);
|
40
40
|
}
|
41
41
|
withSettings(additionalSettings) {
|
42
|
-
return new
|
42
|
+
return new ObjectFromTextStreamingModel({
|
43
43
|
model: this.model.withSettings(additionalSettings),
|
44
44
|
template: this.template,
|
45
45
|
});
|
46
46
|
}
|
47
47
|
}
|
48
|
-
exports.
|
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 "
|
1
|
+
import { streamText } from "../generate-text/streamText.js";
|
2
2
|
import { AsyncQueue } from "../../util/AsyncQueue.js";
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
export class
|
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
|
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
|
-
|
32
|
+
extractObjectTextDelta(delta) {
|
33
33
|
return delta;
|
34
34
|
}
|
35
|
-
|
35
|
+
parseAccumulatedObjectText(accumulatedText) {
|
36
36
|
return parsePartialJson(accumulatedText);
|
37
37
|
}
|
38
38
|
withSettings(additionalSettings) {
|
39
|
-
return new
|
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
|
3
|
-
functionType: "generate-
|
2
|
+
export interface ObjectGenerationStartedEvent extends BaseModelCallStartedEvent {
|
3
|
+
functionType: "generate-object";
|
4
4
|
}
|
5
|
-
export type
|
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
|
21
|
-
functionType: "generate-
|
22
|
-
result:
|
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.
|
3
|
+
exports.ObjectParseError = void 0;
|
4
4
|
const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
|
5
|
-
class
|
5
|
+
class ObjectParseError extends Error {
|
6
6
|
constructor({ valueText, cause }) {
|
7
|
-
super(`
|
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 = "
|
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.
|
36
|
+
exports.ObjectParseError = ObjectParseError;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { getErrorMessage } from "../../util/getErrorMessage.js";
|
2
|
-
export class
|
2
|
+
export class ObjectParseError extends Error {
|
3
3
|
constructor({ valueText, cause }) {
|
4
|
-
super(`
|
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 = "
|
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.
|
3
|
+
exports.ObjectValidationError = void 0;
|
4
4
|
const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
|
5
|
-
class
|
5
|
+
class ObjectValidationError extends Error {
|
6
6
|
constructor({ value, valueText, cause, }) {
|
7
|
-
super(`
|
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 = "
|
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.
|
44
|
+
exports.ObjectValidationError = ObjectValidationError;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { getErrorMessage } from "../../util/getErrorMessage.js";
|
2
|
-
export class
|
2
|
+
export class ObjectValidationError extends Error {
|
3
3
|
constructor({ value, valueText, cause, }) {
|
4
|
-
super(`
|
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 = "
|
25
|
+
this.name = "ObjectValidationError";
|
26
26
|
this.cause = cause;
|
27
27
|
this.value = value;
|
28
28
|
this.valueText = valueText;
|