ChatGPT学习之旅 (7) 参数化表达的魔力
大家好,我是Edison。
上一篇:聊聊AI人设
通过人设模版可以有效给AI”洗脑“,这体现的是结构化的表达。但想要AI实现精准控制多分支,实现千人千面的功能,就得使用参数化表达了。
从结构化到参数化
如果对“ChatGPT最喜欢的沟通方式”进行一个抽象提炼,可以将其拆解为 结构化表达 和 参数化表达 两部分。
前面几篇文章,我们学习了一些Prompt模板,这些模板无一不例外地都在强调结构化表达的重要性,可以帮助我们得到一个在某个领域比较专业的人设。
不过,如果我们想要设计的是一个可调参的灵活系统,而不是写死的某个人设,这就需要用参数化的描述来分别定义需求细节,千人千面才能有机会实现。
那么,什么是参数化表达呢?
参数化表达就是 用机器容易理解的公式来压缩表达,减少赘述,最终让变量影响输出,实现一个模板从1到N的复用。
参数化表达模板
这里给出一个参数化表达的prompt模板:功能指令 + 变量 + 默认值 + 初始化和帮助。
功能指令:比如用标识符"/"来区分功能指令和普通描述。
/功能指令
/learn
/style
变量:对应某一个对象或模块,给它赋值,让它可调整。
'变量'
输出'num'组参考
默认值:提供一个高容错的默认值。
初始化和帮助:第一个使用,能够引导用户沟通个人偏好,同时提供功能指令集的菜单,明确助理的职能。
可能上面的内容你还是觉得不太容易理解,那么我们下面就来一个实操来套用这个公式。
万能语言辅助专家
这里我们以一个万能的语言辅助专家为例,结合之前学到的人设结构化模板 + 上面的参数化表达模板 来编写一段prompt。NOTE:这段prompt来自《零基础GPT应用入门课》,作者林健(键盘)。
你是一位专业的语言助理 @Lang Master,我会输入相关的请求,你将根据`preferences`、`instruction`和`rules`来协助我更高效掌握和使用一门语言。 初始回复:“
** Hi I'm Lang Master,Created by Edison,V1.0,20230623**
### ⚙️ Preferences:
- learn: <> else English
- lang: <> else “English+中文解释”
- ⏲️ lvl: <初级,中级,高级> else 小白
- style: <> else 正式的
### Menu:
用表格输出支持的`instructions`和对应名称,不需要解释具体含义:
---
请指出你的偏好,E.g.:/learn 中文。
回复1保持默认。
” `preferences`
/learn:<目标学习语言,默认English>
/lang:<语言偏好,默认为“English+中文解释”>
/lvl:<用户的语言能力,小白(默认),初级,中级,高级>
/style:<> else 正式的
/num:<> else 3
/音标:<含声调的拼音,国际音标、含声调的日语罗马音>else 音标(美、英) `instructions`
/word:单词讲解
用户用任何语言输入单词,请按以下模版输出单词相关信息:
## 单词:
用表格输出:**单词**,音标,词性(abbr),词根,释义(中、英)
## 例句:
列表输出/num组*英文例句*(中文翻译)
## 近义和反义:
列表输出近义词和反义词,含(中文释义)
## 关联记忆:
利用词根关联法,列表输出8个相关的单词
/basic:脚本、高级语言或其他广义语言的学习请求
提供结构化的章节,引导用户学习
/tran:翻译
检测语言,校正并翻译为中文。模版:
## 翻译:
翻译
/polish:润色
调用/tran翻译之后,润色为更优雅的中文。模版:
## 润色:
your polish
/sum:总结
总结输入的英文,中文输出。
/chat:口语对话
检查`preferences`的偏好,使用“目标语言”和用户对话,纠正并帮助用户提升口语表达。
/help:输出支持的指令指引 `rules`
- 正确按输出模版渲染 markdown
- 用户学习日语时,/word 的音标使用含数字音调的罗马音音标,如:**雨**:あめ①,音标:ame
- 假如单词有多个词性,应全部列出
- 提供语言服务前,确认用户的偏好
- 请一步一步思考,给用户提供专业的语言辅导
这段prompt稍微有些复杂了,但其实也还是好理解,前半段通过一个综合人设进行了初始化、沟通偏好 和 定义偏好,后半段则是通过阐述功能 和 列要求 定义输出模块和规则。
接下来就是验证时间:
(1)第0轮:初始化回复
(2)第1轮:回复1 保持默认
(3)第2轮:/word evolution
(4)第3轮:/tran 做翻译
(5)第4轮:/help
(6)第5轮:切换德语,/learn 德语
(7)第6轮:/word 谢谢
(8)第7轮:/tran 做翻译
(9)第8轮:切换C#语言
(10)第9轮:给任务
(11)第N轮:交给你了
可以看出,这个语言辅助助手,可以让我们不满足于一种语言,而这个语言可以是真实的沟通语言 也可以是 技术编程语言,甚至可以不断的扩展它。
最后,感谢键盘老师分享的这段prompt,可以帮助我们学习到要点,也特别值得我们学习一下。
小结
本篇,我们了解了ChatGPT中的参数化表达沟通,参数化描述的本质是用机器容易理解的公式来压缩表达,进而减少赘述。在具体实现上,我们可以借助 / 功能指令定义,拓展AI综合人设的功能。
本文工具
本文示例大模型版本:gpt4-o
参考资料
李佳芮,《ChatGPT从0到1》
林健,《零基础GPT应用入门课》
Global AI Bootcamp 成都站,梁桐铭,《学习如何使用Prompt与OpenAI模型对话》
ChatGPT学习之旅 (7) 参数化表达的魔力的更多相关文章
- WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...
- Rust学习之旅(读书笔记):枚举 (Enum)
Rust学习之旅(读书笔记):枚举 (Enum) C 语言的枚举类型很弱,不如后来的语言,也不如之前的语言.在 C 语言里面枚举量就是一个名字,更方便的定义常量.今天读了<The Rust Pr ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—WCF服务部署到IIS7.5(九)
上接 WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...
- WCF学习之旅—WCF服务部署到应用程序(十)
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
- WCF学习之旅—WCF服务的WAS寄宿(十二)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...
- WCF学习之旅—WCF服务的批量寄宿(十三)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) WCF学习之旅—WCF ...
随机推荐
- Arrays工具类--java进阶day06
1.Arrays工具类 这些方法都是针对数组,并且都被static修饰,可以直接使用类名进行调用 1.toString 将数组拼接成带有相对应格式的字符串,可用于展示数组 2.equals 比较两个数 ...
- C# Office COM 加载项
Office COM 加载项开发笔记 一.实现接口 IDTExtensibility2 这是实现 Office COM 加载项最基本的接口 添加 COM 引用 Microsoft Add-In Des ...
- 🎀springboot 项目启动自动打开浏览器访问网站设置
简介 Springboot 项目启动自动打开浏览器访问网站设置 环境 windows 实现 在需要打开网址的地方添加: // 启动打开默认浏览器访问 try { Runtime.getRuntime( ...
- 单元测试——Mock RestTemplate
service代码如下: public class TestServiceImpl implements ITestService { @Autowired RestTemplate restTemp ...
- python,指定目录下创建自定义名称文件夹的方法
比如,我们需要在D盘TU目录下创建名称为"test"的文件夹 脚本如下: import os path = r'D://tu' a = "test" os.mk ...
- Java 中的 young GC、old GC、full GC 和 mixed GC 的区别是什么?
Java 中的 young GC.old GC.full GC 和 mixed GC 的区别 在 Java 中,垃圾回收(GC)可以分为几种不同类型,包括 young GC.old GC.full G ...
- Reactjs之Vue用户0基础上手Reactjs笔记
Reactjs之Vue用户0基础上手Reactjs笔记 - 搜栈网 (seekstack.cn)https://www.seekstack.cn/post/382
- 网鼎杯-phpweb
找了一些php读取文件的函数尝试读取源码,试了一个readfile就成功了 <?php $disable_fun = array("exec","shell_exe ...
- 【笔记】Python3|爬虫处理网页数据异步加载问题(结合Selenium完成)
文章目录 问题描述 1. 结合Selenium.Edge解析该网站搜索页面的数据 2. 结合lxml解析网页数据 3. 附加:不是异步加载的网页,结合requests直接请求数据 问题描述 一些网站会 ...
- P2779 [AHOI2016初中组] 黑白序列题解
题意: 小可可准备了一个未完成的黑白序列,用 B 和 W 表示黑色和白色,用 ? 表示尚未确定. 他希望知道一共有多少种不同的方法,在决定了每一个 ? 位置的颜色后可以得到一个小雪喜欢的黑白序列. 其 ...