modelfusion 0.78.0 → 0.80.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 (77) hide show
  1. package/README.md +4 -3
  2. package/model-function/generate-text/PromptFormatTextGenerationModel.cjs +14 -0
  3. package/model-function/generate-text/PromptFormatTextGenerationModel.d.ts +4 -0
  4. package/model-function/generate-text/PromptFormatTextGenerationModel.js +14 -0
  5. package/model-function/generate-text/prompt-format/AlpacaPromptFormat.cjs +10 -10
  6. package/model-function/generate-text/prompt-format/AlpacaPromptFormat.d.ts +2 -2
  7. package/model-function/generate-text/prompt-format/AlpacaPromptFormat.js +10 -10
  8. package/model-function/generate-text/prompt-format/ChatMLPromptFormat.cjs +15 -10
  9. package/model-function/generate-text/prompt-format/ChatMLPromptFormat.d.ts +3 -3
  10. package/model-function/generate-text/prompt-format/ChatMLPromptFormat.js +15 -10
  11. package/model-function/generate-text/prompt-format/ChatPrompt.cjs +24 -0
  12. package/model-function/generate-text/prompt-format/ChatPrompt.d.ts +6 -0
  13. package/model-function/generate-text/prompt-format/ChatPrompt.js +22 -1
  14. package/model-function/generate-text/prompt-format/Content.cjs +2 -0
  15. package/model-function/generate-text/prompt-format/Content.d.ts +20 -0
  16. package/model-function/generate-text/prompt-format/Content.js +1 -0
  17. package/model-function/generate-text/prompt-format/InstructionPrompt.d.ts +21 -16
  18. package/model-function/generate-text/prompt-format/InvalidPromptError.cjs +28 -0
  19. package/model-function/generate-text/prompt-format/InvalidPromptError.d.ts +13 -0
  20. package/model-function/generate-text/prompt-format/InvalidPromptError.js +24 -0
  21. package/model-function/generate-text/prompt-format/Llama2PromptFormat.cjs +14 -10
  22. package/model-function/generate-text/prompt-format/Llama2PromptFormat.d.ts +3 -3
  23. package/model-function/generate-text/prompt-format/Llama2PromptFormat.js +14 -10
  24. package/model-function/generate-text/prompt-format/TextPromptFormat.cjs +11 -11
  25. package/model-function/generate-text/prompt-format/TextPromptFormat.d.ts +3 -3
  26. package/model-function/generate-text/prompt-format/TextPromptFormat.js +11 -11
  27. package/model-function/generate-text/prompt-format/VicunaPromptFormat.cjs +6 -6
  28. package/model-function/generate-text/prompt-format/VicunaPromptFormat.d.ts +1 -1
  29. package/model-function/generate-text/prompt-format/VicunaPromptFormat.js +6 -6
  30. package/model-function/generate-text/prompt-format/index.cjs +2 -2
  31. package/model-function/generate-text/prompt-format/index.d.ts +2 -2
  32. package/model-function/generate-text/prompt-format/index.js +2 -2
  33. package/model-function/generate-text/prompt-format/trimChatPrompt.cjs +2 -2
  34. package/model-function/generate-text/prompt-format/trimChatPrompt.d.ts +1 -1
  35. package/model-function/generate-text/prompt-format/trimChatPrompt.js +1 -1
  36. package/model-provider/anthropic/AnthropicPromptFormat.cjs +10 -10
  37. package/model-provider/anthropic/AnthropicPromptFormat.d.ts +3 -3
  38. package/model-provider/anthropic/AnthropicPromptFormat.js +10 -10
  39. package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +1 -1
  40. package/model-provider/cohere/CohereTextGenerationModel.d.ts +1 -1
  41. package/model-provider/llamacpp/LlamaCppBakLLaVA1Format.cjs +20 -11
  42. package/model-provider/llamacpp/LlamaCppBakLLaVA1Format.js +20 -11
  43. package/model-provider/ollama/OllamaTextGenerationModel.cjs +7 -0
  44. package/model-provider/ollama/OllamaTextGenerationModel.d.ts +2 -0
  45. package/model-provider/ollama/OllamaTextGenerationModel.js +7 -0
  46. package/model-provider/openai/OpenAICompletionModel.d.ts +1 -1
  47. package/model-provider/openai/chat/OpenAIChatMessage.cjs +19 -14
  48. package/model-provider/openai/chat/OpenAIChatMessage.d.ts +2 -5
  49. package/model-provider/openai/chat/OpenAIChatMessage.js +19 -14
  50. package/model-provider/openai/chat/OpenAIChatModel.d.ts +1 -1
  51. package/model-provider/openai/chat/OpenAIChatPromptFormat.cjs +11 -13
  52. package/model-provider/openai/chat/OpenAIChatPromptFormat.d.ts +2 -2
  53. package/model-provider/openai/chat/OpenAIChatPromptFormat.js +11 -13
  54. package/package.json +1 -1
  55. package/tool/generate-tool-call/TextGenerationToolCallModel.cjs +1 -1
  56. package/tool/generate-tool-call/TextGenerationToolCallModel.js +1 -1
  57. package/tool/{ToolCallParseError.cjs → generate-tool-call/ToolCallParseError.cjs} +1 -1
  58. package/tool/{ToolCallParseError.js → generate-tool-call/ToolCallParseError.js} +1 -1
  59. package/tool/generate-tool-call/index.cjs +1 -0
  60. package/tool/generate-tool-call/index.d.ts +1 -0
  61. package/tool/generate-tool-call/index.js +1 -0
  62. package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.cjs +60 -0
  63. package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.d.ts +41 -0
  64. package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.js +56 -0
  65. package/tool/generate-tool-calls-or-text/ToolCallsOrTextParseError.cjs +36 -0
  66. package/tool/generate-tool-calls-or-text/ToolCallsOrTextParseError.d.ts +15 -0
  67. package/tool/generate-tool-calls-or-text/ToolCallsOrTextParseError.js +32 -0
  68. package/tool/generate-tool-calls-or-text/index.cjs +2 -0
  69. package/tool/generate-tool-calls-or-text/index.d.ts +2 -0
  70. package/tool/generate-tool-calls-or-text/index.js +2 -0
  71. package/model-function/generate-text/prompt-format/ChatPromptValidationError.cjs +0 -17
  72. package/model-function/generate-text/prompt-format/ChatPromptValidationError.d.ts +0 -8
  73. package/model-function/generate-text/prompt-format/ChatPromptValidationError.js +0 -13
  74. package/model-function/generate-text/prompt-format/validateChatPrompt.cjs +0 -24
  75. package/model-function/generate-text/prompt-format/validateChatPrompt.d.ts +0 -5
  76. package/model-function/generate-text/prompt-format/validateChatPrompt.js +0 -20
  77. /package/tool/{ToolCallParseError.d.ts → generate-tool-call/ToolCallParseError.d.ts} +0 -0
