modelfusion 0.49.0 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -154
- package/core/FunctionEvent.d.ts +9 -1
- package/core/FunctionOptions.d.ts +4 -0
- package/core/executeFunctionCall.cjs +85 -0
- package/core/executeFunctionCall.d.ts +10 -0
- package/core/executeFunctionCall.js +81 -0
- package/guard/GuardEvent.cjs +2 -0
- package/guard/GuardEvent.d.ts +7 -0
- package/guard/GuardEvent.js +1 -0
- package/guard/guard.cjs +60 -54
- package/guard/guard.d.ts +2 -1
- package/guard/guard.js +60 -54
- package/guard/index.cjs +1 -0
- package/guard/index.d.ts +1 -0
- package/guard/index.js +1 -0
- package/model-function/embed/EmbeddingEvent.d.ts +2 -2
- package/model-function/embed/embed.cjs +2 -2
- package/model-function/embed/embed.js +2 -2
- package/model-function/executeStandardCall.cjs +2 -0
- package/model-function/executeStandardCall.js +2 -0
- package/model-function/executeStreamCall.cjs +2 -0
- package/model-function/executeStreamCall.js +2 -0
- package/model-function/generate-image/ImageGenerationEvent.d.ts +2 -2
- package/model-function/generate-image/generateImage.cjs +1 -1
- package/model-function/generate-image/generateImage.js +1 -1
- package/model-function/generate-speech/SpeechGenerationEvent.d.ts +4 -4
- package/model-function/generate-speech/generateSpeech.cjs +1 -1
- package/model-function/generate-speech/generateSpeech.js +1 -1
- package/model-function/generate-speech/streamSpeech.cjs +1 -1
- package/model-function/generate-speech/streamSpeech.js +1 -1
- package/model-function/generate-structure/StructureGenerationEvent.d.ts +2 -2
- package/model-function/generate-structure/StructureStreamingEvent.d.ts +2 -2
- package/model-function/generate-structure/generateStructure.cjs +1 -1
- package/model-function/generate-structure/generateStructure.js +1 -1
- package/model-function/generate-structure/generateStructureOrText.cjs +1 -1
- package/model-function/generate-structure/generateStructureOrText.js +1 -1
- package/model-function/generate-structure/streamStructure.cjs +1 -1
- package/model-function/generate-structure/streamStructure.js +1 -1
- package/model-function/generate-text/TextGenerationEvent.d.ts +4 -4
- package/model-function/generate-text/generateText.cjs +1 -1
- package/model-function/generate-text/generateText.js +1 -1
- package/model-function/generate-text/streamText.cjs +1 -1
- package/model-function/generate-text/streamText.js +1 -1
- package/model-function/generate-transcription/TranscriptionEvent.d.ts +2 -2
- package/model-function/generate-transcription/generateTranscription.cjs +1 -1
- package/model-function/generate-transcription/generateTranscription.js +1 -1
- package/model-provider/openai/OpenAICompletionModel.d.ts +4 -4
- package/model-provider/openai/OpenAICostCalculator.cjs +5 -5
- package/model-provider/openai/OpenAICostCalculator.js +5 -5
- package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
- package/model-provider/openai/chat/OpenAIChatModel.d.ts +7 -7
- package/package.json +1 -1
- package/retriever/retrieve.cjs +7 -75
- package/retriever/retrieve.js +7 -75
- package/tool/UseToolEvent.cjs +2 -0
- package/tool/UseToolEvent.d.ts +7 -0
- package/tool/UseToolEvent.js +1 -0
- package/tool/UseToolOrGenerateTextEvent.cjs +2 -0
- package/tool/UseToolOrGenerateTextEvent.d.ts +7 -0
- package/tool/UseToolOrGenerateTextEvent.js +1 -0
- package/tool/executeTool.cjs +2 -0
- package/tool/executeTool.js +2 -0
- package/tool/index.cjs +2 -0
- package/tool/index.d.ts +2 -0
- package/tool/index.js +2 -0
- package/tool/useTool.cjs +18 -10
- package/tool/useTool.js +18 -10
- package/tool/useToolOrGenerateText.cjs +34 -26
- package/tool/useToolOrGenerateText.js +34 -26
- package/vector-index/UpsertIntoVectorIndexEvent.cjs +2 -0
- package/vector-index/UpsertIntoVectorIndexEvent.d.ts +9 -0
- package/vector-index/UpsertIntoVectorIndexEvent.js +1 -0
- package/vector-index/VectorIndexRetriever.cjs +1 -4
- package/vector-index/VectorIndexRetriever.js +1 -4
- package/vector-index/index.cjs +1 -0
- package/vector-index/index.d.ts +1 -0
- package/vector-index/index.js +1 -0
- package/vector-index/upsertIntoVectorIndex.cjs +16 -7
- package/vector-index/upsertIntoVectorIndex.js +16 -7
package/tool/useTool.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { executeFunctionCall } from "../core/executeFunctionCall.js";
|
1
2
|
import { generateStructure } from "../model-function/generate-structure/generateStructure.js";
|
2
3
|
import { executeTool } from "./executeTool.js";
|
3
4
|
/**
|
@@ -12,14 +13,21 @@ export async function useTool(model, tool, prompt, options) {
|
|
12
13
|
const expandedPrompt = typeof prompt === "function"
|
13
14
|
? prompt(tool)
|
14
15
|
: prompt;
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
return executeFunctionCall({
|
17
|
+
options,
|
18
|
+
input: expandedPrompt,
|
19
|
+
functionType: "use-tool",
|
20
|
+
execute: async (options) => {
|
21
|
+
const { value } = await generateStructure(model, {
|
22
|
+
name: tool.name,
|
23
|
+
description: tool.description,
|
24
|
+
schema: tool.inputSchema,
|
25
|
+
}, expandedPrompt, options).asFullResponse();
|
26
|
+
return {
|
27
|
+
tool: tool.name,
|
28
|
+
parameters: value,
|
29
|
+
result: await executeTool(tool, value, options),
|
30
|
+
};
|
31
|
+
},
|
32
|
+
});
|
25
33
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.useToolOrGenerateText = void 0;
|
4
|
+
const executeFunctionCall_js_1 = require("../core/executeFunctionCall.cjs");
|
4
5
|
const generateStructureOrText_js_1 = require("../model-function/generate-structure/generateStructureOrText.cjs");
|
5
6
|
const NoSuchToolError_js_1 = require("./NoSuchToolError.cjs");
|
6
7
|
const executeTool_js_1 = require("./executeTool.cjs");
|
@@ -9,31 +10,38 @@ async function useToolOrGenerateText(model, tools, prompt, options) {
|
|
9
10
|
const expandedPrompt = typeof prompt === "function"
|
10
11
|
? prompt(tools)
|
11
12
|
: prompt;
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
13
|
+
return (0, executeFunctionCall_js_1.executeFunctionCall)({
|
14
|
+
options,
|
15
|
+
input: expandedPrompt,
|
16
|
+
functionType: "use-tool-or-generate-text",
|
17
|
+
execute: async (options) => {
|
18
|
+
const modelResponse = await (0, generateStructureOrText_js_1.generateStructureOrText)(model, tools.map((tool) => ({
|
19
|
+
name: tool.name,
|
20
|
+
description: tool.description,
|
21
|
+
schema: tool.inputSchema,
|
22
|
+
})), expandedPrompt, options);
|
23
|
+
const { structure, text } = modelResponse;
|
24
|
+
if (structure == null) {
|
25
|
+
return {
|
26
|
+
tool: null,
|
27
|
+
parameters: null,
|
28
|
+
result: null,
|
29
|
+
text,
|
30
|
+
};
|
31
|
+
}
|
32
|
+
const tool = tools.find((tool) => tool.name === structure);
|
33
|
+
if (tool == null) {
|
34
|
+
throw new NoSuchToolError_js_1.NoSuchToolError(structure.toString());
|
35
|
+
}
|
36
|
+
const toolParameters = modelResponse.value;
|
37
|
+
const result = await (0, executeTool_js_1.executeTool)(tool, toolParameters, options);
|
38
|
+
return {
|
39
|
+
tool: structure,
|
40
|
+
result,
|
41
|
+
parameters: toolParameters,
|
42
|
+
text: text, // string | null is the expected value here
|
43
|
+
};
|
44
|
+
},
|
45
|
+
});
|
38
46
|
}
|
39
47
|
exports.useToolOrGenerateText = useToolOrGenerateText;
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { executeFunctionCall } from "../core/executeFunctionCall.js";
|
1
2
|
import { generateStructureOrText } from "../model-function/generate-structure/generateStructureOrText.js";
|
2
3
|
import { NoSuchToolError } from "./NoSuchToolError.js";
|
3
4
|
import { executeTool } from "./executeTool.js";
|
@@ -6,30 +7,37 @@ export async function useToolOrGenerateText(model, tools, prompt, options) {
|
|
6
7
|
const expandedPrompt = typeof prompt === "function"
|
7
8
|
? prompt(tools)
|
8
9
|
: prompt;
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
10
|
+
return executeFunctionCall({
|
11
|
+
options,
|
12
|
+
input: expandedPrompt,
|
13
|
+
functionType: "use-tool-or-generate-text",
|
14
|
+
execute: async (options) => {
|
15
|
+
const modelResponse = await generateStructureOrText(model, tools.map((tool) => ({
|
16
|
+
name: tool.name,
|
17
|
+
description: tool.description,
|
18
|
+
schema: tool.inputSchema,
|
19
|
+
})), expandedPrompt, options);
|
20
|
+
const { structure, text } = modelResponse;
|
21
|
+
if (structure == null) {
|
22
|
+
return {
|
23
|
+
tool: null,
|
24
|
+
parameters: null,
|
25
|
+
result: null,
|
26
|
+
text,
|
27
|
+
};
|
28
|
+
}
|
29
|
+
const tool = tools.find((tool) => tool.name === structure);
|
30
|
+
if (tool == null) {
|
31
|
+
throw new NoSuchToolError(structure.toString());
|
32
|
+
}
|
33
|
+
const toolParameters = modelResponse.value;
|
34
|
+
const result = await executeTool(tool, toolParameters, options);
|
35
|
+
return {
|
36
|
+
tool: structure,
|
37
|
+
result,
|
38
|
+
parameters: toolParameters,
|
39
|
+
text: text, // string | null is the expected value here
|
40
|
+
};
|
41
|
+
},
|
42
|
+
});
|
35
43
|
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
|
2
|
+
export interface UpsertIntoVectorIndexStartedEvent extends BaseFunctionStartedEvent {
|
3
|
+
functionType: "upsert-into-vector-index";
|
4
|
+
objects: unknown[];
|
5
|
+
}
|
6
|
+
export interface UpsertIntoVectorIndexFinishedEvent extends BaseFunctionFinishedEvent {
|
7
|
+
functionType: "upsert-into-vector-index";
|
8
|
+
objects: unknown[];
|
9
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -31,10 +31,7 @@ class VectorIndexRetriever {
|
|
31
31
|
};
|
32
32
|
}
|
33
33
|
async retrieve(query, options) {
|
34
|
-
const embedding = await (0, embed_js_1.embed)(this.embeddingModel, query,
|
35
|
-
functionId: options?.functionId,
|
36
|
-
run: options?.run,
|
37
|
-
});
|
34
|
+
const embedding = await (0, embed_js_1.embed)(this.embeddingModel, query, options);
|
38
35
|
const queryResult = await this.vectorIndex.queryByVector({
|
39
36
|
queryVector: embedding,
|
40
37
|
maxResults: this.settings.maxResults ?? 1,
|
@@ -28,10 +28,7 @@ export class VectorIndexRetriever {
|
|
28
28
|
};
|
29
29
|
}
|
30
30
|
async retrieve(query, options) {
|
31
|
-
const embedding = await embed(this.embeddingModel, query,
|
32
|
-
functionId: options?.functionId,
|
33
|
-
run: options?.run,
|
34
|
-
});
|
31
|
+
const embedding = await embed(this.embeddingModel, query, options);
|
35
32
|
const queryResult = await this.vectorIndex.queryByVector({
|
36
33
|
queryVector: embedding,
|
37
34
|
maxResults: this.settings.maxResults ?? 1,
|
package/vector-index/index.cjs
CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./UpsertIntoVectorIndexEvent.cjs"), exports);
|
17
18
|
__exportStar(require("./VectorIndex.cjs"), exports);
|
18
19
|
__exportStar(require("./VectorIndexRetriever.cjs"), exports);
|
19
20
|
__exportStar(require("./memory/MemoryVectorIndex.cjs"), exports);
|
package/vector-index/index.d.ts
CHANGED
package/vector-index/index.js
CHANGED
@@ -2,14 +2,23 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.upsertIntoVectorIndex = void 0;
|
4
4
|
const nanoid_1 = require("nanoid");
|
5
|
+
const executeFunctionCall_js_1 = require("../core/executeFunctionCall.cjs");
|
5
6
|
const embed_js_1 = require("../model-function/embed/embed.cjs");
|
6
7
|
async function upsertIntoVectorIndex({ vectorIndex, embeddingModel, generateId = nanoid_1.nanoid, objects, getValueToEmbed, getId, }, options) {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
return (0, executeFunctionCall_js_1.executeFunctionCall)({
|
9
|
+
options,
|
10
|
+
input: objects,
|
11
|
+
functionType: "upsert-into-vector-index",
|
12
|
+
inputPropertyName: "objects",
|
13
|
+
execute: async (options) => {
|
14
|
+
// many embedding models support bulk embedding, so we first embed all texts:
|
15
|
+
const embeddings = await (0, embed_js_1.embedMany)(embeddingModel, objects.map(getValueToEmbed), options);
|
16
|
+
await vectorIndex.upsertMany(objects.map((object, i) => ({
|
17
|
+
id: getId?.(object, i) ?? generateId(),
|
18
|
+
vector: embeddings[i],
|
19
|
+
data: object,
|
20
|
+
})));
|
21
|
+
},
|
22
|
+
});
|
14
23
|
}
|
15
24
|
exports.upsertIntoVectorIndex = upsertIntoVectorIndex;
|
@@ -1,11 +1,20 @@
|
|
1
1
|
import { nanoid as createId } from "nanoid";
|
2
|
+
import { executeFunctionCall } from "../core/executeFunctionCall.js";
|
2
3
|
import { embedMany } from "../model-function/embed/embed.js";
|
3
4
|
export async function upsertIntoVectorIndex({ vectorIndex, embeddingModel, generateId = createId, objects, getValueToEmbed, getId, }, options) {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
return executeFunctionCall({
|
6
|
+
options,
|
7
|
+
input: objects,
|
8
|
+
functionType: "upsert-into-vector-index",
|
9
|
+
inputPropertyName: "objects",
|
10
|
+
execute: async (options) => {
|
11
|
+
// many embedding models support bulk embedding, so we first embed all texts:
|
12
|
+
const embeddings = await embedMany(embeddingModel, objects.map(getValueToEmbed), options);
|
13
|
+
await vectorIndex.upsertMany(objects.map((object, i) => ({
|
14
|
+
id: getId?.(object, i) ?? generateId(),
|
15
|
+
vector: embeddings[i],
|
16
|
+
data: object,
|
17
|
+
})));
|
18
|
+
},
|
19
|
+
});
|
11
20
|
}
|