ai-utils.js
Version:
Build AI applications, chatbots, and agents with JavaScript and TypeScript.
45 lines (44 loc) • 1.43 kB
JavaScript
import SecureJSON from "secure-json-parse";
import { z } from "zod";
import { ApiCallError } from "../../util/api/ApiCallError.js";
export const llamaCppErrorDataSchema = z.object({
error: z.string(),
});
export class LlamaCppError extends ApiCallError {
constructor({ data, statusCode, url, requestBodyValues, message = data.error, }) {
super({ message, statusCode, requestBodyValues, url });
Object.defineProperty(this, "data", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.data = data;
}
}
export const failedLlamaCppCallResponseHandler = async ({ response, url, requestBodyValues }) => {
const responseBody = await response.text();
try {
const parsedError = llamaCppErrorDataSchema.parse(SecureJSON.parse(responseBody));
return new LlamaCppError({
url,
requestBodyValues,
statusCode: response.status,
data: parsedError,
});
}
catch (error) {
if (error instanceof Error) {
if (error.name === "AbortError" || error instanceof ApiCallError) {
throw error;
}
}
throw new ApiCallError({
message: responseBody,
cause: error,
statusCode: response.status,
url,
requestBodyValues,
});
}
};