当前位置: 首页 > news >正文

如何保证模型结构化输出

1.提示词优化

明确要求,加入约束,提供示例,这是最直接有效的方法,如下

你是一个数据提取助手,必须严格按照以下 JSON Schema 输出,不要输出任何其他文字、解释或Markdown标记。

Schema:
{
"name": "string, 人名",
"age": "number, 年龄",
"city": "string, 所在城市"
}

示例输出:
{"name": "张三", "age": 28, "city": "北京"}

现在请根据以下内容输出JSON:
用户说:我叫李四,今年35岁,住在上海。

client的entity方法就是自动将实体类转成的样本拼接在提示词末尾,并且返回时将其解析成实体类对象。

2.json mode

部分前沿模型在API层面原生支持了结构化输出,通过传参response_format:Schema 来定义结构化输出,强制输出与 Schema 精确匹配。

@Configuration public class StructuredOutputConfig { @Value("${spring.ai.openai.chat.options.model}") private String modelName; @Bean public ChatClient strictStructuredOutputClient(ChatClient.Builder builder) { return builder .defaultOptions(OpenAiChatOptions.builder() .model(modelName) .responseFormat(ResponseFormat.builder(//开启json mode .type(ResponseFormat.Type.JSON_OBJECT) .jsonSchema(ResponseFormat.JsonSchema.builder() .name("user_info") .schema(""" { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer"}, "city": {"type": "string"} }, "required": ["name", "age", "city"], "additionalProperties": false } """) .strict(true) .build()) .build()) .build()) .build(); } }

3.采样参数调整

参数推荐值作用
temperature0 ~ 0.2降低随机性,避免格式混乱
top_p0.9保持一定确定性
stop["\n\n", "```"]| 防止模型继续生成解释文字 |

4.容错机制

模型偶尔还是会输出带Markdown的标记,代码中将其手动去除再解析成json,还不行加入重试机制多试几次。

http://www.jsqmd.com/news/619327/

相关文章:

  • OpenClaw邮件处理机器人:Qwen3-14b_int4_awq实现的智能分类与回复
  • 多智能体强化学习—QPLEX:优势分解与协同决策的深度解析
  • 微信立减金回收价格公示,如何避坑 - 猎卡回收公众号
  • WebSocket实现实时通知
  • Python自动化调色:DaVinci Resolve API实战指南与场景应用
  • 支持多语种的知识竞赛软件有哪些?顶伯等主流工具功能对比
  • 3步革命性自动化:Win11Debloat如何智能重塑你的Windows体验
  • OpenClaw邮件自动化:Qwen3-4B处理每日百封邮件实战
  • CMU 15-445 Project1 通关秘籍:手把手教你实现可扩展哈希表(附完整测试用例)
  • 2026年智能书籍要点总结App避坑攻略:Top5解析,别让伪效率工具浪费你的时间
  • 魔兽争霸III终极优化指南:WarcraftHelper插件让你的经典游戏焕发第二春 [特殊字符]
  • 从Excel到Markdown:3分钟让你的Obsidian表格整齐如初
  • 三电平有源电力滤波器方案:全套软硬件资料,基于DSP28335,可实现直接量产
  • 记录
  • GAMES101【lecture5-8】精讲:从光栅化到着色,图形学核心流程实战解析
  • ElevenLabs、Descript、EasyDubbing,谁更适合做 YouTube/Tiktok 多语言内容?
  • 20252912 2024-2025-2 《网络攻防实践》实验五
  • 5 种在安卓手机 / 平板与电脑间同步音乐的方法
  • Qwen2-VL-2B-Instruct结合YOLOv8:实现视频流实时分析与描述
  • 基于51单片机的TB6600步进电机驱动程序
  • 利用Python脚本实现PubChem SID/CID到SMILES的批量映射与数据增强
  • 软件测试人员转型AI大模型开发:零基础学习路线图
  • BabelDOC终极指南:如何用开源工具实现PDF文档无损翻译?
  • 2026年4月玻璃幕墙公司找哪家,钢结构/钢构/幕墙/管桁架/轻钢构/钢结构幕墙/玻璃幕墙/重钢构,玻璃幕墙公司哪家好 - 品牌推荐师
  • 终极USB设备安全弹出指南:告别“设备正在使用“的烦恼
  • 用Keil5和SX1276搞LoRa距离实测:从30米机房到1000米操场,我的避坑记录
  • OpenClaw隐私保护方案:千问3.5-9B本地处理敏感数据
  • GHelper终极指南:如何用10MB工具替代臃肿的华硕控制中心
  • 从STL到点云:CloudCompare高效转换技巧全解析
  • OpenClaw模型微调:Qwen3-4B适配专属自动化任务