modelfusion 0.72.0 → 0.73.1

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.
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ApiCallError = void 0;
4
4
  class ApiCallError extends Error {
5
- constructor({ message, url, requestBodyValues, statusCode, cause, isRetryable = statusCode === 429 || statusCode >= 500, }) {
5
+ constructor({ message, url, requestBodyValues, statusCode, cause, isRetryable = statusCode != null &&
6
+ (statusCode === 429 || statusCode >= 500), }) {
6
7
  super(message);
7
8
  Object.defineProperty(this, "url", {
8
9
  enumerable: true,
@@ -1,14 +1,14 @@
1
1
  export declare class ApiCallError extends Error {
2
2
  readonly url: string;
3
3
  readonly requestBodyValues: unknown;
4
- readonly statusCode: number;
4
+ readonly statusCode?: number;
5
5
  readonly cause?: unknown;
6
6
  readonly isRetryable: boolean;
7
7
  constructor({ message, url, requestBodyValues, statusCode, cause, isRetryable, }: {
8
8
  message: string;
9
9
  url: string;
10
10
  requestBodyValues: unknown;
11
- statusCode: number;
11
+ statusCode?: number;
12
12
  cause?: unknown;
13
13
  isRetryable?: boolean;
14
14
  });
@@ -17,7 +17,7 @@ export declare class ApiCallError extends Error {
17
17
  message: string;
18
18
  url: string;
19
19
  requestBodyValues: unknown;
20
- statusCode: number;
20
+ statusCode: number | undefined;
21
21
  cause: unknown;
22
22
  isRetryable: boolean;
23
23
  };
@@ -1,5 +1,6 @@
1
1
  export class ApiCallError extends Error {
2
- constructor({ message, url, requestBodyValues, statusCode, cause, isRetryable = statusCode === 429 || statusCode >= 500, }) {
2
+ constructor({ message, url, requestBodyValues, statusCode, cause, isRetryable = statusCode != null &&
3
+ (statusCode === 429 || statusCode >= 500), }) {
3
4
  super(message);
4
5
  Object.defineProperty(this, "url", {
5
6
  enumerable: true,
@@ -108,9 +108,16 @@ const postToApi = async ({ url, headers = {}, body, successfulResponseHandler, f
108
108
  // unwrap original error when fetch failed (for easier debugging):
109
109
  if (error instanceof TypeError && error.message === "fetch failed") {
110
110
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
- if (error.cause != null) {
112
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
- throw error.cause;
111
+ const cause = error.cause;
112
+ if (cause != null) {
113
+ // Failed to connect to server:
114
+ throw new ApiCallError_js_1.ApiCallError({
115
+ message: `Cannot connect to API: ${cause.message}`,
116
+ cause,
117
+ url,
118
+ requestBodyValues: body.values,
119
+ isRetryable: true,
120
+ });
114
121
  }
115
122
  }
116
123
  throw error;
@@ -101,9 +101,16 @@ export const postToApi = async ({ url, headers = {}, body, successfulResponseHan
101
101
  // unwrap original error when fetch failed (for easier debugging):
102
102
  if (error instanceof TypeError && error.message === "fetch failed") {
103
103
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
- if (error.cause != null) {
105
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
- throw error.cause;
104
+ const cause = error.cause;
105
+ if (cause != null) {
106
+ // Failed to connect to server:
107
+ throw new ApiCallError({
108
+ message: `Cannot connect to API: ${cause.message}`,
109
+ cause,
110
+ url,
111
+ requestBodyValues: body.values,
112
+ isRetryable: true,
113
+ });
107
114
  }
108
115
  }
109
116
  throw error;
@@ -4,9 +4,9 @@ exports.chat = exports.instruction = void 0;
4
4
  const validateChatPrompt_js_1 = require("./validateChatPrompt.cjs");
5
5
  // see https://github.com/facebookresearch/llama/blob/6c7fe276574e78057f917549435a2554000a876d/llama/generation.py#L44
6
6
  const BEGIN_SEGMENT = "<s>";
7
- const END_SEGMENT = "</s>\n";
7
+ const END_SEGMENT = "</s>";
8
8
  const BEGIN_INSTRUCTION = "[INST]";
9
- const END_INSTRUCTION = "[/INST]\n";
9
+ const END_INSTRUCTION = "[/INST]";
10
10
  const BEGIN_SYSTEM = "<<SYS>>\n";
11
11
  const END_SYSTEM = "\n<</SYS>>\n\n";
12
12
  /**
@@ -1,9 +1,9 @@
1
1
  import { validateChatPrompt } from "./validateChatPrompt.js";
2
2
  // see https://github.com/facebookresearch/llama/blob/6c7fe276574e78057f917549435a2554000a876d/llama/generation.py#L44
3
3
  const BEGIN_SEGMENT = "<s>";
4
- const END_SEGMENT = "</s>\n";
4
+ const END_SEGMENT = "</s>";
5
5
  const BEGIN_INSTRUCTION = "[INST]";
6
- const END_INSTRUCTION = "[/INST]\n";
6
+ const END_INSTRUCTION = "[/INST]";
7
7
  const BEGIN_SYSTEM = "<<SYS>>\n";
8
8
  const END_SYSTEM = "\n<</SYS>>\n\n";
9
9
  /**
@@ -1,9 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.failedOllamaCallResponseHandler = exports.OllamaError = void 0;
4
+ const zod_1 = require("zod");
4
5
  const ApiCallError_js_1 = require("../../core/api/ApiCallError.cjs");
6
+ const ZodSchema_js_1 = require("../../core/schema/ZodSchema.cjs");
7
+ const parseJSON_js_1 = require("../../core/schema/parseJSON.cjs");
8
+ const ollamaErrorDataSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.object({
9
+ error: zod_1.z.string(),
10
+ }));
5
11
  class OllamaError extends ApiCallError_js_1.ApiCallError {
6
- constructor({ statusCode, url, requestBodyValues, message, }) {
12
+ constructor({ statusCode, url, requestBodyValues, data, message = data.error, }) {
7
13
  super({ message, statusCode, requestBodyValues, url });
8
14
  Object.defineProperty(this, "data", {
9
15
  enumerable: true,
@@ -11,13 +17,21 @@ class OllamaError extends ApiCallError_js_1.ApiCallError {
11
17
  writable: true,
12
18
  value: void 0
13
19
  });
20
+ this.data = data;
14
21
  }
15
22
  }
16
23
  exports.OllamaError = OllamaError;
17
- const failedOllamaCallResponseHandler = async ({ response, url, requestBodyValues }) => new OllamaError({
18
- url,
19
- requestBodyValues,
20
- statusCode: response.status,
21
- message: await response.text(),
22
- });
24
+ const failedOllamaCallResponseHandler = async ({ response, url, requestBodyValues }) => {
25
+ const responseBody = await response.text();
26
+ const parsedError = (0, parseJSON_js_1.parseJSON)({
27
+ text: responseBody,
28
+ schema: ollamaErrorDataSchema,
29
+ });
30
+ return new OllamaError({
31
+ url,
32
+ requestBodyValues,
33
+ statusCode: response.status,
34
+ data: parsedError,
35
+ });
36
+ };
23
37
  exports.failedOllamaCallResponseHandler = failedOllamaCallResponseHandler;
@@ -1,12 +1,19 @@
1
1
  import { ApiCallError } from "../../core/api/ApiCallError.js";
2
2
  import { ResponseHandler } from "../../core/api/postToApi.js";
3
+ import { ZodSchema } from "../../core/schema/ZodSchema.js";
4
+ declare const ollamaErrorDataSchema: ZodSchema<{
5
+ error: string;
6
+ }>;
7
+ type OllamaErrorData = (typeof ollamaErrorDataSchema)["_type"];
3
8
  export declare class OllamaError extends ApiCallError {
4
- readonly data: string;
5
- constructor({ statusCode, url, requestBodyValues, message, }: {
6
- message: string;
9
+ readonly data: OllamaErrorData;
10
+ constructor({ statusCode, url, requestBodyValues, data, message, }: {
11
+ message?: string;
7
12
  statusCode: number;
8
13
  url: string;
9
14
  requestBodyValues: unknown;
15
+ data: OllamaErrorData;
10
16
  });
11
17
  }
12
18
  export declare const failedOllamaCallResponseHandler: ResponseHandler<ApiCallError>;
19
+ export {};
@@ -1,6 +1,12 @@
1
+ import { z } from "zod";
1
2
  import { ApiCallError } from "../../core/api/ApiCallError.js";
3
+ import { ZodSchema } from "../../core/schema/ZodSchema.js";
4
+ import { parseJSON } from "../../core/schema/parseJSON.js";
5
+ const ollamaErrorDataSchema = new ZodSchema(z.object({
6
+ error: z.string(),
7
+ }));
2
8
  export class OllamaError extends ApiCallError {
3
- constructor({ statusCode, url, requestBodyValues, message, }) {
9
+ constructor({ statusCode, url, requestBodyValues, data, message = data.error, }) {
4
10
  super({ message, statusCode, requestBodyValues, url });
5
11
  Object.defineProperty(this, "data", {
6
12
  enumerable: true,
@@ -8,11 +14,19 @@ export class OllamaError extends ApiCallError {
8
14
  writable: true,
9
15
  value: void 0
10
16
  });
17
+ this.data = data;
11
18
  }
12
19
  }
13
- export const failedOllamaCallResponseHandler = async ({ response, url, requestBodyValues }) => new OllamaError({
14
- url,
15
- requestBodyValues,
16
- statusCode: response.status,
17
- message: await response.text(),
18
- });
20
+ export const failedOllamaCallResponseHandler = async ({ response, url, requestBodyValues }) => {
21
+ const responseBody = await response.text();
22
+ const parsedError = parseJSON({
23
+ text: responseBody,
24
+ schema: ollamaErrorDataSchema,
25
+ });
26
+ return new OllamaError({
27
+ url,
28
+ requestBodyValues,
29
+ statusCode: response.status,
30
+ data: parsedError,
31
+ });
32
+ };
@@ -119,7 +119,7 @@ const ollamaTextGenerationResponseSchema = zod_1.z.object({
119
119
  prompt_eval_count: zod_1.z.number(),
120
120
  eval_count: zod_1.z.number(),
121
121
  eval_duration: zod_1.z.number(),
122
- context: zod_1.z.array(zod_1.z.number()),
122
+ context: zod_1.z.array(zod_1.z.number()).optional(),
123
123
  });
124
124
  const ollamaTextStreamingResponseSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.discriminatedUnion("done", [
125
125
  zod_1.z.object({
@@ -140,7 +140,7 @@ const ollamaTextStreamingResponseSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.d
140
140
  prompt_eval_duration: zod_1.z.number().optional(),
141
141
  eval_count: zod_1.z.number(),
142
142
  eval_duration: zod_1.z.number(),
143
- context: zod_1.z.array(zod_1.z.number()),
143
+ context: zod_1.z.array(zod_1.z.number()).optional(),
144
144
  }),
145
145
  ]));
146
146
  async function callOllamaTextGenerationAPI({ api = new OllamaApiConfiguration_js_1.OllamaApiConfiguration(), abortSignal, responseFormat, prompt, model, format, contextWindowSize, maxCompletionTokens, mirostat, mirostat_eta, mirostat_tau, num_gpu, num_gqa, num_threads, repeat_last_n, repeat_penalty, seed, stopSequences, temperature, tfs_z, top_k, top_p, system, template, context, raw, }) {
@@ -125,12 +125,12 @@ export declare class OllamaTextGenerationModel<CONTEXT_WINDOW_SIZE extends numbe
125
125
  response: string;
126
126
  model: string;
127
127
  done: true;
128
- context: number[];
129
128
  total_duration: number;
130
129
  load_duration: number;
131
130
  prompt_eval_count: number;
132
131
  eval_count: number;
133
132
  eval_duration: number;
133
+ context?: number[] | undefined;
134
134
  };
135
135
  text: string;
136
136
  }>;
@@ -147,27 +147,27 @@ declare const ollamaTextGenerationResponseSchema: z.ZodObject<{
147
147
  prompt_eval_count: z.ZodNumber;
148
148
  eval_count: z.ZodNumber;
149
149
  eval_duration: z.ZodNumber;
150
- context: z.ZodArray<z.ZodNumber, "many">;
150
+ context: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
151
151
  }, "strip", z.ZodTypeAny, {
152
152
  response: string;
153
153
  model: string;
154
154
  done: true;
155
- context: number[];
156
155
  total_duration: number;
157
156
  load_duration: number;
158
157
  prompt_eval_count: number;
159
158
  eval_count: number;
160
159
  eval_duration: number;
160
+ context?: number[] | undefined;
161
161
  }, {
162
162
  response: string;
163
163
  model: string;
164
164
  done: true;
165
- context: number[];
166
165
  total_duration: number;
167
166
  load_duration: number;
168
167
  prompt_eval_count: number;
169
168
  eval_count: number;
170
169
  eval_duration: number;
170
+ context?: number[] | undefined;
171
171
  }>;
172
172
  export type OllamaTextGenerationResponse = z.infer<typeof ollamaTextGenerationResponseSchema>;
173
173
  export type OllamaTextGenerationDelta = {
@@ -189,12 +189,12 @@ export declare const OllamaTextGenerationResponseFormat: {
189
189
  response: string;
190
190
  model: string;
191
191
  done: true;
192
- context: number[];
193
192
  total_duration: number;
194
193
  load_duration: number;
195
194
  prompt_eval_count: number;
196
195
  eval_count: number;
197
196
  eval_duration: number;
197
+ context?: number[] | undefined;
198
198
  }>;
199
199
  };
200
200
  /**
@@ -115,7 +115,7 @@ const ollamaTextGenerationResponseSchema = z.object({
115
115
  prompt_eval_count: z.number(),
116
116
  eval_count: z.number(),
117
117
  eval_duration: z.number(),
118
- context: z.array(z.number()),
118
+ context: z.array(z.number()).optional(),
119
119
  });
120
120
  const ollamaTextStreamingResponseSchema = new ZodSchema(z.discriminatedUnion("done", [
121
121
  z.object({
@@ -136,7 +136,7 @@ const ollamaTextStreamingResponseSchema = new ZodSchema(z.discriminatedUnion("do
136
136
  prompt_eval_duration: z.number().optional(),
137
137
  eval_count: z.number(),
138
138
  eval_duration: z.number(),
139
- context: z.array(z.number()),
139
+ context: z.array(z.number()).optional(),
140
140
  }),
141
141
  ]));
142
142
  async function callOllamaTextGenerationAPI({ api = new OllamaApiConfiguration(), abortSignal, responseFormat, prompt, model, format, contextWindowSize, maxCompletionTokens, mirostat, mirostat_eta, mirostat_tau, num_gpu, num_gqa, num_threads, repeat_last_n, repeat_penalty, seed, stopSequences, temperature, tfs_z, top_k, top_p, system, template, context, raw, }) {
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.72.0",
4
+ "version": "0.73.1",
5
5
  "author": "Lars Grammel",
6
6
  "license": "MIT",
7
7
  "keywords": [