UNPKG

llm-json-fix

Version:

Fix malformed JSON outputs from Large Language Models (LLMs)

55 lines (54 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLLMJsonFixStream = createLLMJsonFixStream; /* eslint-disable @typescript-eslint/no-unused-vars */ const stream_1 = require("stream"); const errors_1 = require("../utils/errors"); const DEFAULT_MAX_BUFFER_SIZE = 1024 * 1024; // 1 MB const DEFAULT_CHUNK_SIZE = 1024; // 1 KB /** * Create a transform stream that fixes malformed JSON from LLMs */ function createLLMJsonFixStream(options = {}) { const bufferSize = options.bufferSize || DEFAULT_MAX_BUFFER_SIZE; const model = options.model || 'general'; const preserveComments = options.preserveComments || false; const verbose = options.verbose || false; // Create a transform stream for our implementation const transform = new stream_1.Transform({ readableObjectMode: false, writableObjectMode: false, transform(chunk, encoding, callback) { try { // For now, just pass through chunks callback(null, chunk); } catch (err) { if (err instanceof Error) { if (err instanceof errors_1.BufferLimitExceededError) { callback(new errors_1.BufferLimitExceededError(`Buffer limit exceeded. The JSON document is too large or malformed. ` + `Increase the buffer size or fix the JSON document.`)); } else { callback(err); } } else { callback(err); } } }, flush(callback) { try { // End the process callback(); } catch (err) { callback(err instanceof Error ? err : new Error(String(err))); } } }); const stack = []; const changes = []; return transform; }