@@ -3,20 +3,25 @@ export const OpenAIChatMessage = {
3
3
  return { role: "system", content };
4
4
  },
5
5
  user(content, options) {
6
- if (options?.image != null) {
7
- return {
8
- role: "user",
9
- content: [
10
- { type: "text", text: content },
11
- {
12
- type: "image_url",
13
- image_url: `data:${options.image.mimeType ?? "image/jpeg"};base64,${options.image.base64Content}`,
14
- },
15
- ],
16
- name: options.name,
17
- };
18
- }
19
- return { role: "user", content, name: options?.name };
6
+ return {
7
+ role: "user",
8
+ content: typeof content === "string"
9
+ ? content
10
+ : content.map((element) => {
11
+ switch (element.type) {
12
+ case "text": {
13
+ return { type: "text", text: element.text };
14
+ }
15
+ case "image": {
16
+ return {
17
+ type: "image_url",
18
+ image_url: `data:${element.mimeType ?? "image/jpeg"};base64,${element.base64Image}`,
19
+ };
20
+ }
21
+ }
22
+ }),
23
+ name: options?.name,
24
+ };
20
25
  },
21
26
  /**
22
27
  * Creates an assistant chat message. The assistant message can optionally contain tool calls.
@@ -382,7 +382,7 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
382
382
  /**
383
383
  * Returns this model with an instruction prompt format.
384
384
  */
