modelfusion 0.111.0 → 0.113.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 +57 -0
- package/README.md +26 -154
- package/core/FunctionEvent.d.ts +3 -3
- package/model-function/ModelCallEvent.d.ts +3 -3
- package/model-function/generate-structure/StructureFromTextPromptTemplate.d.ts +13 -0
- package/model-function/generate-structure/jsonStructurePrompt.cjs +12 -0
- package/model-function/generate-structure/jsonStructurePrompt.d.ts +3 -3
- package/model-function/generate-structure/jsonStructurePrompt.js +12 -0
- package/model-function/generate-text/PromptTemplateFullTextModel.cjs +2 -2
- package/model-function/generate-text/PromptTemplateFullTextModel.d.ts +3 -3
- package/model-function/generate-text/PromptTemplateFullTextModel.js +2 -2
- package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +2 -2
- package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +3 -3
- package/model-function/generate-text/PromptTemplateTextGenerationModel.js +2 -2
- package/model-function/generate-text/TextGenerationModel.d.ts +4 -0
- package/model-provider/mistral/MistralChatModel.d.ts +4 -4
- package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +3 -3
- package/model-provider/ollama/OllamaChatModel.cjs +17 -2
- package/model-provider/ollama/OllamaChatModel.d.ts +7 -3
- package/model-provider/ollama/OllamaChatModel.js +17 -2
- package/model-provider/ollama/OllamaCompletionModel.cjs +2 -2
- package/model-provider/ollama/OllamaCompletionModel.d.ts +3 -3
- package/model-provider/ollama/OllamaCompletionModel.js +2 -2
- package/model-provider/openai/AbstractOpenAIChatModel.cjs +1 -1
- package/model-provider/openai/AbstractOpenAIChatModel.d.ts +7 -7
- package/model-provider/openai/AbstractOpenAIChatModel.js +1 -1
- package/model-provider/openai/AbstractOpenAICompletionModel.d.ts +4 -4
- package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.d.ts +1 -1
- package/model-provider/openai/OpenAIChatModel.cjs +12 -4
- package/model-provider/openai/OpenAIChatModel.d.ts +5 -4
- package/model-provider/openai/OpenAIChatModel.js +12 -4
- package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.cjs +12 -4
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.d.ts +5 -4
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.js +12 -4
- package/package.json +2 -2
- package/tool/Tool.cjs +0 -10
- package/tool/Tool.d.ts +0 -1
- package/tool/Tool.js +0 -10
- package/tool/{generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.cjs → generate-tool-calls/TextGenerationToolCallsModel.cjs} +7 -7
- package/tool/{generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.d.ts → generate-tool-calls/TextGenerationToolCallsModel.d.ts} +6 -6
- package/tool/{generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.js → generate-tool-calls/TextGenerationToolCallsModel.js} +5 -5
- package/tool/generate-tool-calls/ToolCallsGenerationEvent.d.ts +23 -0
- package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.d.ts → generate-tool-calls/ToolCallsGenerationModel.d.ts} +3 -3
- package/tool/{generate-tool-calls-or-text/ToolCallsOrTextParseError.cjs → generate-tool-calls/ToolCallsParseError.cjs} +5 -5
- package/tool/{generate-tool-calls-or-text/ToolCallsOrTextParseError.d.ts → generate-tool-calls/ToolCallsParseError.d.ts} +1 -1
- package/tool/{generate-tool-calls-or-text/ToolCallsOrTextParseError.js → generate-tool-calls/ToolCallsParseError.js} +3 -3
- package/tool/{generate-tool-calls-or-text/ToolCallsOrGenerateTextPromptTemplate.d.ts → generate-tool-calls/ToolCallsPromptTemplate.d.ts} +1 -1
- package/tool/{generate-tool-calls-or-text/generateToolCallsOrText.cjs → generate-tool-calls/generateToolCalls.cjs} +5 -5
- package/tool/{generate-tool-calls-or-text/generateToolCallsOrText.d.ts → generate-tool-calls/generateToolCalls.d.ts} +3 -3
- package/tool/{generate-tool-calls-or-text/generateToolCallsOrText.js → generate-tool-calls/generateToolCalls.js} +3 -3
- package/tool/{generate-tool-calls-or-text → generate-tool-calls}/index.cjs +6 -6
- package/tool/generate-tool-calls/index.d.ts +6 -0
- package/tool/generate-tool-calls/index.js +6 -0
- package/tool/index.cjs +2 -3
- package/tool/index.d.ts +2 -3
- package/tool/index.js +2 -3
- package/tool/use-tools/UseToolsEvent.d.ts +7 -0
- package/tool/{use-tools-or-generate-text → use-tools}/index.cjs +2 -2
- package/tool/use-tools/index.d.ts +2 -0
- package/tool/use-tools/index.js +2 -0
- package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.cjs → use-tools/useTools.cjs} +6 -6
- package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.d.ts → use-tools/useTools.d.ts} +2 -2
- package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.js → use-tools/useTools.js} +4 -4
- package/tool/InvalidToolNameError.cjs +0 -17
- package/tool/InvalidToolNameError.d.ts +0 -7
- package/tool/InvalidToolNameError.js +0 -13
- package/tool/generate-tool-calls-or-text/ToolCallsOrTextGenerationEvent.d.ts +0 -23
- package/tool/generate-tool-calls-or-text/index.d.ts +0 -6
- package/tool/generate-tool-calls-or-text/index.js +0 -6
- package/tool/use-tools-or-generate-text/UseToolsOrGenerateTextEvent.d.ts +0 -7
- package/tool/use-tools-or-generate-text/index.d.ts +0 -2
- package/tool/use-tools-or-generate-text/index.js +0 -2
- /package/tool/{generate-tool-calls-or-text/ToolCallsOrGenerateTextPromptTemplate.cjs → generate-tool-calls/ToolCallsGenerationEvent.cjs} +0 -0
- /package/tool/{generate-tool-calls-or-text/ToolCallsOrGenerateTextPromptTemplate.js → generate-tool-calls/ToolCallsGenerationEvent.js} +0 -0
- /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationEvent.cjs → generate-tool-calls/ToolCallsGenerationModel.cjs} +0 -0
- /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationEvent.js → generate-tool-calls/ToolCallsGenerationModel.js} +0 -0
- /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.cjs → generate-tool-calls/ToolCallsPromptTemplate.cjs} +0 -0
- /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.js → generate-tool-calls/ToolCallsPromptTemplate.js} +0 -0
- /package/tool/{use-tools-or-generate-text/UseToolsOrGenerateTextEvent.cjs → use-tools/UseToolsEvent.cjs} +0 -0
- /package/tool/{use-tools-or-generate-text/UseToolsOrGenerateTextEvent.js → use-tools/UseToolsEvent.js} +0 -0
@@ -55,10 +55,15 @@ export class OpenAICompatibleChatModel extends AbstractOpenAIChatModel {
|
|
55
55
|
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
56
56
|
}
|
57
57
|
asStructureGenerationModel(promptTemplate) {
|
58
|
-
return
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
return "adaptModel" in promptTemplate
|
59
|
+
? new StructureFromTextStreamingModel({
|
60
|
+
model: promptTemplate.adaptModel(this),
|
61
|
+
template: promptTemplate,
|
62
|
+
})
|
63
|
+
: new StructureFromTextStreamingModel({
|
64
|
+
model: this,
|
65
|
+
template: promptTemplate,
|
66
|
+
});
|
62
67
|
}
|
63
68
|
/**
|
64
69
|
* Returns this model with a text prompt template.
|
@@ -89,6 +94,9 @@ export class OpenAICompatibleChatModel extends AbstractOpenAIChatModel {
|
|
89
94
|
promptTemplate,
|
90
95
|
});
|
91
96
|
}
|
97
|
+
withJsonOutput() {
|
98
|
+
return this.withSettings({ responseFormat: { type: "json_object" } });
|
99
|
+
}
|
92
100
|
withSettings(additionalSettings) {
|
93
101
|
return new OpenAICompatibleChatModel(Object.assign({}, this.settings, additionalSettings));
|
94
102
|
}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "modelfusion",
|
3
|
-
"description": "The TypeScript library for building
|
4
|
-
"version": "0.
|
3
|
+
"description": "The TypeScript library for building AI applications.",
|
4
|
+
"version": "0.113.0",
|
5
5
|
"author": "Lars Grammel",
|
6
6
|
"license": "MIT",
|
7
7
|
"keywords": [
|
package/tool/Tool.cjs
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.Tool = void 0;
|
4
|
-
const InvalidToolNameError_js_1 = require("./InvalidToolNameError.cjs");
|
5
|
-
const namePattern = /^[a-zA-Z0-9_-]{1,64}$/;
|
6
4
|
/**
|
7
5
|
* A tool is a function with a name, description and defined inputs that can be used
|
8
6
|
* by agents and chatbots.
|
@@ -11,7 +9,6 @@ class Tool {
|
|
11
9
|
constructor({ name, description, parameters, returnType, execute, }) {
|
12
10
|
/**
|
13
11
|
* The name of the tool.
|
14
|
-
* It has to be a function name that matches the regular expression pattern '^[a-zA-Z0-9_-]{1,64}$'.
|
15
12
|
* Should be understandable for language models and unique among the tools that they know.
|
16
13
|
*/
|
17
14
|
Object.defineProperty(this, "name", {
|
@@ -57,13 +54,6 @@ class Tool {
|
|
57
54
|
writable: true,
|
58
55
|
value: void 0
|
59
56
|
});
|
60
|
-
// check that the name is a valid function name:
|
61
|
-
if (!namePattern.test(name)) {
|
62
|
-
throw new InvalidToolNameError_js_1.InvalidToolNameError({
|
63
|
-
toolName: name,
|
64
|
-
namePattern,
|
65
|
-
});
|
66
|
-
}
|
67
57
|
this.name = name;
|
68
58
|
this.description = description;
|
69
59
|
this.parameters = parameters;
|
package/tool/Tool.d.ts
CHANGED
@@ -9,7 +9,6 @@ import { ToolDefinition } from "./ToolDefinition.js";
|
|
9
9
|
export declare class Tool<NAME extends string, PARAMETERS, RESULT> implements ToolDefinition<NAME, PARAMETERS> {
|
10
10
|
/**
|
11
11
|
* The name of the tool.
|
12
|
-
* It has to be a function name that matches the regular expression pattern '^[a-zA-Z0-9_-]{1,64}$'.
|
13
12
|
* Should be understandable for language models and unique among the tools that they know.
|
14
13
|
*/
|
15
14
|
readonly name: NAME;
|
package/tool/Tool.js
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
import { InvalidToolNameError } from "./InvalidToolNameError.js";
|
2
|
-
const namePattern = /^[a-zA-Z0-9_-]{1,64}$/;
|
3
1
|
/**
|
4
2
|
* A tool is a function with a name, description and defined inputs that can be used
|
5
3
|
* by agents and chatbots.
|
@@ -8,7 +6,6 @@ export class Tool {
|
|
8
6
|
constructor({ name, description, parameters, returnType, execute, }) {
|
9
7
|
/**
|
10
8
|
* The name of the tool.
|
11
|
-
* It has to be a function name that matches the regular expression pattern '^[a-zA-Z0-9_-]{1,64}$'.
|
12
9
|
* Should be understandable for language models and unique among the tools that they know.
|
13
10
|
*/
|
14
11
|
Object.defineProperty(this, "name", {
|
@@ -54,13 +51,6 @@ export class Tool {
|
|
54
51
|
writable: true,
|
55
52
|
value: void 0
|
56
53
|
});
|
57
|
-
// check that the name is a valid function name:
|
58
|
-
if (!namePattern.test(name)) {
|
59
|
-
throw new InvalidToolNameError({
|
60
|
-
toolName: name,
|
61
|
-
namePattern,
|
62
|
-
});
|
63
|
-
}
|
64
54
|
this.name = name;
|
65
55
|
this.description = description;
|
66
56
|
this.parameters = parameters;
|
@@ -1,9 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.TextGenerationToolCallsModel = void 0;
|
4
4
|
const generateText_js_1 = require("../../model-function/generate-text/generateText.cjs");
|
5
|
-
const
|
6
|
-
class
|
5
|
+
const ToolCallsParseError_js_1 = require("./ToolCallsParseError.cjs");
|
6
|
+
class TextGenerationToolCallsModel {
|
7
7
|
constructor({ model, template, }) {
|
8
8
|
Object.defineProperty(this, "model", {
|
9
9
|
enumerable: true,
|
@@ -29,7 +29,7 @@ class TextGenerationToolCallsOrGenerateTextModel {
|
|
29
29
|
get settingsForEvent() {
|
30
30
|
return this.model.settingsForEvent;
|
31
31
|
}
|
32
|
-
async
|
32
|
+
async doGenerateToolCalls(tools, prompt, options) {
|
33
33
|
const { response, text: generatedText, metadata, } = await (0, generateText_js_1.generateText)(this.model, this.template.createPrompt(prompt, tools), {
|
34
34
|
...options,
|
35
35
|
fullResponse: true,
|
@@ -44,17 +44,17 @@ class TextGenerationToolCallsOrGenerateTextModel {
|
|
44
44
|
};
|
45
45
|
}
|
46
46
|
catch (error) {
|
47
|
-
throw new
|
47
|
+
throw new ToolCallsParseError_js_1.ToolCallsParseError({
|
48
48
|
valueText: generatedText,
|
49
49
|
cause: error,
|
50
50
|
});
|
51
51
|
}
|
52
52
|
}
|
53
53
|
withSettings(additionalSettings) {
|
54
|
-
return new
|
54
|
+
return new TextGenerationToolCallsModel({
|
55
55
|
model: this.model.withSettings(additionalSettings),
|
56
56
|
template: this.template,
|
57
57
|
});
|
58
58
|
}
|
59
59
|
}
|
60
|
-
exports.
|
60
|
+
exports.TextGenerationToolCallsModel = TextGenerationToolCallsModel;
|
@@ -1,19 +1,19 @@
|
|
1
1
|
import { FunctionOptions } from "../../core/FunctionOptions.js";
|
2
2
|
import { TextGenerationModel } from "../../model-function/generate-text/TextGenerationModel.js";
|
3
3
|
import { ToolDefinition } from "../ToolDefinition.js";
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
export declare class
|
4
|
+
import { ToolCallsGenerationModel, ToolCallsGenerationModelSettings } from "./ToolCallsGenerationModel.js";
|
5
|
+
import { ToolCallsPromptTemplate } from "./ToolCallsPromptTemplate.js";
|
6
|
+
export declare class TextGenerationToolCallsModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL extends TextGenerationModel<TARGET_PROMPT, ToolCallsGenerationModelSettings>> implements ToolCallsGenerationModel<SOURCE_PROMPT, MODEL["settings"]> {
|
7
7
|
private readonly model;
|
8
8
|
private readonly template;
|
9
9
|
constructor({ model, template, }: {
|
10
10
|
model: MODEL;
|
11
|
-
template:
|
11
|
+
template: ToolCallsPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
|
12
12
|
});
|
13
13
|
get modelInformation(): import("../../index.js").ModelInformation;
|
14
|
-
get settings():
|
14
|
+
get settings(): ToolCallsGenerationModelSettings;
|
15
15
|
get settingsForEvent(): Partial<MODEL["settings"]>;
|
16
|
-
|
16
|
+
doGenerateToolCalls(tools: Array<ToolDefinition<string, unknown>>, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
|
17
17
|
response: unknown;
|
18
18
|
text: string | null;
|
19
19
|
toolCalls: {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { generateText } from "../../model-function/generate-text/generateText.js";
|
2
|
-
import {
|
3
|
-
export class
|
2
|
+
import { ToolCallsParseError } from "./ToolCallsParseError.js";
|
3
|
+
export class TextGenerationToolCallsModel {
|
4
4
|
constructor({ model, template, }) {
|
5
5
|
Object.defineProperty(this, "model", {
|
6
6
|
enumerable: true,
|
@@ -26,7 +26,7 @@ export class TextGenerationToolCallsOrGenerateTextModel {
|
|
26
26
|
get settingsForEvent() {
|
27
27
|
return this.model.settingsForEvent;
|
28
28
|
}
|
29
|
-
async
|
29
|
+
async doGenerateToolCalls(tools, prompt, options) {
|
30
30
|
const { response, text: generatedText, metadata, } = await generateText(this.model, this.template.createPrompt(prompt, tools), {
|
31
31
|
...options,
|
32
32
|
fullResponse: true,
|
@@ -41,14 +41,14 @@ export class TextGenerationToolCallsOrGenerateTextModel {
|
|
41
41
|
};
|
42
42
|
}
|
43
43
|
catch (error) {
|
44
|
-
throw new
|
44
|
+
throw new ToolCallsParseError({
|
45
45
|
valueText: generatedText,
|
46
46
|
cause: error,
|
47
47
|
});
|
48
48
|
}
|
49
49
|
}
|
50
50
|
withSettings(additionalSettings) {
|
51
|
-
return new
|
51
|
+
return new TextGenerationToolCallsModel({
|
52
52
|
model: this.model.withSettings(additionalSettings),
|
53
53
|
template: this.template,
|
54
54
|
});
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../../model-function/ModelCallEvent.js";
|
2
|
+
export interface ToolCallsGenerationStartedEvent extends BaseModelCallStartedEvent {
|
3
|
+
functionType: "generate-tool-calls";
|
4
|
+
}
|
5
|
+
export type ToolCallsGenerationFinishedEventResult = {
|
6
|
+
status: "success";
|
7
|
+
response: unknown;
|
8
|
+
value: unknown;
|
9
|
+
usage?: {
|
10
|
+
promptTokens: number;
|
11
|
+
completionTokens: number;
|
12
|
+
totalTokens: number;
|
13
|
+
};
|
14
|
+
} | {
|
15
|
+
status: "error";
|
16
|
+
error: unknown;
|
17
|
+
} | {
|
18
|
+
status: "abort";
|
19
|
+
};
|
20
|
+
export type ToolCallsGenerationFinishedEvent = BaseModelCallFinishedEvent & {
|
21
|
+
functionType: "generate-tool-calls";
|
22
|
+
result: ToolCallsGenerationFinishedEventResult;
|
23
|
+
};
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { FunctionOptions } from "../../core/FunctionOptions.js";
|
2
2
|
import { Model, ModelSettings } from "../../model-function/Model.js";
|
3
3
|
import { ToolDefinition } from "../ToolDefinition.js";
|
4
|
-
export interface
|
4
|
+
export interface ToolCallsGenerationModelSettings extends ModelSettings {
|
5
5
|
}
|
6
|
-
export interface
|
7
|
-
|
6
|
+
export interface ToolCallsGenerationModel<PROMPT, SETTINGS extends ToolCallsGenerationModelSettings> extends Model<SETTINGS> {
|
7
|
+
doGenerateToolCalls(tools: Array<ToolDefinition<string, unknown>>, prompt: PROMPT, options?: FunctionOptions): PromiseLike<{
|
8
8
|
response: unknown;
|
9
9
|
text: string | null;
|
10
10
|
toolCalls: Array<{
|
@@ -1,10 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.ToolCallsParseError = void 0;
|
4
4
|
const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
|
5
|
-
class
|
5
|
+
class ToolCallsParseError extends Error {
|
6
6
|
constructor({ valueText, cause }) {
|
7
|
-
super(`Tool calls
|
7
|
+
super(`Tool calls parsing failed. ` +
|
8
8
|
`Value: ${valueText}.\n` +
|
9
9
|
`Error message: ${(0, getErrorMessage_js_1.getErrorMessage)(cause)}`);
|
10
10
|
Object.defineProperty(this, "valueText", {
|
@@ -19,7 +19,7 @@ class ToolCallsOrTextParseError extends Error {
|
|
19
19
|
writable: true,
|
20
20
|
value: void 0
|
21
21
|
});
|
22
|
-
this.name = "
|
22
|
+
this.name = "ToolCallsParseError";
|
23
23
|
this.cause = cause;
|
24
24
|
this.valueText = valueText;
|
25
25
|
}
|
@@ -33,4 +33,4 @@ class ToolCallsOrTextParseError extends Error {
|
|
33
33
|
};
|
34
34
|
}
|
35
35
|
}
|
36
|
-
exports.
|
36
|
+
exports.ToolCallsParseError = ToolCallsParseError;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { getErrorMessage } from "../../util/getErrorMessage.js";
|
2
|
-
export class
|
2
|
+
export class ToolCallsParseError extends Error {
|
3
3
|
constructor({ valueText, cause }) {
|
4
|
-
super(`Tool calls
|
4
|
+
super(`Tool calls parsing failed. ` +
|
5
5
|
`Value: ${valueText}.\n` +
|
6
6
|
`Error message: ${getErrorMessage(cause)}`);
|
7
7
|
Object.defineProperty(this, "valueText", {
|
@@ -16,7 +16,7 @@ export class ToolCallsOrTextParseError extends Error {
|
|
16
16
|
writable: true,
|
17
17
|
value: void 0
|
18
18
|
});
|
19
|
-
this.name = "
|
19
|
+
this.name = "ToolCallsParseError";
|
20
20
|
this.cause = cause;
|
21
21
|
this.valueText = valueText;
|
22
22
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ToolDefinition } from "../ToolDefinition.js";
|
2
|
-
export interface
|
2
|
+
export interface ToolCallsPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> {
|
3
3
|
createPrompt: (prompt: SOURCE_PROMPT, tools: Array<ToolDefinition<string, unknown>>) => TARGET_PROMPT;
|
4
4
|
extractToolCallsAndText: (response: string) => {
|
5
5
|
text: string | null;
|
@@ -1,21 +1,21 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.generateToolCalls = void 0;
|
4
4
|
const executeStandardCall_js_1 = require("../../model-function/executeStandardCall.cjs");
|
5
5
|
const NoSuchToolDefinitionError_js_1 = require("../NoSuchToolDefinitionError.cjs");
|
6
6
|
const ToolCallArgumentsValidationError_js_1 = require("../ToolCallArgumentsValidationError.cjs");
|
7
|
-
async function
|
7
|
+
async function generateToolCalls(model, tools, prompt, options) {
|
8
8
|
// Note: PROMPT must not be a function.
|
9
9
|
const expandedPrompt = typeof prompt === "function"
|
10
10
|
? prompt(tools)
|
11
11
|
: prompt;
|
12
12
|
const fullResponse = await (0, executeStandardCall_js_1.executeStandardCall)({
|
13
|
-
functionType: "generate-tool-calls
|
13
|
+
functionType: "generate-tool-calls",
|
14
14
|
input: expandedPrompt,
|
15
15
|
model,
|
16
16
|
options,
|
17
17
|
generateResponse: async (options) => {
|
18
|
-
const result = await model.
|
18
|
+
const result = await model.doGenerateToolCalls(tools, expandedPrompt, options);
|
19
19
|
const { text, toolCalls: rawToolCalls } = result;
|
20
20
|
// no tool calls:
|
21
21
|
if (rawToolCalls == null) {
|
@@ -60,4 +60,4 @@ async function generateToolCallsOrText(model, tools, prompt, options) {
|
|
60
60
|
});
|
61
61
|
return options?.fullResponse ? fullResponse : fullResponse.value;
|
62
62
|
}
|
63
|
-
exports.
|
63
|
+
exports.generateToolCalls = generateToolCalls;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { FunctionOptions } from "../../core/FunctionOptions.js";
|
2
2
|
import { ModelCallMetadata } from "../../model-function/ModelCallMetadata.js";
|
3
3
|
import { ToolDefinition } from "../ToolDefinition.js";
|
4
|
-
import {
|
4
|
+
import { ToolCallsGenerationModel, ToolCallsGenerationModelSettings } from "./ToolCallsGenerationModel.js";
|
5
5
|
type ToolCallDefinitionArray<T extends ToolDefinition<any, any>[]> = T;
|
6
6
|
type ToToolCallDefinitionMap<T extends ToolCallDefinitionArray<ToolDefinition<any, any>[]>> = {
|
7
7
|
[K in T[number]["name"]]: Extract<T[number], ToolDefinition<K, any>>;
|
@@ -14,13 +14,13 @@ type ToToolCallUnion<T> = {
|
|
14
14
|
} : never;
|
15
15
|
}[keyof T];
|
16
16
|
type ToOutputValue<TOOL_CALLS extends ToolCallDefinitionArray<ToolDefinition<any, any>[]>> = ToToolCallUnion<ToToolCallDefinitionMap<TOOL_CALLS>>;
|
17
|
-
export declare function
|
17
|
+
export declare function generateToolCalls<TOOLS extends Array<ToolDefinition<any, any>>, PROMPT>(model: ToolCallsGenerationModel<PROMPT, ToolCallsGenerationModelSettings>, tools: TOOLS, prompt: PROMPT | ((tools: TOOLS) => PROMPT), options?: FunctionOptions & {
|
18
18
|
fullResponse?: false;
|
19
19
|
}): Promise<{
|
20
20
|
text: string | null;
|
21
21
|
toolCalls: Array<ToOutputValue<TOOLS>> | null;
|
22
22
|
}>;
|
23
|
-
export declare function
|
23
|
+
export declare function generateToolCalls<TOOLS extends ToolDefinition<any, any>[], PROMPT>(model: ToolCallsGenerationModel<PROMPT, ToolCallsGenerationModelSettings>, tools: TOOLS, prompt: PROMPT | ((tools: TOOLS) => PROMPT), options: FunctionOptions & {
|
24
24
|
fullResponse?: boolean;
|
25
25
|
}): Promise<{
|
26
26
|
value: {
|
@@ -1,18 +1,18 @@
|
|
1
1
|
import { executeStandardCall } from "../../model-function/executeStandardCall.js";
|
2
2
|
import { NoSuchToolDefinitionError } from "../NoSuchToolDefinitionError.js";
|
3
3
|
import { ToolCallArgumentsValidationError } from "../ToolCallArgumentsValidationError.js";
|
4
|
-
export async function
|
4
|
+
export async function generateToolCalls(model, tools, prompt, options) {
|
5
5
|
// Note: PROMPT must not be a function.
|
6
6
|
const expandedPrompt = typeof prompt === "function"
|
7
7
|
? prompt(tools)
|
8
8
|
: prompt;
|
9
9
|
const fullResponse = await executeStandardCall({
|
10
|
-
functionType: "generate-tool-calls
|
10
|
+
functionType: "generate-tool-calls",
|
11
11
|
input: expandedPrompt,
|
12
12
|
model,
|
13
13
|
options,
|
14
14
|
generateResponse: async (options) => {
|
15
|
-
const result = await model.
|
15
|
+
const result = await model.doGenerateToolCalls(tools, expandedPrompt, options);
|
16
16
|
const { text, toolCalls: rawToolCalls } = result;
|
17
17
|
// no tool calls:
|
18
18
|
if (rawToolCalls == null) {
|
@@ -14,9 +14,9 @@ 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("./
|
18
|
-
__exportStar(require("./
|
19
|
-
__exportStar(require("./
|
20
|
-
__exportStar(require("./
|
21
|
-
__exportStar(require("./
|
22
|
-
__exportStar(require("./
|
17
|
+
__exportStar(require("./TextGenerationToolCallsModel.cjs"), exports);
|
18
|
+
__exportStar(require("./ToolCallsGenerationEvent.cjs"), exports);
|
19
|
+
__exportStar(require("./ToolCallsGenerationModel.cjs"), exports);
|
20
|
+
__exportStar(require("./ToolCallsPromptTemplate.cjs"), exports);
|
21
|
+
__exportStar(require("./ToolCallsParseError.cjs"), exports);
|
22
|
+
__exportStar(require("./generateToolCalls.cjs"), exports);
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export * from "./TextGenerationToolCallsModel.js";
|
2
|
+
export * from "./ToolCallsGenerationEvent.js";
|
3
|
+
export * from "./ToolCallsGenerationModel.js";
|
4
|
+
export * from "./ToolCallsPromptTemplate.js";
|
5
|
+
export * from "./ToolCallsParseError.js";
|
6
|
+
export * from "./generateToolCalls.js";
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export * from "./TextGenerationToolCallsModel.js";
|
2
|
+
export * from "./ToolCallsGenerationEvent.js";
|
3
|
+
export * from "./ToolCallsGenerationModel.js";
|
4
|
+
export * from "./ToolCallsPromptTemplate.js";
|
5
|
+
export * from "./ToolCallsParseError.js";
|
6
|
+
export * from "./generateToolCalls.js";
|
package/tool/index.cjs
CHANGED
@@ -14,7 +14,6 @@ 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("./InvalidToolNameError.cjs"), exports);
|
18
17
|
__exportStar(require("./NoSuchToolDefinitionError.cjs"), exports);
|
19
18
|
__exportStar(require("./Tool.cjs"), exports);
|
20
19
|
__exportStar(require("./ToolCall.cjs"), exports);
|
@@ -27,6 +26,6 @@ __exportStar(require("./ToolExecutionError.cjs"), exports);
|
|
27
26
|
__exportStar(require("./WebSearchTool.cjs"), exports);
|
28
27
|
__exportStar(require("./execute-tool/index.cjs"), exports);
|
29
28
|
__exportStar(require("./generate-tool-call/index.cjs"), exports);
|
30
|
-
__exportStar(require("./generate-tool-calls
|
29
|
+
__exportStar(require("./generate-tool-calls/index.cjs"), exports);
|
31
30
|
__exportStar(require("./use-tool/index.cjs"), exports);
|
32
|
-
__exportStar(require("./use-tools
|
31
|
+
__exportStar(require("./use-tools/index.cjs"), exports);
|
package/tool/index.d.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
export * from "./InvalidToolNameError.js";
|
2
1
|
export * from "./NoSuchToolDefinitionError.js";
|
3
2
|
export * from "./Tool.js";
|
4
3
|
export * from "./ToolCall.js";
|
@@ -11,6 +10,6 @@ export * from "./ToolExecutionError.js";
|
|
11
10
|
export * from "./WebSearchTool.js";
|
12
11
|
export * from "./execute-tool/index.js";
|
13
12
|
export * from "./generate-tool-call/index.js";
|
14
|
-
export * from "./generate-tool-calls
|
13
|
+
export * from "./generate-tool-calls/index.js";
|
15
14
|
export * from "./use-tool/index.js";
|
16
|
-
export * from "./use-tools
|
15
|
+
export * from "./use-tools/index.js";
|
package/tool/index.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
export * from "./InvalidToolNameError.js";
|
2
1
|
export * from "./NoSuchToolDefinitionError.js";
|
3
2
|
export * from "./Tool.js";
|
4
3
|
export * from "./ToolCall.js";
|
@@ -11,6 +10,6 @@ export * from "./ToolExecutionError.js";
|
|
11
10
|
export * from "./WebSearchTool.js";
|
12
11
|
export * from "./execute-tool/index.js";
|
13
12
|
export * from "./generate-tool-call/index.js";
|
14
|
-
export * from "./generate-tool-calls
|
13
|
+
export * from "./generate-tool-calls/index.js";
|
15
14
|
export * from "./use-tool/index.js";
|
16
|
-
export * from "./use-tools
|
15
|
+
export * from "./use-tools/index.js";
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../../core/FunctionEvent.js";
|
2
|
+
export interface useToolsStartedEvent extends BaseFunctionStartedEvent {
|
3
|
+
functionType: "use-tools";
|
4
|
+
}
|
5
|
+
export interface useToolsFinishedEvent extends BaseFunctionFinishedEvent {
|
6
|
+
functionType: "use-tools";
|
7
|
+
}
|
@@ -14,5 +14,5 @@ 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("./
|
18
|
-
__exportStar(require("./
|
17
|
+
__exportStar(require("./UseToolsEvent.cjs"), exports);
|
18
|
+
__exportStar(require("./useTools.cjs"), exports);
|
package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.cjs → use-tools/useTools.cjs}
RENAMED
@@ -1,11 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.useTools = void 0;
|
4
4
|
const executeFunctionCall_js_1 = require("../../core/executeFunctionCall.cjs");
|
5
5
|
const ToolCallError_js_1 = require("../ToolCallError.cjs");
|
6
6
|
const safeExecuteToolCall_js_1 = require("../execute-tool/safeExecuteToolCall.cjs");
|
7
|
-
const
|
8
|
-
async function
|
7
|
+
const generateToolCalls_js_1 = require("../generate-tool-calls/generateToolCalls.cjs");
|
8
|
+
async function useTools(model, tools, prompt, options) {
|
9
9
|
// Note: PROMPT must not be a function.
|
10
10
|
const expandedPrompt = typeof prompt === "function"
|
11
11
|
? prompt(tools)
|
@@ -13,9 +13,9 @@ async function useToolsOrGenerateText(model, tools, prompt, options) {
|
|
13
13
|
return (0, executeFunctionCall_js_1.executeFunctionCall)({
|
14
14
|
options,
|
15
15
|
input: expandedPrompt,
|
16
|
-
functionType: "use-tools
|
16
|
+
functionType: "use-tools",
|
17
17
|
execute: async (options) => {
|
18
|
-
const modelResponse = await (0,
|
18
|
+
const modelResponse = await (0, generateToolCalls_js_1.generateToolCalls)(model, tools, expandedPrompt, { ...options, fullResponse: false });
|
19
19
|
const { toolCalls, text } = modelResponse;
|
20
20
|
// no tool calls:
|
21
21
|
if (toolCalls == null) {
|
@@ -45,4 +45,4 @@ async function useToolsOrGenerateText(model, tools, prompt, options) {
|
|
45
45
|
},
|
46
46
|
});
|
47
47
|
}
|
48
|
-
exports.
|
48
|
+
exports.useTools = useTools;
|
package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.d.ts → use-tools/useTools.d.ts}
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { FunctionOptions } from "../../core/FunctionOptions.js";
|
2
2
|
import { Tool } from "../Tool.js";
|
3
3
|
import { ToolCallResult } from "../ToolCallResult.js";
|
4
|
-
import {
|
4
|
+
import { ToolCallsGenerationModel, ToolCallsGenerationModelSettings } from "../generate-tool-calls/ToolCallsGenerationModel.js";
|
5
5
|
type ToolArray<T extends Tool<any, any, any>[]> = T;
|
6
6
|
type ToToolMap<T extends ToolArray<Tool<any, any, any>[]>> = {
|
7
7
|
[K in T[number]["name"]]: Extract<T[number], Tool<K, any, any>>;
|
@@ -11,7 +11,7 @@ type ToToolCallUnion<T> = {
|
|
11
11
|
[KEY in StringKeys<T>]: T[KEY] extends Tool<any, infer PARAMETERS, infer OUTPUT> ? ToolCallResult<KEY, PARAMETERS, OUTPUT> : never;
|
12
12
|
}[StringKeys<T>];
|
13
13
|
type ToOutputValue<TOOLS extends ToolArray<Tool<any, any, any>[]>> = ToToolCallUnion<ToToolMap<TOOLS>>;
|
14
|
-
export declare function
|
14
|
+
export declare function useTools<PROMPT, TOOLS extends Array<Tool<any, any, any>>>(model: ToolCallsGenerationModel<PROMPT, ToolCallsGenerationModelSettings>, tools: TOOLS, prompt: PROMPT | ((tools: TOOLS) => PROMPT), options?: FunctionOptions): Promise<{
|
15
15
|
text: string | null;
|
16
16
|
toolResults: Array<ToOutputValue<TOOLS>> | null;
|
17
17
|
}>;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { executeFunctionCall } from "../../core/executeFunctionCall.js";
|
2
2
|
import { ToolCallError } from "../ToolCallError.js";
|
3
3
|
import { safeExecuteToolCall } from "../execute-tool/safeExecuteToolCall.js";
|
4
|
-
import {
|
5
|
-
export async function
|
4
|
+
import { generateToolCalls } from "../generate-tool-calls/generateToolCalls.js";
|
5
|
+
export async function useTools(model, tools, prompt, options) {
|
6
6
|
// Note: PROMPT must not be a function.
|
7
7
|
const expandedPrompt = typeof prompt === "function"
|
8
8
|
? prompt(tools)
|
@@ -10,9 +10,9 @@ export async function useToolsOrGenerateText(model, tools, prompt, options) {
|
|
10
10
|
return executeFunctionCall({
|
11
11
|
options,
|
12
12
|
input: expandedPrompt,
|
13
|
-
functionType: "use-tools
|
13
|
+
functionType: "use-tools",
|
14
14
|
execute: async (options) => {
|
15
|
-
const modelResponse = await
|
15
|
+
const modelResponse = await generateToolCalls(model, tools, expandedPrompt, { ...options, fullResponse: false });
|
16
16
|
const { toolCalls, text } = modelResponse;
|
17
17
|
// no tool calls:
|
18
18
|
if (toolCalls == null) {
|
@@ -1,17 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.InvalidToolNameError = void 0;
|
4
|
-
class InvalidToolNameError extends Error {
|
5
|
-
constructor({ toolName, namePattern, }) {
|
6
|
-
super(`Invalid tool name '${toolName}'. The tool name must match the regular expression pattern ${namePattern}.`);
|
7
|
-
Object.defineProperty(this, "toolName", {
|
8
|
-
enumerable: true,
|
9
|
-
configurable: true,
|
10
|
-
writable: true,
|
11
|
-
value: void 0
|
12
|
-
});
|
13
|
-
this.name = "InvalidToolNameError";
|
14
|
-
this.toolName = toolName;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
exports.InvalidToolNameError = InvalidToolNameError;
|
@@ -1,13 +0,0 @@
|
|
1
|
-
export class InvalidToolNameError extends Error {
|
2
|
-
constructor({ toolName, namePattern, }) {
|
3
|
-
super(`Invalid tool name '${toolName}'. The tool name must match the regular expression pattern ${namePattern}.`);
|
4
|
-
Object.defineProperty(this, "toolName", {
|
5
|
-
enumerable: true,
|
6
|
-
configurable: true,
|
7
|
-
writable: true,
|
8
|
-
value: void 0
|
9
|
-
});
|
10
|
-
this.name = "InvalidToolNameError";
|
11
|
-
this.toolName = toolName;
|
12
|
-
}
|
13
|
-
}
|