问题域/PD-122

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 导致类型比较失败