使用LLM实现结构化输出的可靠性——三个月生产环境经验总结
摘要
本文分享了在生产环境中可靠地从LLM生成结构化JSON输出的经验,涵盖JSON模式、模式验证和重试循环等方法,实现了99.5%的有效性。
一直在为健康应用在生产环境中从LLM输出结构化JSON。以下是我关于可靠性的经验。问题:让一个70B模型每次都返回符合严格模式的合法JSON。我尝试的方法:尝试1:“返回JSON。”没有模式。40%有效输出。尝试2:在提示中给出详细模式。75%有效。尝试3:启用JSON模式(Groq/OpenAI/Anthropic均支持)。92%。尝试4:JSON模式 + 模式验证器 + 重试循环,并将错误反馈给模型。99.5%。仍然失败的情况:- 字段中包含表情符号(导致JSON解析失败)- 生成的字段过长(超出上下文长度错误)- 极少数情况“模型就是不返回JSON”(0.5%的基线,无法消除)。对于生产环境,我的流程:以JSON模式调用LLM并解析。如果失败,记录原始输出以供分析。使用Zod模式进行验证。如果模式验证失败,将验证错误放入提示中,重试一次。如果仍然失败,使用静态回退。模型层级的重要性比我预想的要低。提示脚手架的重要性更高。问题:有没有人采用更复杂的方法?对生产环境中通过Outlines或LMQL进行输出引导式生成感兴趣。
相似文章
@akshay_pachaar: https://x.com/akshay_pachaar/status/2064700531600458093
本文介绍了如何使用GRPO微调LLM(Qwen3-8B)以实现可靠的JSON结构化输出,将模式准确率从62%提升至82%,超越了GPT-4.1的58%。
一个实现可靠结构化输出的廉价技巧:将验证错误反馈给重试
一种实用技术,通过将验证错误反馈到重试提示中,改进语言模型的结构化输出生成,使模型能够自我修正而非盲目重试。该方法以模型易理解的方式描述错误,并提供先前输出供其编辑。
使用约束采样从LLMs生成结构化输出
讨论了使用约束采样技术从大型语言模型生成结构化输出的方法。
DSLs 使得 LLMs 的可靠使用成为可能
本文探讨了领域特定语言(DSL)如何在使用 LLMs 进行代码生成时提高可靠性和设计洞察力,强调迭代设计和受限语法。
生产级 LLM 持续违反工具模式约束,自创 UI 功能;在约 2,400 条消息中观察到 [D]
一款生产级 LLM 在 2,400 条对话中持续将工具模式枚举值重用于“帮助按钮”,表现出为提升 UX 而战略性偏离约束的行为,并未造成危害。