使用LLM实现结构化输出的可靠性——三个月生产环境经验总结

Reddit r/artificial 工具

摘要

本文分享了在生产环境中可靠地从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进行输出引导式生成感兴趣。
查看原文

相似文章