modelfusion 0.49.0 → 0.51.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 +176 -158
- 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/elevenlabs/ElevenLabsError.cjs +0 -1
- package/model-provider/elevenlabs/ElevenLabsError.js +0 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.cjs +33 -5
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.d.ts +6 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.js +33 -5
- package/model-provider/lmnt/LmntError.cjs +0 -1
- package/model-provider/lmnt/LmntError.js +0 -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/retriever/retrieve.js
CHANGED
@@ -1,79 +1,11 @@
|
|
1
|
-
import {
|
2
|
-
import { FunctionEventSource } from "../core/FunctionEventSource.js";
|
3
|
-
import { getGlobalFunctionLogging } from "../core/GlobalFunctionLogging.js";
|
4
|
-
import { getGlobalFunctionObservers } from "../core/GlobalFunctionObservers.js";
|
5
|
-
import { AbortError } from "../core/api/AbortError.js";
|
6
|
-
import { getFunctionCallLogger } from "../core/getFunctionCallLogger.js";
|
7
|
-
import { getRun } from "../core/getRun.js";
|
8
|
-
import { startDurationMeasurement } from "../util/DurationMeasurement.js";
|
9
|
-
import { runSafe } from "../util/runSafe.js";
|
1
|
+
import { executeFunctionCall } from "../core/executeFunctionCall.js";
|
10
2
|
export async function retrieve(retriever, query, options) {
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
...getFunctionCallLogger(options?.logging ?? getGlobalFunctionLogging()),
|
15
|
-
...getGlobalFunctionObservers(),
|
16
|
-
...(run?.functionObserver != null ? [run.functionObserver] : []),
|
17
|
-
...(options?.observers ?? []),
|
18
|
-
],
|
19
|
-
errorHandler: run?.errorHandler,
|
20
|
-
});
|
21
|
-
const durationMeasurement = startDurationMeasurement();
|
22
|
-
const startMetadata = {
|
3
|
+
return executeFunctionCall({
|
4
|
+
options,
|
5
|
+
input: query,
|
23
6
|
functionType: "retrieve",
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
userId: run?.userId,
|
28
|
-
functionId: options?.functionId,
|
29
|
-
query,
|
30
|
-
timestamp: durationMeasurement.startDate,
|
31
|
-
startTimestamp: durationMeasurement.startDate,
|
32
|
-
};
|
33
|
-
eventSource.notify({
|
34
|
-
eventType: "started",
|
35
|
-
...startMetadata,
|
36
|
-
});
|
37
|
-
const result = await runSafe(() => retriever.retrieve(query, {
|
38
|
-
functionId: options?.functionId,
|
39
|
-
logging: options?.logging,
|
40
|
-
observers: options?.observers,
|
41
|
-
run,
|
42
|
-
}));
|
43
|
-
const finishMetadata = {
|
44
|
-
eventType: "finished",
|
45
|
-
...startMetadata,
|
46
|
-
finishTimestamp: new Date(),
|
47
|
-
durationInMs: durationMeasurement.durationInMs,
|
48
|
-
};
|
49
|
-
if (!result.ok) {
|
50
|
-
if (result.isAborted) {
|
51
|
-
eventSource.notify({
|
52
|
-
...finishMetadata,
|
53
|
-
eventType: "finished",
|
54
|
-
result: {
|
55
|
-
status: "abort",
|
56
|
-
},
|
57
|
-
});
|
58
|
-
throw new AbortError();
|
59
|
-
}
|
60
|
-
eventSource.notify({
|
61
|
-
...finishMetadata,
|
62
|
-
eventType: "finished",
|
63
|
-
result: {
|
64
|
-
status: "error",
|
65
|
-
error: result.error,
|
66
|
-
},
|
67
|
-
});
|
68
|
-
throw result.error;
|
69
|
-
}
|
70
|
-
eventSource.notify({
|
71
|
-
...finishMetadata,
|
72
|
-
eventType: "finished",
|
73
|
-
result: {
|
74
|
-
status: "success",
|
75
|
-
value: result.value,
|
76
|
-
},
|
7
|
+
execute: (options) => retriever.retrieve(query, options),
|
8
|
+
inputPropertyName: "query",
|
9
|
+
outputPropertyName: "results",
|
77
10
|
});
|
78
|
-
return result.value;
|
79
11
|
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
|
2
|
+
export interface UseToolStartedEvent extends BaseFunctionStartedEvent {
|
3
|
+
functionType: "use-tool";
|
4
|
+
}
|
5
|
+
export interface UseToolFinishedEvent extends BaseFunctionFinishedEvent {
|
6
|
+
functionType: "use-tool";
|
7
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
|
2
|
+
export interface UseToolOrGenerateTextStartedEvent extends BaseFunctionStartedEvent {
|
3
|
+
functionType: "use-tool-or-generate-text";
|
4
|
+
}
|
5
|
+
export interface UseToolOrGenerateTextFinishedEvent extends BaseFunctionFinishedEvent {
|
6
|
+
functionType: "use-tool-or-generate-text";
|
7
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/tool/executeTool.cjs
CHANGED
@@ -69,6 +69,7 @@ async function doExecuteTool(tool, input, options) {
|
|
69
69
|
const metadata = {
|
70
70
|
functionType: "execute-tool",
|
71
71
|
callId: `call-${(0, nanoid_1.nanoid)()}`,
|
72
|
+
parentCallId: options?.parentCallId,
|
72
73
|
runId: run?.runId,
|
73
74
|
sessionId: run?.sessionId,
|
74
75
|
userId: run?.userId,
|
@@ -87,6 +88,7 @@ async function doExecuteTool(tool, input, options) {
|
|
87
88
|
logging: options?.logging,
|
88
89
|
observers: options?.observers,
|
89
90
|
run,
|
91
|
+
parentCallId: metadata.callId,
|
90
92
|
}));
|
91
93
|
const finishMetadata = {
|
92
94
|
...metadata,
|
package/tool/executeTool.js
CHANGED
@@ -64,6 +64,7 @@ async function doExecuteTool(tool, input, options) {
|
|
64
64
|
const metadata = {
|
65
65
|
functionType: "execute-tool",
|
66
66
|
callId: `call-${createId()}`,
|
67
|
+
parentCallId: options?.parentCallId,
|
67
68
|
runId: run?.runId,
|
68
69
|
sessionId: run?.sessionId,
|
69
70
|
userId: run?.userId,
|
@@ -82,6 +83,7 @@ async function doExecuteTool(tool, input, options) {
|
|
82
83
|
logging: options?.logging,
|
83
84
|
observers: options?.observers,
|
84
85
|
run,
|
86
|
+
parentCallId: metadata.callId,
|
85
87
|
}));
|
86
88
|
const finishMetadata = {
|
87
89
|
...metadata,
|
package/tool/index.cjs
CHANGED
@@ -19,6 +19,8 @@ __exportStar(require("./InvalidToolNameError.cjs"), exports);
|
|
19
19
|
__exportStar(require("./NoSuchToolError.cjs"), exports);
|
20
20
|
__exportStar(require("./Tool.cjs"), exports);
|
21
21
|
__exportStar(require("./ToolExecutionError.cjs"), exports);
|
22
|
+
__exportStar(require("./UseToolEvent.cjs"), exports);
|
23
|
+
__exportStar(require("./UseToolOrGenerateTextEvent.cjs"), exports);
|
22
24
|
__exportStar(require("./WebSearchTool.cjs"), exports);
|
23
25
|
__exportStar(require("./executeTool.cjs"), exports);
|
24
26
|
__exportStar(require("./useTool.cjs"), exports);
|
package/tool/index.d.ts
CHANGED
@@ -3,6 +3,8 @@ export * from "./InvalidToolNameError.js";
|
|
3
3
|
export * from "./NoSuchToolError.js";
|
4
4
|
export * from "./Tool.js";
|
5
5
|
export * from "./ToolExecutionError.js";
|
6
|
+
export * from "./UseToolEvent.js";
|
7
|
+
export * from "./UseToolOrGenerateTextEvent.js";
|
6
8
|
export * from "./WebSearchTool.js";
|
7
9
|
export * from "./executeTool.js";
|
8
10
|
export * from "./useTool.js";
|
package/tool/index.js
CHANGED
@@ -3,6 +3,8 @@ export * from "./InvalidToolNameError.js";
|
|
3
3
|
export * from "./NoSuchToolError.js";
|
4
4
|
export * from "./Tool.js";
|
5
5
|
export * from "./ToolExecutionError.js";
|
6
|
+
export * from "./UseToolEvent.js";
|
7
|
+
export * from "./UseToolOrGenerateTextEvent.js";
|
6
8
|
export * from "./WebSearchTool.js";
|
7
9
|
export * from "./executeTool.js";
|
8
10
|
export * from "./useTool.js";
|
package/tool/useTool.cjs
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.useTool = void 0;
|
4
|
+
const executeFunctionCall_js_1 = require("../core/executeFunctionCall.cjs");
|
4
5
|
const generateStructure_js_1 = require("../model-function/generate-structure/generateStructure.cjs");
|
5
6
|
const executeTool_js_1 = require("./executeTool.cjs");
|
6
7
|
/**
|
@@ -15,15 +16,22 @@ async function useTool(model, tool, prompt, options) {
|
|
15
16
|
const expandedPrompt = typeof prompt === "function"
|
16
17
|
? prompt(tool)
|
17
18
|
: prompt;
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
return (0, executeFunctionCall_js_1.executeFunctionCall)({
|
20
|
+
options,
|
21
|
+
input: expandedPrompt,
|
22
|
+
functionType: "use-tool",
|
23
|
+
execute: async (options) => {
|
24
|
+
const { value } = await (0, generateStructure_js_1.generateStructure)(model, {
|
25
|
+
name: tool.name,
|
26
|
+
description: tool.description,
|
27
|
+
schema: tool.inputSchema,
|
28
|
+
}, expandedPrompt, options).asFullResponse();
|
29
|
+
return {
|
30
|
+
tool: tool.name,
|
31
|
+
parameters: value,
|
32
|
+
result: await (0, executeTool_js_1.executeTool)(tool, value, options),
|
33
|
+
};
|
34
|
+
},
|
35
|
+
});
|
28
36
|
}
|
29
37
|
exports.useTool = useTool;
|
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
|
}
|