当前位置:首页 > 技术分析 > 正文内容

让大语言模型结构化输出JSON(结构化分析的输出)

ruisui885个月前 (01-23)技术分析23

在 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原生应用与大语言模型的集成效能。

京东图书:https://item.jd.com/10136043938428.html

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


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/493.html

分享给朋友:

“让大语言模型结构化输出JSON(结构化分析的输出)” 的相关文章

带你五步学会Vue SSR

作者:liuxuan 前端名狮转发链接:https://mp.weixin.qq.com/s/6K6GUHcLwLG4mzfaYtVMBQ前言SSR大家肯定都不陌生,通过服务端渲染,可以优化SEO抓取,提升首页加载速度等,我在学习SSR的时候,看过很多文章,有些对我有很大的启发作用,有些就只是照搬官...

2021最全VUE面试题,奥利给

1. vue-router用过没,哪些常用的钩子函数路由钩子的执行流程,钩子函数种类有:全局守卫、路由守卫、组件守卫。首页可以控制导航跳转, beforeEach , afterEach 等,?般?于页? title 的修改。?些需要登录才能调整??的重定向功能。beforeEach 主要有3个参数...

git的几种分支模式

编写代码,是软件开发交付过程的起点,发布上线,是开发工作完成的终点。代码分支模式贯穿了开发、集成和发布的整个过程,是工程师们最亲切的小伙伴。那如何根据自身的业务特点和团队规模来选择适合的分支模式呢?本文分享几种主流 Git 分支模式的流程及特点,并给出选择建议。分支的目的是隔离,但多一个分支也意味着...

Java教程:gitlab-使用入门

1 导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作GitLab简介GitLab环境搭建GitLab基本使用(组、权限、用户、项目)2 GitLab简介GitLab是整个DevOps生命周期...

身体越柔软越好?刻苦拉伸可能反而不健康 | 果断练

坐下伸直膝盖,双手用力向前伸,再用力……比昨天前进了一厘米,又进步了! 这么努力地拉伸,每个人都有自己的目标,也许是身体健康、线条柔美、放松肌肉、体测满分,也可能为了随时劈个叉,享受一片惊呼。 不过,身体柔软,可以享受到灵活的福利,也可能付出不稳定的代价,并不是越刻苦拉伸越好。太硬或者太软,都不安全...

el-table内容\n换行解决办法

问题请求到的数据带有换行符 '\n'但页面展示时不换行statusRemark: "\"1、按期完成计划且准确率100%,得100分;\n2、各项目每延误1天,扣1分;每失误1次或者员工投诉1次,扣3分,失误层面达到公司级影响较大的,该项绩效分数为0\"\n&...