大模型按照指定格式输出JSON

在 AI 原生开发落地的实践中,让大语言模型通过提示来输出答案只是第一步。更大的挑战是,如何保证大语言模型在相同的场景输入下,能够稳定地重现相同的效果,并且符合结构化的标准,以便与其他系统无缝集成。下面我介绍两种通过提示让大语言模型按照指定格式输出的策略。

1.输出格式引导

为了方便大语言模型和应用系统的集成,可以通过一些提示来指定大语言模型输出格式,例如“直接输出CSV结果即可”“Output as CSV format”等。这样,大语言模型就可以根据提示输出JSON、CSV、TSV、KV等不同的格式。

生成CSV格式的例子如下:

# 任务描述
作为一个宠物商店的老板,请给客户推荐一只可爱小宠物。请按照【动物名称,所属科目,尺寸大小】字段生成一条CSV格式的宠物信息,无需额外解释。

# 输出结果
->

输出:

猫,哺乳纲,中等

生成KV格式的例子如下:

# 任务描述
作为一个宠物商店的老板,请给客户推荐一只可爱小宠物。请按照"KV"格式生成一条数据,其中K为【动物名称,所属科目,尺寸大小】字段,V为对应的值,无需额外解释。
# 输出结果
```json

输出:

动物名称: 狗
所属科目: 哺乳纲
尺寸大小: 小

2 字段和类型引导

除了输出的格式,输出字段的名称和数据类型也是影响大语言模型与应用系统集成的关键因素,我们分别来看看如何指定输出字段名称和数据类型。

**指定字段名称:**使用输出结构示例进行字段名称定义。在“任务描述”中提供一个JSON结构的示例,用{}标识要填充的内容:

# 任务描述
从给定的文本中提取信息,按照以下 JSON 结构输出,其中`{}`表示需要填充的内容:
```json
{ "gender": "{}", "age": "{}", "job": "{}"}
```
# 输入
大家好,我是一个羞涩的小男孩,今年十二岁,还是个学生,在北京 101 中学读书。
# 输出
```json

输出:

{ "gender": "男", "age": "12", "job": "学生" }

另外也可以使用括号进行字段名称定义。在需要提取的字段后面注明相应的英文名称,如下示例:

# 任务描述
从给定的文本中提取性别(gender)、年龄(age)和职业(job)信息,按照 JSON 结构输出。文本如下:

# 输入
大家好,我是一个羞涩的小男孩,今年十二岁,还是个学生,在北京 101 中学读书。
# 输出
```json

输出:

{ "gender": "男", "age": "十二岁", "job": "学生" }

指定字段类型:使用{%format}(格式化字符串)标识字段数据类型,如下示例:

# 任务描述
从给定的文本中提取信息,按照以下 JSON 结构输出,其中`{}`表示需要填充的内容:
```json
{ "gender": "{%s}", "age": {%d}, "job": "{%s}"}
```
# 输入
大家好,我是一个羞涩的小男孩,今年十二岁,还是个学生,在北京 101 中学读书。
# 输出
```json

输出:

{ "gender": "男", "age": 12, "job": "学生" }

也可以使用括号定义字段类型。这种方法是在需要提取的字段后面同时注明对应英文名称和字段数据类型,如下示例:

# 任务描述

从给定的文本中提取性别(gender:int)、年龄(age:string)和职业(job:string)信息,按照 JSON 结构输出。文本如下:

# 输入
大家好,我是一个羞涩的小男孩,今年十二岁,还是个学生,在北京 101 中学读书。
# 输出
```json

输出:

{ "gender": "男", "age": "十二岁", "job": "学生" }

请注意,这里我将年龄(age:int)修改为年龄(age:string),可以看到 age 的类型从 int 变为了 string,值也从“12”变成了“十二岁”。

3.更多输出优化策略

在前面的探讨中,我们已经阐述了如何通过巧妙的提示设计,让大语言模型能够生成符合特定格式的文本内容,这一方法极大地增强了AI原生应用与大语言模型的集成效能。

最新问世的《AI原生应用开发:提示工程原理与实战》(京东图书:https://item.jd.com/14373635.html)一书,深入汲取了结构化思维的精髓,并将其应用于提示的设计之中。它使用明确的结构引导、内容引导和提示编排设计来提升提示的可读性,帮助大语言模型更准确地理解任务,并生成稳定的、可复现的、符合预期的内容。这些策略如下所示。

请添加图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alphaAIstack

借AI之力,探索无限可能。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值