使用 LLM 实现结构化输出

OpenViking上下文数据库Golang集成实践 技术创新文件系统范式:将AI Agent的上下文管理从扁平向量存储提升为结构化文件系统分层检索策略:L0/L1/L2三层加载机制,减少62.1%的Token消耗记忆自迭代:会话提交触发Agent经验沉淀,实现越用越智能工程实践完整Golang实现:提供生产级可用的OpenViking客户端库企业级集成方案:涵盖文档摄入、检索、会话管理等全流程性能优化成果:检索准确率提升24.1%,响应时间减少53.3%可观测性提升可视化检索轨迹:实现检索过程的白盒化,调试效率提升77.1%全面监控指标。 阅读详情

在大多数情况下,我们处理的是 LLM 返回的文本响应:用户提出问题,模型用自然语言回答,然后系统以某种方式把响应展示给用户。

但如果需要模型以特定格式返回数据,便于后续通过程序进一步处理,或者根据响应触发后续操作,就需要使用 LLM 实现结构化输出。

从 LLM 获取结构化、机器可读输出的主要方法有 JSON 模式和函数调用。此外,还有一种更严格的函数调用变体:结构化输出,它进一步强化了 schema 的约束执行。

JSON 模式

JSON 模式是实现 LLM 输出机器可读数据的简便方法。本质上,它是在 API 请求中设置的一个参数,用于指示模型始终返回有效的 JSON 对象。

因为 JSON 模式没有定义具体的 schema、字段名称、字段类型或类似声明,所以它只能保证输出是有效的、可解析的 JSON,不能保证结构完全稳定。

JSON 模式虽然保证输出是有效 JSON,但并不保证结构的一致性。如果多次运行同一个示例,每次都可能得到略有不同的字段名称或略有不同的数据结构。

实践中,除了开启 JSON 模式,还应该在系统提示词中明确要求模型以 JSON 格式响应。否则,模型有时可能返回有效 JSON,有时也可能输出不符合预期的内容,行为会变得不可预测。

函数调用

函数调用也可以从 LLM 获取结构化、机器可读的输出。

它并不是简单地要求模型把响应格式化为 JSON,而是先定义一个 schema,用形式化的方式描述期望的输出结构。这样,模型就更倾向于返回与该 schema 匹配的数据。

换句话说,通过函数调用,可以预先定义字段名称、字段类型、必填字段和可选字段等约束。

结构化输出

结构化输出是函数调用的一种更严格的变体。函数调用会引导模型按照预定义 schema 提供输出,但这种约束并不一定是严格的,仍然可能出现一些偏差。

常见偏差包括:

•如果模型无法确定某个字段的值,即使该字段被标记为必填,也可能被省略。

•模型可能添加未在 schema 中定义的额外字段。

•schema 中定义为 integer 的字段,可能返回为字符串形式,例如 "32",而不是数字 32。

这是因为在函数调用中,模型只是试图遵循 schema,但输出的本质仍然是逐个预测 token。schema 更像是一个强提示,而不是硬性约束。逐 token 的生成过程仍然可能在某个环节出现偏差,从而产生不符合既定 schema 的输出。

结构化输出比函数调用更严格。它可以确保 schema 中定义的每个字段始终按定义出现在输出中,不会出现缺失字段、多余字段或类型不一致等意外情况。

关键区别在于,OpenAI 在后台使用了约束解码。在每个 token 生成步骤中,模型只能生成仍然符合 schema、并保持输出有效的 token。也就是说,schema 是在生成级别被强制执行的,而不仅仅是通过系统提示词提出要求。

对比总结

•约束强度:JSON 模式会生成有效 JSON,但不保证结构完整性;函数调用会生成更接近预定义 schema 的 JSON,遵循特定字段名称、类型和必填字段;结构化输出在生成级别执行 schema,从而尽可能杜绝偏差。

•使用场景:JSON 模式适用于需要机器可读响应、但可以接受格式变化的场景;函数调用最初设计用于模型需要触发操作或向外部工具传递参数的场景;结构化输出是具有可靠性保证的函数调用,适合对一致性要求极高的生产管道。

•设置便捷性:JSON 模式最轻量,通常只需要修改一个参数,无需定义 schema;函数调用需要设置参数,并预先定义 schema;结构化输出需要类似设置,此外还需要额外参数以及对 schema 本身的一些约束。

何时使用 JSON 模式

适合使用 JSON 模式的情况包括:

•需要机器可读输出,但对具体 schema 没有严格要求。

•正在构建快速原型,不想花时间设计 schema。

•下游任务足够灵活,可以处理字段名称和结构的细微变化。

