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.
Files changed (81) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +26 -154
  3. package/core/FunctionEvent.d.ts +3 -3
  4. package/model-function/ModelCallEvent.d.ts +3 -3
  5. package/model-function/generate-structure/StructureFromTextPromptTemplate.d.ts +13 -0
  6. package/model-function/generate-structure/jsonStructurePrompt.cjs +12 -0
  7. package/model-function/generate-structure/jsonStructurePrompt.d.ts +3 -3
  8. package/model-function/generate-structure/jsonStructurePrompt.js +12 -0
  9. package/model-function/generate-text/PromptTemplateFullTextModel.cjs +2 -2
  10. package/model-function/generate-text/PromptTemplateFullTextModel.d.ts +3 -3
  11. package/model-function/generate-text/PromptTemplateFullTextModel.js +2 -2
  12. package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +2 -2
  13. package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +3 -3
  14. package/model-function/generate-text/PromptTemplateTextGenerationModel.js +2 -2
  15. package/model-function/generate-text/TextGenerationModel.d.ts +4 -0
  16. package/model-provider/mistral/MistralChatModel.d.ts +4 -4
  17. package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +3 -3
  18. package/model-provider/ollama/OllamaChatModel.cjs +17 -2
  19. package/model-provider/ollama/OllamaChatModel.d.ts +7 -3
  20. package/model-provider/ollama/OllamaChatModel.js +17 -2
  21. package/model-provider/ollama/OllamaCompletionModel.cjs +2 -2
  22. package/model-provider/ollama/OllamaCompletionModel.d.ts +3 -3
  23. package/model-provider/ollama/OllamaCompletionModel.js +2 -2
  24. package/model-provider/openai/AbstractOpenAIChatModel.cjs +1 -1
  25. package/model-provider/openai/AbstractOpenAIChatModel.d.ts +7 -7
  26. package/model-provider/openai/AbstractOpenAIChatModel.js +1 -1
  27. package/model-provider/openai/AbstractOpenAICompletionModel.d.ts +4 -4
  28. package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.d.ts +1 -1
  29. package/model-provider/openai/OpenAIChatModel.cjs +12 -4
  30. package/model-provider/openai/OpenAIChatModel.d.ts +5 -4
  31. package/model-provider/openai/OpenAIChatModel.js +12 -4
  32. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
  33. package/model-provider/openai-compatible/OpenAICompatibleChatModel.cjs +12 -4
  34. package/model-provider/openai-compatible/OpenAICompatibleChatModel.d.ts +5 -4
  35. package/model-provider/openai-compatible/OpenAICompatibleChatModel.js +12 -4
  36. package/package.json +2 -2
  37. package/tool/Tool.cjs +0 -10
  38. package/tool/Tool.d.ts +0 -1
  39. package/tool/Tool.js +0 -10
  40. package/tool/{generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.cjs → generate-tool-calls/TextGenerationToolCallsModel.cjs} +7 -7
  41. package/tool/{generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.d.ts → generate-tool-calls/TextGenerationToolCallsModel.d.ts} +6 -6
  42. package/tool/{generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.js → generate-tool-calls/TextGenerationToolCallsModel.js} +5 -5
  43. package/tool/generate-tool-calls/ToolCallsGenerationEvent.d.ts +23 -0
  44. package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.d.ts → generate-tool-calls/ToolCallsGenerationModel.d.ts} +3 -3
  45. package/tool/{generate-tool-calls-or-text/ToolCallsOrTextParseError.cjs → generate-tool-calls/ToolCallsParseError.cjs} +5 -5
  46. package/tool/{generate-tool-calls-or-text/ToolCallsOrTextParseError.d.ts → generate-tool-calls/ToolCallsParseError.d.ts} +1 -1
  47. package/tool/{generate-tool-calls-or-text/ToolCallsOrTextParseError.js → generate-tool-calls/ToolCallsParseError.js} +3 -3
  48. package/tool/{generate-tool-calls-or-text/ToolCallsOrGenerateTextPromptTemplate.d.ts → generate-tool-calls/ToolCallsPromptTemplate.d.ts} +1 -1
  49. package/tool/{generate-tool-calls-or-text/generateToolCallsOrText.cjs → generate-tool-calls/generateToolCalls.cjs} +5 -5
  50. package/tool/{generate-tool-calls-or-text/generateToolCallsOrText.d.ts → generate-tool-calls/generateToolCalls.d.ts} +3 -3
  51. package/tool/{generate-tool-calls-or-text/generateToolCallsOrText.js → generate-tool-calls/generateToolCalls.js} +3 -3
  52. package/tool/{generate-tool-calls-or-text → generate-tool-calls}/index.cjs +6 -6
  53. package/tool/generate-tool-calls/index.d.ts +6 -0
  54. package/tool/generate-tool-calls/index.js +6 -0
  55. package/tool/index.cjs +2 -3
  56. package/tool/index.d.ts +2 -3
  57. package/tool/index.js +2 -3
  58. package/tool/use-tools/UseToolsEvent.d.ts +7 -0
  59. package/tool/{use-tools-or-generate-text → use-tools}/index.cjs +2 -2
  60. package/tool/use-tools/index.d.ts +2 -0
  61. package/tool/use-tools/index.js +2 -0
  62. package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.cjs → use-tools/useTools.cjs} +6 -6
  63. package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.d.ts → use-tools/useTools.d.ts} +2 -2
  64. package/tool/{use-tools-or-generate-text/useToolsOrGenerateText.js → use-tools/useTools.js} +4 -4
  65. package/tool/InvalidToolNameError.cjs +0 -17
  66. package/tool/InvalidToolNameError.d.ts +0 -7
  67. package/tool/InvalidToolNameError.js +0 -13
  68. package/tool/generate-tool-calls-or-text/ToolCallsOrTextGenerationEvent.d.ts +0 -23
  69. package/tool/generate-tool-calls-or-text/index.d.ts +0 -6
  70. package/tool/generate-tool-calls-or-text/index.js +0 -6
  71. package/tool/use-tools-or-generate-text/UseToolsOrGenerateTextEvent.d.ts +0 -7
  72. package/tool/use-tools-or-generate-text/index.d.ts +0 -2
  73. package/tool/use-tools-or-generate-text/index.js +0 -2
  74. /package/tool/{generate-tool-calls-or-text/ToolCallsOrGenerateTextPromptTemplate.cjs → generate-tool-calls/ToolCallsGenerationEvent.cjs} +0 -0
  75. /package/tool/{generate-tool-calls-or-text/ToolCallsOrGenerateTextPromptTemplate.js → generate-tool-calls/ToolCallsGenerationEvent.js} +0 -0
  76. /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationEvent.cjs → generate-tool-calls/ToolCallsGenerationModel.cjs} +0 -0
  77. /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationEvent.js → generate-tool-calls/ToolCallsGenerationModel.js} +0 -0
  78. /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.cjs → generate-tool-calls/ToolCallsPromptTemplate.cjs} +0 -0
  79. /package/tool/{generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.js → generate-tool-calls/ToolCallsPromptTemplate.js} +0 -0
  80. /package/tool/{use-tools-or-generate-text/UseToolsOrGenerateTextEvent.cjs → use-tools/UseToolsEvent.cjs} +0 -0
  81. /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 new StructureFromTextStreamingModel({
59
- model: this,
60
- template: promptTemplate,
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 multi-modal AI applications.",
4
- "version": "0.111.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.TextGenerationToolCallsOrGenerateTextModel = void 0;
3
+ exports.TextGenerationToolCallsModel = void 0;
4
4
  const generateText_js_1 = require("../../model-function/generate-text/generateText.cjs");
5
- const ToolCallsOrTextParseError_js_1 = require("./ToolCallsOrTextParseError.cjs");
6
- class TextGenerationToolCallsOrGenerateTextModel {
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 doGenerateToolCallsOrText(tools, prompt, options) {
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 ToolCallsOrTextParseError_js_1.ToolCallsOrTextParseError({
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 TextGenerationToolCallsOrGenerateTextModel({
54
+ return new TextGenerationToolCallsModel({
55
55
  model: this.model.withSettings(additionalSettings),
56
56
  template: this.template,
57
57
  });
58
58
  }
59
59
  }
60
- exports.TextGenerationToolCallsOrGenerateTextModel = TextGenerationToolCallsOrGenerateTextModel;
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 { ToolCallsOrGenerateTextPromptTemplate } from "./ToolCallsOrGenerateTextPromptTemplate.js";
5
- import { ToolCallsOrTextGenerationModel, ToolCallsOrTextGenerationModelSettings } from "./ToolCallsOrTextGenerationModel.js";
6
- export declare class TextGenerationToolCallsOrGenerateTextModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL extends TextGenerationModel<TARGET_PROMPT, ToolCallsOrTextGenerationModelSettings>> implements ToolCallsOrTextGenerationModel<SOURCE_PROMPT, MODEL["settings"]> {
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: ToolCallsOrGenerateTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
11
+ template: ToolCallsPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
12
12
  });
13
13
  get modelInformation(): import("../../index.js").ModelInformation;
14
- get settings(): ToolCallsOrTextGenerationModelSettings;
14
+ get settings(): ToolCallsGenerationModelSettings;
15
15
  get settingsForEvent(): Partial<MODEL["settings"]>;
16
- doGenerateToolCallsOrText(tools: Array<ToolDefinition<string, unknown>>, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
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 { ToolCallsOrTextParseError } from "./ToolCallsOrTextParseError.js";
3
- export class TextGenerationToolCallsOrGenerateTextModel {
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 doGenerateToolCallsOrText(tools, prompt, options) {
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 ToolCallsOrTextParseError({
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 TextGenerationToolCallsOrGenerateTextModel({
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 ToolCallsOrTextGenerationModelSettings extends ModelSettings {
4
+ export interface ToolCallsGenerationModelSettings extends ModelSettings {
5
5
  }
6
- export interface ToolCallsOrTextGenerationModel<PROMPT, SETTINGS extends ToolCallsOrTextGenerationModelSettings> extends Model<SETTINGS> {
7
- doGenerateToolCallsOrText(tools: Array<ToolDefinition<string, unknown>>, prompt: PROMPT, options?: FunctionOptions): PromiseLike<{
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.ToolCallsOrTextParseError = void 0;
3
+ exports.ToolCallsParseError = void 0;
4
4
  const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
5
- class ToolCallsOrTextParseError extends Error {
5
+ class ToolCallsParseError extends Error {
6
6
  constructor({ valueText, cause }) {
7
- super(`Tool calls or text parsing failed. ` +
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 = "ToolCallsOrTextParseError";
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.ToolCallsOrTextParseError = ToolCallsOrTextParseError;
36
+ exports.ToolCallsParseError = ToolCallsParseError;
@@ -1,4 +1,4 @@
1
- export declare class ToolCallsOrTextParseError extends Error {
1
+ export declare class ToolCallsParseError extends Error {
2
2
  readonly valueText: string;
3
3
  readonly cause: unknown;
4
4
  constructor({ valueText, cause }: {
@@ -1,7 +1,7 @@
1
1
  import { getErrorMessage } from "../../util/getErrorMessage.js";
2
- export class ToolCallsOrTextParseError extends Error {
2
+ export class ToolCallsParseError extends Error {
3
3
  constructor({ valueText, cause }) {
4
- super(`Tool calls or text parsing failed. ` +
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 = "ToolCallsOrTextParseError";
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 ToolCallsOrGenerateTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> {
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.generateToolCallsOrText = void 0;
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 generateToolCallsOrText(model, tools, prompt, options) {
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-or-text",
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.doGenerateToolCallsOrText(tools, expandedPrompt, options);
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.generateToolCallsOrText = generateToolCallsOrText;
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 { ToolCallsOrTextGenerationModel, ToolCallsOrTextGenerationModelSettings } from "./ToolCallsOrTextGenerationModel.js";
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 generateToolCallsOrText<TOOLS extends Array<ToolDefinition<any, any>>, PROMPT>(model: ToolCallsOrTextGenerationModel<PROMPT, ToolCallsOrTextGenerationModelSettings>, tools: TOOLS, prompt: PROMPT | ((tools: TOOLS) => PROMPT), options?: FunctionOptions & {
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 generateToolCallsOrText<TOOLS extends ToolDefinition<any, any>[], PROMPT>(model: ToolCallsOrTextGenerationModel<PROMPT, ToolCallsOrTextGenerationModelSettings>, tools: TOOLS, prompt: PROMPT | ((tools: TOOLS) => PROMPT), options: FunctionOptions & {
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 generateToolCallsOrText(model, tools, prompt, options) {
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-or-text",
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.doGenerateToolCallsOrText(tools, expandedPrompt, options);
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("./TextGenerationToolCallsOrGenerateTextModel.cjs"), exports);
18
- __exportStar(require("./ToolCallsOrGenerateTextPromptTemplate.cjs"), exports);
19
- __exportStar(require("./ToolCallsOrTextGenerationEvent.cjs"), exports);
20
- __exportStar(require("./ToolCallsOrTextGenerationModel.cjs"), exports);
21
- __exportStar(require("./ToolCallsOrTextParseError.cjs"), exports);
22
- __exportStar(require("./generateToolCallsOrText.cjs"), exports);
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-or-text/index.cjs"), exports);
29
+ __exportStar(require("./generate-tool-calls/index.cjs"), exports);
31
30
  __exportStar(require("./use-tool/index.cjs"), exports);
32
- __exportStar(require("./use-tools-or-generate-text/index.cjs"), exports);
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-or-text/index.js";
13
+ export * from "./generate-tool-calls/index.js";
15
14
  export * from "./use-tool/index.js";
16
- export * from "./use-tools-or-generate-text/index.js";
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-or-text/index.js";
13
+ export * from "./generate-tool-calls/index.js";
15
14
  export * from "./use-tool/index.js";
16
- export * from "./use-tools-or-generate-text/index.js";
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("./UseToolsOrGenerateTextEvent.cjs"), exports);
18
- __exportStar(require("./useToolsOrGenerateText.cjs"), exports);
17
+ __exportStar(require("./UseToolsEvent.cjs"), exports);
18
+ __exportStar(require("./useTools.cjs"), exports);
@@ -0,0 +1,2 @@
1
+ export * from "./UseToolsEvent.js";
2
+ export * from "./useTools.js";
@@ -0,0 +1,2 @@
1
+ export * from "./UseToolsEvent.js";
2
+ export * from "./useTools.js";
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useToolsOrGenerateText = void 0;
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 generateToolCallsOrText_js_1 = require("../generate-tool-calls-or-text/generateToolCallsOrText.cjs");
8
- async function useToolsOrGenerateText(model, tools, prompt, options) {
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-or-generate-text",
16
+ functionType: "use-tools",
17
17
  execute: async (options) => {
18
- const modelResponse = await (0, generateToolCallsOrText_js_1.generateToolCallsOrText)(model, tools, expandedPrompt, { ...options, fullResponse: false });
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.useToolsOrGenerateText = useToolsOrGenerateText;
48
+ exports.useTools = useTools;
@@ -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 { ToolCallsOrTextGenerationModel, ToolCallsOrTextGenerationModelSettings } from "../generate-tool-calls-or-text/ToolCallsOrTextGenerationModel.js";
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 useToolsOrGenerateText<PROMPT, TOOLS extends Array<Tool<any, any, any>>>(model: ToolCallsOrTextGenerationModel<PROMPT, ToolCallsOrTextGenerationModelSettings>, tools: TOOLS, prompt: PROMPT | ((tools: TOOLS) => PROMPT), options?: FunctionOptions): Promise<{
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 { generateToolCallsOrText } from "../generate-tool-calls-or-text/generateToolCallsOrText.js";
5
- export async function useToolsOrGenerateText(model, tools, prompt, options) {
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-or-generate-text",
13
+ functionType: "use-tools",
14
14
  execute: async (options) => {
15
- const modelResponse = await generateToolCallsOrText(model, tools, expandedPrompt, { ...options, fullResponse: false });
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,7 +0,0 @@
1
- export declare class InvalidToolNameError extends Error {
2
- readonly toolName: string;
3
- constructor({ toolName, namePattern, }: {
4
- toolName: string;
5
- namePattern: RegExp;
6
- });
7
- }
@@ -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
- }