385
- withInstructionPrompt(): PromptFormatTextStreamingModel<import("../../../index.js").InstructionPrompt, OpenAIChatMessage[], OpenAIChatSettings, this>;
385
+ withInstructionPrompt(): PromptFormatTextStreamingModel<import("../../../index.js").InstructionPrompt | import("../../../index.js").TextInstructionPrompt, OpenAIChatMessage[], OpenAIChatSettings, this>;
386
386
  /**
387
387
  * Returns this model with a chat prompt format.
388
388
  */
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.chat = exports.instruction = exports.text = void 0;
4
- const validateChatPrompt_js_1 = require("../../../model-function/generate-text/prompt-format/validateChatPrompt.cjs");
4
+ const ChatPrompt_js_1 = require("../../../model-function/generate-text/prompt-format/ChatPrompt.cjs");
5
5
  const OpenAIChatMessage_js_1 = require("./OpenAIChatMessage.cjs");
6
6
  /**
7
7
  * Formats a text prompt as an OpenAI chat prompt.
8
8
  */
9
9
  function text() {
10
10
  return {
11
- format: (instruction) => [OpenAIChatMessage_js_1.OpenAIChatMessage.user(instruction)],
11
+ format: (prompt) => [OpenAIChatMessage_js_1.OpenAIChatMessage.user(prompt)],
12
12
  stopSequences: [],
13
13
  };
14
14
  }
@@ -18,14 +18,12 @@ exports.text = text;
18
18
  */
19
19
  function instruction() {
20
20
  return {
21
- format: (instruction) => {
21
+ format(prompt) {
22
22
  const messages = [];
23
- if (instruction.system != null) {
24
- messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.system(instruction.system));
23
+ if (prompt.system != null) {
24
+ messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.system(prompt.system));
25
25
  }
26
- messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.user(instruction.instruction, {
27
- image: instruction.image,
28
- }));
26
+ messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.user(prompt.instruction));
29
27
  return messages;
30
28
  },
31
29
  stopSequences: [],
@@ -37,13 +35,13 @@ exports.instruction = instruction;
37
35
  */