•在对话语境中总结或提取信息,并且可以接受一定差异。

何时使用函数调用

适合使用函数调用的情况包括:

•需要一个更有保障的 schema,例如明确的字段名称、字段类型和必填字段。

•输出结果将被程序直接使用,并传递给函数、数据库或 API。

•正在构建智能体工作流,模型需要根据用户输入选择并调用工具。

•需要类型安全,例如 age 字段必须始终是整数,而不能是字符串。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

解析YAML输出:使用LLM实现结构化数据生成 通过本指南,你已经学习了如何使用LLM生成和解析YAML输出。接下来,可以探索LangChain文档以获得更多关于结构化输出的技术细节。 阅读详情

相关推荐

AI - 使用LangChain请求LLM结构化生成内容

在本文中,我们使用LangChain和JavaScript创建了一个简单的格式化输出应用程序,通过配置Groq API并使用LangChain框架,在利用大型语言模型(LLM)生成结构化内容时,我们可以通过直接设置提示(prompting)或使用方法来达到目的。在这个基础上,您可以扩展该应用程序,以支持更多的功能和更复杂的应用场景。希望本教程对您有所帮助!

2404_88048702的博客 1527

基于RAG的企业智能客服项目,已拿70万offer!

基于 RAG 构建一套企业智能客服系统📖。

m0_59164520的博客 1444

用AI学习graphify

Graphify是一个AI驱动的知识图谱构建工具,能够将代码、文档、论文、图像和视频等多模态数据转换为结构化知识图谱。其核心技术特点包括: 多模态处理能力: 支持25+编程语言的AST解析 处理PDF、Markdown等文档 集成Whisper进行音视频转录 高效知识提取: 采用确定性AST解析与LLM语义提取结合 相比直接读取源文件,查询token消耗最多减少71.5倍 增量更新机制仅处理变更文件 智能分析功能: 自动识别高中心性的"上帝节点" 发现跨领域的"意外连接&quo

我的专栏 749

从Vibe Coding到可控生产力:Harness Engineering的实践启示

摘要:OpenAI提出的Harness Engineering(工程化治理)理念为AI Agent时代的软件工程提供了关键方法论,旨在解决代码高产出下的质量闭环、上下文管理等核心矛盾。其三大目标包括重构工程师角色、将AI纳入可控体系、实现低成本纠错,通过六大举措(如角色重构、机械化约束、反熵机制等)重构工程流程。该理念与vibe coding高度互补,既保留灵感驱动的敏捷性,又通过工程化体系保障稳定性,最终推动工程师从"代码生产者"升级为"工程体系设计者"。

小程故事多的博客 4400

到底什么是Harness工程?一篇文章从入门到企业落地全解析

随着OpenClaw爆火,Harness Engineering(驾驭工程)成为AI编程时代的热门概念,很多小白对其感到陌生。本文用通俗类比和真实案例,避开复杂术语,从基础定义入手,讲清Harness Engineering的核心逻辑——人类工程师设计“约束系统”(马具),让AI模型(烈马)安全高效地完成代码工作,同时拆解其核心组件、企业落地场景和实战成果,帮小白快速入门,读懂这项能解放人力、提升效率的新技术,轻松掌握它的核心价值和落地思路。

program哲学 3269

深入解析:如何使用输出解析器将LLM响应转换为结构化数据,并在Python中高效实现

输出解析器作为语言模型应用中的重要工具,为开发者提供了将自然语言文本转换为结构化数据的有效手段。通过合理设计和使用输出解析器,开发者可以大大简化数据处理流程,提高应用的智能化水平。在未来,随着语言模型和解析技术的不断进步,我们可以期待更多强大而易用的解析器工具的出现,这将进一步推动自然语言处理技术的广泛应用和落地。同时,输出解析器的智能化和动态化发展,也将为各种复杂场景提供更强大的支持。参考文献。

m0_57781768的博客 409

使用PydanticAI实现LLM输出的结构化与类型安全

在人工智能工程实践中,大语言模型(LLM)的非结构化输出常导致数据处理困难。通过类型系统对输出进行结构化处理是解决这一问题的关键技术,其中Python生态的Pydantic库因其强大的数据验证能力成为首选方案。PydanticAI在此基础上进行了针对性扩展,为LLM输出添加了类型安全层,实现了从文本到结构化数据的可靠转换。该技术通过声明式模型定义、自动化数据校验和智能错误处理,显著提升了AI应用的数据处理可靠性,特别适用于需要精确数据格式的电商信息提取、用户资料处理等场景。结合提示工程和验证缓存等优化技巧,

weixin_42551227的博客 229

深入解析:如何使用输出解析器将LLM的响应解析为结构化XML格式,并在Python中高效实现

