UNPKG

ai-utils.js

Version:

Build AI applications, chatbots, and agents with JavaScript and TypeScript.

45 lines (44 loc) 1.43 kB
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, }); } };