我终于让 LLMs 返回完美 JSON(2025 版)——不使用 hack,不使用 Regex,只输出干净的结果

发布: (2025年12月4日 GMT+8 02:39)
3 min read
原文: Dev.to

Source: Dev.to

封面图片:如何最终强制 LLM 返回完美 JSON(2025 版)——无需 hack、无需正则、仅干净输出

LLM JSON 输出的问题

如果你在实际项目中使用过 LLM——尤其是 LangChain + TypeScript——你可能已经体会到以下挫败感:

  • JSON 损坏
  • JSON 周围被额外文本包裹
  • 随机出现的“创意”输出
  • 生产环境中解析器崩溃

我在构建 AI 应用、RAG 聊天机器人以及使用 Next.js、LangChain、Supabase Vector Store、Pusher 等技术的 SaaS 平台时,亲身经历了这些问题。我尝试了各种提示技巧来强制严格的 JSON 结构:

  • “仅返回有效的 JSON。”
  • 添加严格指令以及注意事项
  • 正则清理
  • 后处理管道

没有一种方法能够可靠地工作。

为什么仅靠提示不足以解决

仅靠提示永远无法保证返回有效的 JSON。LLM 并非为始终遵守格式规则而设计,依赖提示工程会导致结果不稳定。

2025 解决方案:LangChain .withStructuredOutput() + Zod

面向生产的解决方案是将 LangChain 的 withStructuredOutput() 方法与 Zod 模式结合使用。这会强制模型返回:

  • 100 % 有效的 JSON
  • 完全类型化的数据
  • 符合模式的响应
  • 没有额外文本或格式问题

它兼容多种提供商:

  • Google Gemini
  • OpenAI(GPT‑4o、o‑mini)
  • Groq(Llama 3.1)
  • Anthropic Claude

你将学到的内容

  • .withStructuredOutput() 的内部工作原理
  • 步骤详解的 Next.js 16 + TypeScript 实现
  • 带有完善错误处理的 API 路由
  • 用于严格输出验证的 Zod 模式
  • 使用 shadcn/ui 的简洁 UI 示例
  • 为什么该方法比旧的 hack 更快、更便宜、更可靠

完整指南

🔗 如何在 LangChain 中使用 TypeScript 强制返回完美 JSON(2025 版)

Back to Blog

相关文章

阅读更多 »

SaaS IA 新闻

SaaS IA 新闻的封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazon...

从混沌到代码:ALPHALABS

让我彻夜难眠的问题 我想要构建一个平台,让任何人都能创建 AI trading agents、backtest strategies,并证明其 performance……