在现代自然语言处理应用中,将大型语言模型生成的文本解析为结构化的XML格式,不仅能够提高数据处理的效率,还可以显著增强系统的集成能力。XMLOutputParser作为一个强大的工具,提供了灵活且高效的解析功能,适用于多种应用场景。通过本文的详细讲解,我们探讨了如何使用XMLOutputParser进行XML输出解析,如何通过提示模板引导模型生成符合预期的结构化数据,以及如何在实际应用中优化解析过程。希望这些内容能够帮助开发者更好地理解和应用输出解析器,为复杂的自然语言处理任务提供有效的解决方案。

m0_57781768的博客 534

使用Instructor项目实现结构化输出:从LLM中提取规范数据

在现代AI应用中,大型语言模型(LLMs)能够生成丰富的文本内容,但当我们需要将这些输出用于程序处理时,往往会遇到格式不一致的问题。Instructor项目通过结合Pydantic模型,提供了一种优雅的解决方案,让开发者能够从LLM输出中提取结构化的、类型安全的数据。 ## 非结构化输出的痛点 让我们先看一个典型的问题场景。当我们直接要求LLM提取信息时: ```python from op...

gitblog_01119的博客 432

深入解析:如何使用YAML输出解析器将LLM响应解析为结构化数据,并在Python中高效实现

在现代自然语言处理应用中,将大型语言模型生成的文本解析为结构化的YAML格式,不仅能够提高数据处理的效率,还可以显著增强系统的集成能力。YamlOutputParser作为一个强大的工具,提供了灵活且高效的解析功能,适用于多种应用场景。通过本文的详细讲解,我们探讨了如何使用YamlOutputParser进行YAML输出解析,如何通过提示模板引导模型生成符合预期的结构化数据,以及如何在实际应用中优化解析过程。希望这些内容能够帮助开发者更好地理解和应用输出解析器,为复杂的自然语言处理任务提供有效的解决方案。

m0_57781768的博客 190

山东大学软件学院计算机组成原理课程设计实验三

文章目录一、实验时间二、实验内容1. 实验目的2. 设计要求3. 实验基本思路三、电路图1. 可预置初值的模256异步计数器2. 8位ALU电路3. 总图四、补充 一、实验时间 第三次实验:2021年4月8日星期四,第六周 第一次部件级实验,开始算分 二、实验内容 微程序控制的运算器设计 1. 实验目的 (1)熟悉简单运算器的结构 (2)熟悉微命令的产生和时序 (3)熟悉运算器功能测试。 2. 设计要求 利用之前设计的具有超前进位功能的8位ALU,实现简单算术或逻辑运算 两操作数由八位寄存器R0、R1提供,

叶卡捷琳堡的博客 1万+

使用Instructor库实现LLM结构化输出:Pydantic与函数调用的实战指南

在大语言模型(LLM)应用开发中,确保模型返回结构化、可解析的数据是核心挑战。传统提示词工程方法依赖模型对自然语言指令的理解,往往导致输出格式不稳定。通过结合Pydantic的数据验证与LLM提供商的原生结构化输出机制(如函数调用Function Calling),开发者可以建立可靠的数据契约。这种技术方案将LLM的输出从自由文本转变为严格遵循预定模式的JSON数据,极大提升了数据处理的自动化程度和系统集成效率。在信息提取、智能客服、报告生成等场景中,结构化输出能力是实现生产级AI应用的关键。本文以Inst

dengjuanshou7445的博客 413

机场数据治理系列介绍(1):机场行业数据中台中的数据管理顶层设计方案

民航机场行业的数据中台中,有关数据管理顶层设计方案需要结合机场行业的业务特点和技术需求进行具体的设计,今日我们简要考量设计提供一个参考方案:

机场信息系统研究员的专栏 1604

langchain 结构化输出

1. 使用 Pydantic 定义结构化输出:定义 AnswerWithJustification 类,用于描述输出的结构,包含以下字段:2. with_structured_output 方法:通过调用 with_structured_output 配置 LLM 以生成结构化的输出。 主要参数包括:3. 不同的输出结构实现方式:基于 Pydantic:基于 JSON Schema:启用 json_mode:4. 配置一个名为 GLM-4-flash 的模型,使用指定的 API 密钥和自定义 API 地址。

The cure for boredom is curiosity. This is the log of its adventures. 1235

FPGA资料分享——FPGA开发板入手指南

FPGA学习,开发板怎么选,看这里,就一个通透

weixin_51627076的博客 7297

5分钟搞定微服务架构图:手把手教你用Draw.io画出专业级设计

