问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

提示工程:让大模型按照指定格式输出JSON

创作时间:
作者:
@小白创作中心

提示工程:让大模型按照指定格式输出JSON

引用
CSDN
1.
https://blog.csdn.net/alphaAIstack/article/details/144868377

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

1. 输出格式引导

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

生成CSV格式的例子

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

输出:

猫,哺乳纲,中等

生成KV格式的例子

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

输出:

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

2. 字段和类型引导

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

指定字段名称

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

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

输出:

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

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

# 任务描述
从给定的文本中提取性别(gender)、年龄(age)和职业(job)信息,按照 JSON 结构输出。文本如下:
# 输入
大家好,我是一个羞涩的小男孩,今年十二岁,还是个学生,在北京 101 中学读书。
# 输出

输出:

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

指定字段类型

使用{%format}(格式化字符串)标识字段数据类型:

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

输出:

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

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

# 任务描述
从给定的文本中提取性别(gender:int)、年龄(age:string)和职业(job:string)信息,按照 JSON 结构输出。文本如下:
# 输入
大家好,我是一个羞涩的小男孩,今年十二岁,还是个学生,在北京 101 中学读书。
# 输出

输出:

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

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

3. 更多输出优化策略

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号