t-comm
Version:
专业、稳定、纯粹的工具库
27 lines (26 loc) • 1.17 kB
TypeScript
/**
* 通用 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;