本文详细介绍了如何使用Draw.io快速绘制专业级微服务架构图。通过5分钟入门教程,掌握核心组件拖拽、连接线优化等技巧,提升系统设计可视化效率。特别适合需要快速呈现分布式系统架构的开发团队,利用内置微服务元素和分层展示功能,轻松创建清晰易懂的技术文档。

pz890123的博客 1238

LangChain解锁LLM大语言模型的结构化输出能力:调用 with_structured_output() 方法

我们需要通过各种方式手段让LLM具备符合我们期望的结构化输出能力,即模型能够按照用户指定的格式或规则生成内容(而不仅仅是自由形式的文本)的能力。这种能力使LLM的输出结果更易于被程序解析、集成到自动化流程中,以一种更为可控的方式满足特定落地场景的需求。

weixin_41338279的博客 3291

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 374

Dify 1.3.0 为 LLM 节点引入了结构化输出支持

Dify 1.3.0 为 LLM 节点引入了结构化输出支持

engchina的专栏 3526

6、高通8155座舱平台--摄像头系统

在项目中遇到过,很多从手机转过来的工程师,上来就按手机那套调Camera,结果发现根本跑不通——为什么?我踩过这个坑——一开始想靠软件打时间戳来对齐,结果发现两个sensor的曝光时间不一样,时间戳根本对不上。我记得第一次调AWB时,怎么调颜色都不对,后来发现是BLC的参数没配好——黑电平偏了,后面所有颜色校正都是错的。上层应用说「我要拍张照」,HAL把它翻译成「ISP你给我处理这帧数据,sensor你给我曝光一次」。8155上推荐用camx,它是高通新一代的Camera框架,性能更好,而且支持多路同步。

woailuojp的博客 59

MOSFET雪崩特性参数解析

但是,一些电源在输出短路时,初级中会产生较大的电流,加上初级电感,器件就会有雪崩损坏的可能,因此在这样的应用条件下,就要考虑器件的雪崩能量。对于那些在MOSFET的D和S极产生较大电压的尖峰应用,就要考虑器件的雪崩能量,电压的尖峰所集中的能量主要由电感和电流所决定,因此对于反激的应用,MOSFET关断时会产生较大的电压尖峰。雪崩击穿能量标定了器件可以容忍的瞬时过冲电压的安全值,其依赖于雪崩击穿需要消散的能量。EAS单脉冲雪崩击穿能量, EAS标定了器件可以安全吸收反向雪崩击穿能量的高低。

Airer_00的博客 807

用输出解析器将大型语言模型(LLM)响应解析为结构化格式的实用指南

输出解析器是一种类,旨在帮助将语言模型的响应组织成结构化的数据形式。:返回一条字符串,包含语言模型输出应如何格式化的说明。Parse:接收一个字符串(通常是语言模型的响应)并将它解析为某种结构。:额外接收生成响应的提示(prompt),在需要修正或重试输出时,通过提示信息进行解析。解析模型输出为结构化数据是将 LLM 集成到数据密集型应用中的重要步骤。本文讨论的输出解析器提供了一种简洁而强大的方法来实现这一点。LangChain 文档和示例Pydantic 官方文档其他输出解析器的使用案例。

qq_29929123的博客 487

11、基于拓扑质心和树编辑距离的RNA二级结构比较方法

本文介绍了一种基于拓扑质心和树编辑距离的RNA二级结构比较方法,特别适用于处理具有假结结构的RNA。通过PEELING算法识别拓扑质心并将其转换为树结构,结合树编辑距离进行高效比较,并提供工具planeGraph2tree实现该方法。博文详细描述了方法原理、操作流程以及应用示例,展示了其在功能性非编码RNA分析中的实用性。

resnet7explorer的博客 111

使用Fireworks Function Calling进行结构化输出

在这篇文章中,我们将学习如何通过Fireworks的Function Calling进行LLM的结构化输出。这一技术类似于OpenAI的功能调用,让用户可以直接描述一组工具/函数,并让模型动态地选择正确的函数调用,而无需复杂的提示。

ppoojjj的博客 372

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LangChain 结构化输出:用 Pydantic + PydanticOutputParser 驯服 LLM 的“自由发挥”

在大型语言模型(LLM)应用中,非结构化输出是开发者面临的核心挑战:自由文本难以被程序直接处理,且易导致数据缺失或格式错误。通过代码实例解析,文章演示了两者如何协作:Pydantic 确保数据质量,PydanticOutputParser 打通从文本到模型的“最后一公里”。这种组合为 LLM 应用提供了端到端的数据管理方案,显著提升开发效率与系统鲁棒性,是构建智能管道的必备工具

echola_mendes的博客 2182

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值