UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

27 lines (26 loc) 1.17 kB
/** * 通用 LLM 输出 JSON 容错解析 * * 用于解析大语言模型(AI Agent)输出的 JSON:通常 LLM 输出的内容有以下几种 "脏" 情况: * 1. 直接就是合法 JSON * 2. JSON 被自然语言包围("好的,下面是 JSON: { ... } 谢谢") * 3. JSON 被 markdown 代码块包裹(```json { ... } ``` * 4. 因 token 上限被截断(缺少闭合的 ] 和 }) * * 本函数依次使用 5 层策略尽力解析: * 策略 1: 直接 JSON.parse * 策略 2: 提取第一个 `{` 到最后一个 `}` 之间的内容 * 策略 3: 贪婪匹配最外层 markdown 代码块 * 策略 4: 按括号平衡从第一个 `{` 开始匹配(应对尾部自然语言夹带) * 策略 5: token 截断时尝试补齐闭合符号("、]、}) * * @param content LLM 返回的原始字符串 * @param logTag 策略 5 触发时的日志前缀(默认 [AI]),便于上层区分调用方 * * @example * ```ts * const result = parseLooseJson<{ name: string }>(aiResponseText); * if (result) console.log(result.name); * ``` */ export declare function parseLooseJson<T>(content: string, logTag?: string): T | null;