38
36
  function chat() {
39
37
  return {
40
- format: (chatPrompt) => {
41
- (0, validateChatPrompt_js_1.validateChatPrompt)(chatPrompt);
38
+ format(prompt) {
39
+ (0, ChatPrompt_js_1.validateChatPrompt)(prompt);
42
40
  const messages = [];
43
- if (chatPrompt.system != null) {
44
- messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.system(chatPrompt.system));
41
+ if (prompt.system != null) {
42
+ messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.system(prompt.system));
45
43
  }
46
- for (const { role, content } of chatPrompt.messages) {
44
+ for (const { role, content } of prompt.messages) {
47
45
  switch (role) {
48
46
  case "user": {
49
47
  messages.push(OpenAIChatMessage_js_1.OpenAIChatMessage.user(content));
@@ -1,6 +1,6 @@
1
1
  import { TextGenerationPromptFormat } from "../../../model-function/generate-text/TextGenerationPromptFormat.js";
2
2
  import { ChatPrompt } from "../../../model-function/generate-text/prompt-format/ChatPrompt.js";
3
- import { InstructionPrompt } from "../../../model-function/generate-text/prompt-format/InstructionPrompt.js";
3
+ import { InstructionPrompt, TextInstructionPrompt } from "../../../model-function/generate-text/prompt-format/InstructionPrompt.js";
4
4
  import { OpenAIChatMessage } from "./OpenAIChatMessage.js";
5
5
  /**
6
6
  * Formats a text prompt as an OpenAI chat prompt.
@@ -9,7 +9,7 @@ export declare function text(): TextGenerationPromptFormat<string, Array<OpenAIC
9
9
  /**
10
10
  * Formats an instruction prompt as an OpenAI chat prompt.
11
11
  */
12
- export declare function instruction(): TextGenerationPromptFormat<InstructionPrompt, Array<OpenAIChatMessage>>;
12
+ export declare function instruction(): TextGenerationPromptFormat<InstructionPrompt | TextInstructionPrompt, Array<OpenAIChatMessage>>;
13
13
  /**
14
14
  * Formats a chat prompt as an OpenAI chat prompt.
15
15
  */
@@ -1,11 +1,11 @@
1
- import { validateChatPrompt } from "../../../model-function/generate-text/prompt-format/validateChatPrompt.js";
1
+ import { validateChatPrompt } from "../../../model-function/generate-text/prompt-format/ChatPrompt.js";
2
2
  import { OpenAIChatMessage } from "./OpenAIChatMessage.js";
3
3
  /**
4
4
  * Formats a text prompt as an OpenAI chat prompt.
5
5
  */
6
6
  export function text() {
7
7
  return {
8
- format: (instruction) => [OpenAIChatMessage.user(instruction)],
8
+ format: (prompt) => [OpenAIChatMessage.user(prompt)],
9
9
  stopSequences: [],
10
10
  };
11
11
  }
@@ -14,14 +14,12 @@ export function text() {
14
14
  */
15
15
  export function instruction() {
16
16
  return {
17
- format: (instruction) => {
17
+ format(prompt) {
18
18
  const messages = [];
19
- if (instruction.system != null) {
20
- messages.push(OpenAIChatMessage.system(instruction.system));
19
+ if (prompt.system != null) {
20
+ messages.push(OpenAIChatMessage.system(prompt.system));
21
21
  }
22
- messages.push(OpenAIChatMessage.user(instruction.instruction, {
23
- image: instruction.image,
24
- }));
22
+ messages.push(OpenAIChatMessage.user(prompt.instruction));
25
23
  return messages;
26
24
  },
27
25
  stopSequences: [],
@@ -32,13 +30,13 @@ export function instruction() {
32
30
  */
33
31
  export function chat() {
34
32
  return {
35
- format: (chatPrompt) => {
36
- validateChatPrompt(chatPrompt);
33
+ format(prompt) {
34
+ validateChatPrompt(prompt);
37
35
  const messages = [];
38
- if (chatPrompt.system != null) {
39
- messages.push(OpenAIChatMessage.system(chatPrompt.system));
36
+ if (prompt.system != null) {
37
+ messages.push(OpenAIChatMessage.system(prompt.system));
40
38
  }
41
- for (const { role, content } of chatPrompt.messages) {
39
+ for (const { role, content } of prompt.messages) {
42
40
  switch (role) {
43
41
  case "user": {
44
42
  messages.push(OpenAIChatMessage.user(content));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modelfusion",
3
3
  "description": "The TypeScript library for building multi-modal AI applications.",
4
- "version": "0.78.0",
4
+ "version": "0.80.0",
5
5
  "author": "Lars Grammel",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TextGenerationToolCallModel = void 0;
4
4
  const generateText_js_1 = require("../../model-function/generate-text/generateText.cjs");
5
- const ToolCallParseError_js_1 = require("../ToolCallParseError.cjs");
5
+ const ToolCallParseError_js_1 = require("./ToolCallParseError.cjs");
6
6
  class TextGenerationToolCallModel {
7
7
  constructor({ model, format, }) {
8
8
  Object.defineProperty(this, "model", {
@@ -1,5 +1,5 @@
1
1
  import { generateText } from "../../model-function/generate-text/generateText.js";
2
- import { ToolCallParseError } from "../ToolCallParseError.js";
2
+ import { ToolCallParseError } from "./ToolCallParseError.js";
3
3
  export class TextGenerationToolCallModel {
4
4
  constructor({ model, format, }) {
5
5
  Object.defineProperty(this, "model", {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ToolCallParseError = void 0;
4
- const getErrorMessage_js_1 = require("../util/getErrorMessage.cjs");
4
+ const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
5
5
  class ToolCallParseError extends Error {
6
6
  constructor({ toolName, valueText, cause, }) {
7
7
  super(`Tool call parsing failed for '${toolName}'. ` +
@@ -1,4 +1,4 @@
1
- import { getErrorMessage } from "../util/getErrorMessage.js";
1
+ import { getErrorMessage } from "../../util/getErrorMessage.js";
2
2
  export class ToolCallParseError extends Error {
3
3
  constructor({ toolName, valueText, cause, }) {
4
4
  super(`Tool call parsing failed for '${toolName}'. ` +
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./TextGenerationToolCallModel.cjs"), exports);
18
18
  __exportStar(require("./ToolCallGenerationEvent.cjs"), exports);
19
19
  __exportStar(require("./ToolCallGenerationModel.cjs"), exports);
20
+ __exportStar(require("./ToolCallParseError.cjs"), exports);
20
21
  __exportStar(require("./generateToolCall.cjs"), exports);
@@ -1,4 +1,5 @@
1
1
  export * from "./TextGenerationToolCallModel.js";
2
2
  export * from "./ToolCallGenerationEvent.js";
3
3
  export * from "./ToolCallGenerationModel.js";
4
+ export * from "./ToolCallParseError.js";
4
5
  export * from "./generateToolCall.js";
@@ -1,4 +1,5 @@
1
1
  export * from "./TextGenerationToolCallModel.js";
2
2
  export * from "./ToolCallGenerationEvent.js";
3
3
  export * from "./ToolCallGenerationModel.js";
4
+ export * from "./ToolCallParseError.js";
4
5
  export * from "./generateToolCall.js";
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextGenerationToolCallsOrGenerateTextModel = void 0;
4
+ const generateText_js_1 = require("../../model-function/generate-text/generateText.cjs");
5
+ const ToolCallsOrTextParseError_js_1 = require("./ToolCallsOrTextParseError.cjs");
6
+ class TextGenerationToolCallsOrGenerateTextModel {
7
+ constructor({ model, format, }) {
8
+ Object.defineProperty(this, "model", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: void 0
13
+ });
14
+ Object.defineProperty(this, "format", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: void 0
19
+ });
20
+ this.model = model;
21
+ this.format = format;
22
+ }
23
+ get modelInformation() {
24
+ return this.model.modelInformation;
25
+ }
26
+ get settings() {
27
+ return this.model.settings;
28
+ }
29
+ get settingsForEvent() {
30
+ return this.model.settingsForEvent;
31
+ }
32
+ async doGenerateToolCallsOrText(tools, prompt, options) {
33
+ const { response, value, metadata } = await (0, generateText_js_1.generateText)(this.model, this.format.createPrompt(prompt, tools), {
34
+ ...options,
35
+ returnType: "full",
36
+ });
37
+ try {
38
+ const { text, toolCalls } = this.format.extractToolCallsAndText(value);
39
+ return {
40
+ response,
41
+ text,
42
+ toolCalls,
43
+ usage: metadata?.usage,
44
+ };
45
+ }
46
+ catch (error) {
47
+ throw new ToolCallsOrTextParseError_js_1.ToolCallsOrTextParseError({
48
+ valueText: value,
49
+ cause: error,
50
+ });
51
+ }
52
+ }
53
+ withSettings(additionalSettings) {
54
+ return new TextGenerationToolCallsOrGenerateTextModel({
55
+ model: this.model.withSettings(additionalSettings),
56
+ format: this.format,
57
+ });
58
+ }
59
+ }
60
+ exports.TextGenerationToolCallsOrGenerateTextModel = TextGenerationToolCallsOrGenerateTextModel;
@@ -0,0 +1,41 @@
1
+ import { FunctionOptions } from "../../core/FunctionOptions.js";
2
+ import { TextGenerationModel } from "../../model-function/generate-text/TextGenerationModel.js";
3
+ import { ToolDefinition } from "../ToolDefinition.js";
4
+ import { ToolCallsOrTextGenerationModel, ToolCallsOrTextGenerationModelSettings } from "./ToolCallsOrTextGenerationModel.js";
5
+ export interface ToolCallsOrGenerateTextPromptFormat<SOURCE_PROMPT, TARGET_PROMPT> {
6
+ createPrompt: (prompt: SOURCE_PROMPT, tools: Array<ToolDefinition<string, unknown>>) => TARGET_PROMPT;
7
+ extractToolCallsAndText: (response: string) => {
8
+ text: string | null;
9
+ toolCalls: Array<{
10
+ id: string;
11
+ name: string;
12
+ args: unknown;
13
+ }> | null;
14
+ };
15
+ }
16
+ export declare class TextGenerationToolCallsOrGenerateTextModel<SOURCE_PROMPT, TARGET_PROMPT, MODEL extends TextGenerationModel<TARGET_PROMPT, ToolCallsOrTextGenerationModelSettings>> implements ToolCallsOrTextGenerationModel<SOURCE_PROMPT, MODEL["settings"]> {
17
+ private readonly model;
18
+ private readonly format;
19
+ constructor({ model, format, }: {
20
+ model: MODEL;
21
+ format: ToolCallsOrGenerateTextPromptFormat<SOURCE_PROMPT, TARGET_PROMPT>;
22
+ });
23
+ get modelInformation(): import("../../index.js").ModelInformation;
24
+ get settings(): ToolCallsOrTextGenerationModelSettings;
25
+ get settingsForEvent(): Partial<MODEL["settings"]>;
26
+ doGenerateToolCallsOrText(tools: Array<ToolDefinition<string, unknown>>, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
27
+ response: unknown;
28
+ text: string | null;
29
+ toolCalls: {
30
+ id: string;
31
+ name: string;
32
+ args: unknown;
33
+ }[] | null;
34
+ usage: {
35
+ promptTokens: number;
36
+ completionTokens: number;
37
+ totalTokens: number;
38
+ } | undefined;
39
+ }>;
40
+ withSettings(additionalSettings: Partial<MODEL["settings"]>): this;
41
+ }
@@ -0,0 +1,56 @@
1
+ import { generateText } from "../../model-function/generate-text/generateText.js";
2
+ import { ToolCallsOrTextParseError } from "./ToolCallsOrTextParseError.js";
3
+ export class TextGenerationToolCallsOrGenerateTextModel {
4
+ constructor({ model, format, }) {
5
+ Object.defineProperty(this, "model", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: void 0
10
+ });
11
+ Object.defineProperty(this, "format", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ this.model = model;
18
+ this.format = format;
19
+ }
20
+ get modelInformation() {
21
+ return this.model.modelInformation;
22
+ }
23
+ get settings() {
24
+ return this.model.settings;
25
+ }
26
+ get settingsForEvent() {
27
+ return this.model.settingsForEvent;
28
+ }
29
+ async doGenerateToolCallsOrText(tools, prompt, options) {
30
+ const { response, value, metadata } = await generateText(this.model, this.format.createPrompt(prompt, tools), {
31
+ ...options,
32
+ returnType: "full",
33
+ });
34
+ try {
35
+ const { text, toolCalls } = this.format.extractToolCallsAndText(value);
36
+ return {
37
+ response,
38
+ text,
39
+ toolCalls,
40
+ usage: metadata?.usage,
41
+ };
42
+ }
43
+ catch (error) {
44
+ throw new ToolCallsOrTextParseError({
45
+ valueText: value,
46
+ cause: error,
47
+ });
48
+ }
49
+ }
50
+ withSettings(additionalSettings) {
51
+ return new TextGenerationToolCallsOrGenerateTextModel({
52
+ model: this.model.withSettings(additionalSettings),
53
+ format: this.format,
54
+ });
55
+ }
56
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolCallsOrTextParseError = void 0;
4
+ const getErrorMessage_js_1 = require("../../util/getErrorMessage.cjs");
5
+ class ToolCallsOrTextParseError extends Error {
6
+ constructor({ valueText, cause }) {
7
+ super(`Tool calls or text parsing failed. ` +
8
+ `Value: ${valueText}.\n` +
9
+ `Error message: ${(0, getErrorMessage_js_1.getErrorMessage)(cause)}`);
10
+ Object.defineProperty(this, "valueText", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: void 0
15
+ });
16
+ Object.defineProperty(this, "cause", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ this.name = "ToolCallsOrTextParseError";
23
+ this.cause = cause;
24
+ this.valueText = valueText;
25
+ }
26
+ toJSON() {
27
+ return {
28
+ name: this.name,
29
+ cause: this.cause,
30
+ message: this.message,
31
+ stack: this.stack,
32
+ valueText: this.valueText,
33
+ };
34
+ }
35
+ }
36
+ exports.ToolCallsOrTextParseError = ToolCallsOrTextParseError;
@@ -0,0 +1,15 @@
1
+ export declare class ToolCallsOrTextParseError extends Error {
2
+ readonly valueText: string;
3
+ readonly cause: unknown;
4
+ constructor({ valueText, cause }: {
5
+ valueText: string;
6
+ cause: unknown;
7
+ });
8
+ toJSON(): {
9
+ name: string;
10
+ cause: unknown;
11
+ message: string;
12
+ stack: string | undefined;
13
+ valueText: string;
14
+ };
15
+ }
@@ -0,0 +1,32 @@
1
+ import { getErrorMessage } from "../../util/getErrorMessage.js";
2
+ export class ToolCallsOrTextParseError extends Error {
3
+ constructor({ valueText, cause }) {
4
+ super(`Tool calls or text parsing failed. ` +
5
+ `Value: ${valueText}.\n` +
6
+ `Error message: ${getErrorMessage(cause)}`);
7
+ Object.defineProperty(this, "valueText", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: void 0
12
+ });
13
+ Object.defineProperty(this, "cause", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: void 0
18
+ });
19
+ this.name = "ToolCallsOrTextParseError";
20
+ this.cause = cause;
21
+ this.valueText = valueText;
22
+ }
23
+ toJSON() {
24
+ return {
25
+ name: this.name,
26
+ cause: this.cause,
27
+ message: this.message,
28
+ stack: this.stack,
29
+ valueText: this.valueText,
30
+ };
31
+ }
32
+ }
@@ -14,6 +14,8 @@ 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);
17
18
  __exportStar(require("./ToolCallsOrTextGenerationEvent.cjs"), exports);
18
19
  __exportStar(require("./ToolCallsOrTextGenerationModel.cjs"), exports);
20
+ __exportStar(require("./ToolCallsOrTextParseError.cjs"), exports);
19
21
  __exportStar(require("./generateToolCallsOrText.cjs"), exports);
@@ -1,3 +1,5 @@
1
+ export * from "./TextGenerationToolCallsOrGenerateTextModel.js";
1
2
  export * from "./ToolCallsOrTextGenerationEvent.js";
2
3
  export * from "./ToolCallsOrTextGenerationModel.js";
4
+ export * from "./ToolCallsOrTextParseError.js";
3
5
  export * from "./generateToolCallsOrText.js";
@@ -1,3 +1,5 @@
1
+ export * from "./TextGenerationToolCallsOrGenerateTextModel.js";
1
2
  export * from "./ToolCallsOrTextGenerationEvent.js";
2
3
  export * from "./ToolCallsOrTextGenerationModel.js";
4
+ export * from "./ToolCallsOrTextParseError.js";
3
5
  export * from "./generateToolCallsOrText.js";
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChatPromptValidationError = void 0;
4
- class ChatPromptValidationError extends Error {
5
- constructor(message) {
6
- super(message);
7
- this.name = "ChatPromptValidationError";
8
- }
9
- toJSON() {
10
- return {
11
- name: this.name,
12
- message: this.message,
13
- stack: this.stack,
14
- };
15
- }
16
- }
17
- exports.ChatPromptValidationError = ChatPromptValidationError;
@@ -1,8 +0,0 @@
1
- export declare class ChatPromptValidationError extends Error {
2
- constructor(message: string);
3
- toJSON(): {
4
- name: string;
5
- message: string;
6
- stack: string | undefined;
7
- };
8
- }
@@ -1,13 +0,0 @@
1
- export class ChatPromptValidationError extends Error {
2
- constructor(message) {
3
- super(message);
4
- this.name = "ChatPromptValidationError";
5
- }
6
- toJSON() {
7
- return {
8
- name: this.name,
9
- message: this.message,
10
- stack: this.stack,
11
- };
12
- }
13
- }
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateChatPrompt = void 0;
4
- const ChatPromptValidationError_js_1 = require("./ChatPromptValidationError.cjs");
5
- /**
6
- * Checks if a chat prompt is valid. Throws a `ChatPromptValidationError` if it's not.
7
- */
8
- function validateChatPrompt(chatPrompt) {
9
- const messages = chatPrompt.messages;
10
- if (messages.length < 1) {
11
- throw new ChatPromptValidationError_js_1.ChatPromptValidationError("ChatPrompt should have at least one message.");
12
- }
13
- for (let i = 0; i < messages.length; i++) {
14
- const expectedRole = i % 2 === 0 ? "user" : "assistant";
15
- const role = messages[i].role;
16
- if (role !== expectedRole) {
17
- throw new ChatPromptValidationError_js_1.ChatPromptValidationError(`Message at index ${i} should have role '${expectedRole}', but has role '${role}'.`);
18
- }
19
- }
20
- if (messages.length % 2 === 0) {
21
- throw new ChatPromptValidationError_js_1.ChatPromptValidationError("The last message must be a user message.");
22
- }
23
- }
24
- exports.validateChatPrompt = validateChatPrompt;
@@ -1,5 +0,0 @@
1
- import { ChatPrompt } from "./ChatPrompt.js";
2
- /**
3
- * Checks if a chat prompt is valid. Throws a `ChatPromptValidationError` if it's not.
4
- */
5
- export declare function validateChatPrompt(chatPrompt: ChatPrompt): void;
@@ -1,20 +0,0 @@
1
- import { ChatPromptValidationError } from "./ChatPromptValidationError.js";
2
- /**
3
- * Checks if a chat prompt is valid. Throws a `ChatPromptValidationError` if it's not.
4
- */
5
- export function validateChatPrompt(chatPrompt) {
6
- const messages = chatPrompt.messages;
7
- if (messages.length < 1) {
8
- throw new ChatPromptValidationError("ChatPrompt should have at least one message.");
9
- }
10
- for (let i = 0; i < messages.length; i++) {
11
- const expectedRole = i % 2 === 0 ? "user" : "assistant";
12
- const role = messages[i].role;
13
- if (role !== expectedRole) {
14
- throw new ChatPromptValidationError(`Message at index ${i} should have role '${expectedRole}', but has role '${role}'.`);
15
- }
16
- }
17
- if (messages.length % 2 === 0) {
18
- throw new ChatPromptValidationError("The last message must be a user message.");
19
- }
20
- }