LLM2Json:实现 ERNIE Bot 稳定输出结构化 JSON 数据
项目背景
随着大型语言模型(LLM)技术的飞速发展,其在自然语言处理领域的表现令人瞩目。然而,当开发者将 LLM 集成到实际业务应用中时,面临着一个核心挑战:LLM 生成的文本内容往往具有高度的不确定性,包括格式混乱、键值对缺失或非标准 JSON 结构等问题。这导致下游系统难以直接解析和处理这些数据,通常需要编写复杂的正则表达式进行清洗,甚至出现程序报错。
为了解决这一痛点,我们开发了 LLM2Json 工具包。该工具旨在帮助开发者构建高质量的 Prompt,引导大语言模型输出严格符合 JSON 语法规范的结构化数据,从而确保数据能够无缝对接下游应用程序、数据库或 API 接口。
为什么选择 JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于 Web 开发和 API 通信中。它具备以下显著优势:
- 易于读写:对人类而言,JSON 格式清晰,易于阅读和编写。
- 机器友好:对于机器来说,JSON 解析速度快,生成简单。
- 跨语言支持:JSON 完全独立于编程语言,几乎所有现代编程语言都内置了 JSON 库的支持。
- 结构灵活:JSON 基于两种主要结构:'名称/值'对的集合(对象)和值的有序列表(数组),能够表达复杂的数据关系。
在 LLM 应用场景中,使用 JSON 作为输出格式可以极大地降低后续数据处理的成本,提高系统的稳定性和可维护性。
快速开始
以下我们以'小红书营销内容生成'为例,演示如何使用 LLM2Json 配合 ERNIE Bot 生成结构化数据。假设我们需要从 LLM 获取三个字段:标题(title)、正文内容(context)和关键词(keywords)。
1. 环境安装
首先,需要安装必要的 Python 依赖包。请确保您的 Python 环境版本符合要求。
pip install llm2json
pip install erniebot
安装完成后,建议重启开发环境内核以确保新安装的包生效。
2. 配置访问令牌
在使用 ERNIE Bot 之前,需要配置访问令牌(Token)。如果您使用的是其他大模型,此步骤可跳过,但需相应调整 SDK 配置。
Token 获取路径请参考百度智能云官方文档。在代码中设置如下:
ERNIETOKEN = "your_access_token_here"
3. 封装模型接口
为了便于调用,我们将 ERNIE Bot 的聊天接口封装为一个函数。这里以 ernie-3.5 模型为例。
import erniebot
erniebot.api_type = "aistudio"
erniebot.access_token = ERNIETOKEN
def ernie_chat(content):
response = erniebot.ChatCompletion.create(
model="ernie-3.5",
messages=[{"role": "user", "content": content}]
)
return response.get_result()
4. 定义数据结构体
利用 llm2json 提供的 BaseModel 和 ,我们可以清晰地定义期望输出的数据结构。这有助于模型理解任务目标。


