随着Agent的爆发,大型语言模型(LLM)的应用不再局限于生成日常对话,而是越来越多地被要求输出像JSON或XML这样的结构化数据。这种结构化输出对于确保安全性、与其他软件系统互操作以及执行下游自动化任务至关重要。然而常规的、自由形式的LLM生成过程存在两个主要问题:第一是格式不可靠:模型可能生成语法错误、无法被机器解析的输出。第二是内容不可靠:模型可能会产生事实错误,即所谓的“幻觉”。这也是许多AI产品开发者的痛点。
为了解决这些问题,学术界和工业界探索了两种主要途径,但这两种途径各有局限:
今天这篇论文研究者的核心目标就是要将这两种方法统一起来,建立一个强大的框架,利用XML的结构化能力和语法的严格性,来形式化地管理与LLM之间的复杂、多轮交互,从而同时保证高质量的推理过程和输出结果的绝对规整。
为了解决这个问题,研究者们提出了“XML Prompting”的思路,XML作为Anthropic主推的Prompt格式您可能会很熟悉。它的核心思想是,将XML作为定义整个人机交互过程的“语法”,AI的每一步思考,从计划、验证到调用工具和最终回答,都必须被“锁”在一个我们预先设计好的、层次分明的XML结构里。这就像是给AI的思维链上了一套严格的语法枷锁,让它的整个工作流变得清晰、可控且透明。关于XML提示词的文章我之前写过很多,感兴趣您可以看下
还在用陈旧的CoT?是时候升级你的技术了,你应该掌握的XML高级提示链Prompt Chain
这篇论文的核心是其对提示过程的数学建模,目的是为了把“让模型给我一个结构化答案”这件事,抽象为受限的生成问题。
只要我们把接口契约(比如 XML/JSON 结构、字段枚举、数值格式)写进文法,那么非法格式就根本“不在语言里”,模型无论如何“发挥”,都出不去这条“语义高速公路”。
一轮完整的交互(例如,用户输入 -> LLM草拟 -> 验证器反馈)被建模成一个算子 T,它接收一棵XML树,然后将其转换为一棵新的、更精化的树:T(旧树)→新树。论文假设这个算子是单调的(monotone):即如果你用一个更精化的输入开始,你得到的输出也会是更精化的 (t1≤t2⟹T(t1)≤T(t2)) 。这是一个非常自然的假设,因为给模型更多信息,理应不会得到一个更差的输出。
这一步把“输出格式要求”升级为“语法 + 自动机”,把“交互/生成过程”升级为“受约束的状态转移”。这就是论文的Grammar-Constrained Interaction底座。
论文中有两个定理,您可以理解成“逐步补全结构化答案”的过程,看成对一个算子反复施加,直到不再改变,这就是不动点。
形式化模型虽然强大但很抽象,技术上怎么落地呢?研究者通过语法对齐解码(Grammar-Aligned Decoding, GAD)技术将其与现实世界联系起来。
这篇论文最棒的地方在于,它不只谈理论,还给出了可以直接在您产品中使用的“配方”:
我基于论文设计了两个Agent作为示例,模型使用的是Qwen3-4b-thinking,大部分机器都可以跑。
这是一个采用单分支序列化推理+XML语法约束的商业合同审查Agent,将合同逐步解析为固定Schema的结构化结果(计划→推理→风险→建议),并用语法对齐解码保证输出100%可解析。
这是一个客服意图识别原型,实现了LLM强制输出固定结构的JSON,主要解决LLM输出的“不可预测性”。在客服场景中,比如用户说:“你好,我想查一下我昨天在北京下的那个订单到哪了,收件人是张三。”,模型今天可能返回一个JSON,明天可能返回一个Markdown,后天可能直接返回一段描述性文字。这种输出格式的随机性,对于需要稳定数据接口的软件系统来说,是一场灾难。开发者需要编写大量脆弱、复杂的“胶水代码”去解析、清洗和重试,整个系统摇摇欲坠。
有了这项技术,以后可以不用再费尽心血编写Prompt“请求”模型输出JSON,而是通过技术手段保证模型只能输出合规的JSON。第二个Agent尚未实现论文里的XML交互协议+不动点收敛循环,因此不是完整复现,但在工程上已显著降低解析成本与胶水代码复杂度。可以让LLM从此变成一个行为可预测、接口稳定的软件组件,从一个充满随机性的对话模型,变成了一个可靠的、能返回结构化数据的API。
这周末我会将两份代码都分享在Agent开发交流群里,欢迎您来群里一起交流!
这套组合拳打下来,我们与LLM的交互方式就发生质变了。它不再是一种充满不确定性的艺术,而是变成了一门有数学理论托底、有工程方法可循的、严谨的“交互工程”。论文在导言里提到DSPy,DSPy像是“把一连串LLM调用编译成可学习、可优化的程序”,XML Prompting则是“把每次交互当作受语法约束的协议,并证明这类协议在迭代中会收敛到稳定解”。前者偏系统与编排,后者偏语义与约束。
但是,任何技术都不是银弹,XML Prompting这种强约束方法虽然带来了极高的可靠性,但也增加了前期定义语法的复杂度,并且可能会在一定程度上限制模型的“创造性发散”。
研究者也提到,未来的工作会继续探索更高效的约束解码算法,甚至将更复杂的逻辑检查(比如μ-calculus模型检查)作为实时过滤器集成进来,让这套方法变得更加智能和强大。
文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。
【开源免费】字节工作流产品扣子两大核心业务:Coze Studio(扣子开发平台)和 Coze Loop(扣子罗盘)全面开源,而且采用的是 Apache 2.0 许可证,支持商用!
项目地址:https://github.com/coze-dev/coze-studio
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0