LLM 输出结构化
LLM Output Structuring
将 LLM 自由文本输出强制转换为类型安全的结构化数据
子问题
1.输出格式约束
2.解析与提取
3.格式错误修复
4.动态类型生成与模型缓存
5.多模式填充策略选择(JSON/XML/Code/Markdown)
6.LLM 自校正循环(Review-Revise)
各项目的解法1 solutions
Signals
横向对比
| 维度 | MetaGPT |
|---|---|
| 约束方式 | ActionNode 树声明式定义 + [CONTENT] 标签包裹 + Pydantic 动态模型校验 |
| 解析策略 | 四阶段修复管道 + CustomDecoder 宽松解析(支持单引号/三引号 JSON) |
| 修复能力 | 大小写修复 → 标签对补全 → 特殊字符修复 → JSON 格式修复 → 行级精确修复 |
| 重试机制 | 双层重试:外层 _aask_v1 指数退避 6 次 + 内层 parse 固定间隔 3 次,重试间自动修复 |
| 多模式支持 | 五种填充模式:JSON / Markdown / XML / Code(tree-sitter) / Single |
| 类型系统 | 运行时 create_model 动态生成 Pydantic v2 模型,支持嵌套递归 + Optional 检测 |
| 自校正能力 | 内置 review + revise 循环:LLM 自动审查输出合规性并修正不合格字段 |
最佳实践
1.Pydantic 动态模型 + 标签包裹 + 后处理修复
2.双层重试 + 重试间自动修复(外层 LLM 重调 + 内层 JSON 精确修复)
3.CustomDecoder 宽松解析兼容单引号/三引号等非标准 JSON
4.模型类缓存注册表避免重复 create_model 导致类型比较失败