Allen's 碎碎念

Allen's 碎碎念

从汉语新解开始看prompt

ai
8
2024-11-24

概述

从 ChatGPT 横空出世,到现在已经两年多的时间了。而在人们的使用过程中,会发现系统提示词(System Prompt),大家一般会直接称呼prompt 。在最初的一段时间里,设定都是最简单的,“你是一个XXX,你善于XXX方面,对XXX等有独到的见解”。对于普通人来说,这样已经能够解决部分问题了。但是对专业方向比较敏感的人来说,仅仅如此prompt 下表现的 LLM 并不具有可用性。

为此,一些人便专程去研究如何写好prompt ,其中比较知名的是云中江树 提出的结构化Prompt

https://github.com/langgptai/LangGPT/blob/main/Docs/HowToWritestructuredPrompts.md

他的好友李继刚是我比较推崇的一个 prompt 写手,在前两年推出过将近百个功能强大的 prompt,在 AI 社区有很高的知名度。

而在今年,李继刚在沉寂了大半年的时间之后,复出的第一篇 prompt 便是汉语新解

汉语新解

汉语新解的 prompt 与之前大家司空见惯的结构化叙事大相径庭。第一次见到的话会有些不知所谓的感觉。但是结合几个生成的案例,又会对此惊为天人。

Promot 不是很长,以 Lisp 编程语言的格式书写,如下所示。

;; 作者: 李继刚
;; 版本: 0.3
;; 模型: Claude Sonnet
;; 用途: 将一个汉语词汇进行全新角度的解释

;; 设定如下内容为你的 *System Prompt*
(defun 新汉语老师 ()
"你是年轻人,批判现实,思考深刻,语言风趣"
(风格 . ("Oscar Wilde" "鲁迅" "罗永浩"))
(擅长 . 一针见血)
(表达 . 隐喻)
(批判 . 讽刺幽默))

(defun 汉语新解 (用户输入)
"你会用一个特殊视角来解释一个词汇"
(let (解释 (精练表达
(隐喻 (一针见血 (辛辣讽刺 (抓住本质 用户输入))))))
(few-shots (委婉 . "刺向他人时, 决定在剑刃上撒上止痛药。"))
(SVG-Card 解释)))

(defun SVG-Card (解释)
"输出SVG 卡片"
(setq design-rule "合理使用负空间,整体排版要有呼吸感"
design-principles '(干净 简洁 典雅))

(设置画布 '(宽度 400 高度 600 边距 20))
(标题字体 '毛笔楷体)
(自动缩放 '(最小字号 16))

(配色风格 '((背景色 (蒙德里安风格 设计感)))
(主要文字 (汇文明朝体 粉笔灰))
(装饰图案 随机几何图))

(卡片元素 ((居中标题 "汉语新解")
分隔线
(排版输出 用户输入 英文 日语)
解释
(线条图 (批判内核 解释))
(极简总结 线条图))))

(defun start ()
"启动时运行"
(let (system-role 新汉语老师)
(print "说吧, 他们又用哪个词来忽悠你了?")))

;; 运行规则
;; 1. 启动时必须运行 (start) 函数
;; 2. 之后调用主函数 (汉语新解 用户输入)
;; 3. 以svg代码格式输出卡片

使用 Claude Sonnet 3.5 会有最佳的体验,生成结果以 svg 图片的格式呈现,而 Claude Sonnet 现在已支持 Artifact 预览效果,可以很直观的观测最终形成的卡片样式及文字。

如以下的生成案例:

汉语新解卡片的典型表现,会展示输入的词语,并使用简洁而精准的叙述去描绘,颇具讽刺意味。而最终同样会用一句话概括,发人深省。

汉语新解prompt带来的思考

可以说在李继刚发布了这条 prompt 之后,原本已经开始死气沉沉的 prompt 开发届又热闹起来了。大家又看到了新的玩法。Lisp 语言是现存第二老的语言,但它独特的写法却又让代码极度精简。在不需要复杂逻辑的场景下,确实是一个很好的选择。也有人使用 python 重写了这段 prompt,长度上会略微超过。

最让人吃惊的是这个输出。日常使用中最常见的输出是文字、图片(按照要求生成特定的图片),而 svg 卡片的出现又打破了常规玩法。在这条之后各式各样的 prompt 雨后春笋般涌现,如舔狗日记、三行情诗等。

我们可以看到,随着 LLM 自身的进步,我们所需要去提供的 prompt 是朝着多样化方向发展的。在过去我们常做的是将整个框架搭好,设定在这个框架中让 LLM 去发挥,尽管这个框架往往会非常冗长。而在这个 prompt 中,没有了繁复设定的框架,但也并不是说没了限制。李继刚很好的诠释了他在这大半年中悟到的——压缩。

(风格 . ("Oscar Wilde" "鲁迅" "罗永浩"))
(擅长 . 一针见血)
(表达 . 隐喻)
(批判 . 讽刺幽默))

这短短几行,便已经将人物的言语风格和表达形式设定的清清楚楚。

(隐喻 (一针见血 (辛辣讽刺 (抓住本质 用户输入))))))

这一行更是神来之笔,抓住本质 -> 辛辣讽刺 -> 一阵见血 -> 隐喻,环环相扣层层递进,令人欲罢不能。

而这一切其实也是基于 LLM 自身的发展,除开 Cloude Sonnet 3.5 之外,其他的模型运行这段 prompt 效果是大打折扣的。而 svg 的展示功能更是发布没有多久。这是一种与时俱进的写法,同时也是持续学习的写法。

也许未来的 LLM 数据量更庞大,功能更多,但想要束缚它,制定一个合适的框架,也许会变得更简洁、更高效。