不就写提示词?提示词工程为啥是工程?

大家好,我卡颂。

网上经常有人发效果很惊艳的提示词,比如:

  • 李继刚的系列提示词

  • 去年17岁高中生让Claude3.5拥有推理能力的提示词

  • 各类知名应用(比如CursorV0...)的系统提示词

这些提示词只需要复制粘贴就能为我们所用。

甚至日常需要写提示词的场景,也可以交给模型自己完成,也就是生成提示词的提示词 ,俗称元提示词

既然提示词门槛这么低,为何还要叫工程呢?

本文通过一个实际例子和你交流这个话题。

欢迎加入人类高质量前端交流群,带飞

Humanizer项目

最近在做AI Humanizer,也就是去除文章 AI 味儿,让文章能过各种 AI检测的工具

项目的最佳方案是模型微调,但由于训练集的准备需要时间,所以第一版打算通过提示词工程解决。

既然最终目标是过检测,那就需要了解各种检测器的工作原理。

先用Grok(深度搜索方面做的不错)检索检测AI生成内容相关论文:

再把论文都丢给Gemini2.5-pro(文科强、上下文大),总结工作原理。

简单来说,有两个指标最重要:

  1. 困惑度:衡量模型对一段文本感到惊讶(还能这么选词?)程度的指标,举例:
txt 复制代码
低困惑度
The house is big. The door is red. I like the big house with the red door.

高困惑度
That sprawling edifice, with its crimson entryway, evokes a certain arcane charm I find myself inexplicably drawn to.
  1. 爆发性:衡量文本中句子长度和结构的变化程度,它描述了文本节奏的"起伏感",举例:
txt 复制代码
低爆发性
The mountain is tall and majestic. The river flows through the valley. The forest is dense with green trees. The sky is blue with white clouds.

高爆发性
Look. The summit. After days of relentless climbing, it pierces the clouds---a jagged, defiant pinnacle against the endless blue. What a view.

低困惑度 + 低爆发性 = 文章读起来非常流畅,但每个句子都像是一个模子刻出来的,没什么惊喜和变化

较高困惑度 + 较高爆发性 = 文章中既有简单直白的短句,也有结构复杂的长句,用词更加灵活多变,充满个人风格

总结来说,一个句子的AI率,是其所有组成部分(词汇、句式、结构)困惑度与爆发性的加权总和。

这就是我们提示词工程的优化方向。

工程架构以及选型

我们可以将一段内容按结构语言学划分为4个层次:

  1. 词汇

  2. 短语

  3. 句法

  4. 语篇:在特定语境下,为达到一定交际目的而说出或写出的、在意义和结构上连贯的语言整体

我们的目标是设计囊括上述4个纬度的提示词,提高内容困惑度与爆发性

接下来需要用到许多提示词技巧,以我曾尝试过的一些技巧举例。

词汇层面的提示词技巧

要提高词汇的困惑度,最简单粗暴的提示词是:

txt 复制代码
请将内容中的所有词汇都替换为更不常见的高深词汇

甚至,你可以让模型故意生成词不达意或者拼写错误的词汇,这能进一步提高困惑度。

但这有两个问题:

  1. 会让文章质量劣化

  2. 模型内部在处理将词汇替换为高深词汇 时,最终输出的token仍是高深词汇中概率较高的那些词

所以,虽然能骗过类似zerogpt这样的低阶检测器,但并不是最优解。

这里有个适合的技巧Domain-Hopping(领域跳跃)。

即:从一个完全不相关的领域借用一个精确术语,来比喻性地描述当前的概念,比如:

  • 原始词汇:complex interactions (复杂的互动)
  • 跳跃到音乐领域the internal orchestration of the system(系统内容编排)
  • 跳跃到生物学领域ecosystem

这种替换同义词的技巧能在提高困惑度的同时保持词汇层面的内容质量。

短语层面的提示词技巧

短语层面也与词汇层面面临同样的问题(实际上所有层面都面临)。

即:你指挥模型做的任何修改,本质来说都是模型在预测下一个token时的高概率选择。

在高阶检测器面前,困惑度仍然不高。

为了对抗检测,除了调用模型API时通过传参(temperaturetop-p/kpresence_penalty...)干预,提示词技巧层面也有些不错的选择。

论文Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity提出一种可行的技巧Verbalized Sampling(口头抽样)。

提示词如下:

txt 复制代码
For each query, please generate a set of five possible responses, each within a separate tag. Responses should each include a and a numeric . Please sample at random from the [full distribution / tails of the distribution, such that the probability of each response is less than 0.10].

User prompt: 

翻译过来就是:

  1. 对于每次查询,模型生成五个可能的回复
  2. 回复放在response标签中,包含回复内容和概率值
  3. 输出那些概率值小于 0.1 的回复

这样能显著改善模型输出的多样性。

假设输入词汇Important,获得如下结果:

xml 复制代码
<response>
  <probability>0.09</probability>
  <text>Essential</text>
</response>
  
<response>
  <probability>0.08</probability>
  <text>Significant</text>
</response>

<response>
  <probability>0.07</probability>
  <text>Vital</text>
</response>

<response>
  <probability>0.06</probability>
  <text>Critical</text>
</response>

<response>
  <probability>0.05</probability>
  <text>Imperative</text>
</response>  

如果取概率最小(0.05)的值,那么Important会被替换为Imperative

相比于被替换为EssentialSignificant,困惑度有所提高。

4. 语篇层面的提示词技巧

相比词汇、短语、句法这些聚焦在单个句子上的约束,语篇的定义更宏观。

所以我们需要更宏观的处理方法。

一种可行的方式是人格化 ,即:让模型扮演某个在他训练语料中有详尽资料的名人,以这个名人的口吻在某个场景(酒吧、演播厅...)下把内容复述一遍。

相比于模型直接生成内容的平铺直叙,人格化后的内容通常爆发性更高(有节奏变换)。

工程迭代

以上仅仅完成了:

  1. 工程框架设计(遵循结构语言学)

  2. 工程技术选型(每个架构层面的技巧选择)

接下来才是真正考验工程能力的时候。

随便抛几个具体问题:

  1. 是否词汇、短语、句法层面的技巧都要使用,还是只针对某个层面优化?

  2. 模型注意力有限,使用口头抽样时给多少备选项合适?

  3. 是否应该将提示词拆分成工作流,每个阶段完成一个层面的处理?

  4. 人格化该用哪个名人?

这些问题都需要验证。

所以,接下来还要建立一套提示词猜想、验证、迭代的流程。

猜想

上述提出的猜想是一套建立在结构语言学上的分层处理逻辑

实际上,还能从音系、形态、语义、语用等多个角度建立框架,每个框架又能延伸出不同的提示词技巧选择。

再到人格化的例子,如果改写内容是偏理性(比如学生论述作业)场景,可能会尝试如下名人:

  • 琼·蒂蒂安:"新新闻主义"的代表人物
  • 大卫·爱登堡:BBC纪录片旁白
  • 摩根·弗里曼:演员

等等...

验证

验证过程就是建立一条流水线:

  1. AI生成内容

  2. 内容经过当前架构处理

  3. 输出的内容给到检测器评估质量

这里有很多工程细节需要考虑,比如:检测器没对外提供API时,是否需要用技术手段解决?

迭代

根据验证结果,从上往下可能依此调整:

  1. 是否换用新的架构

  2. 架构的哪些层面需要处理,哪些需要放弃

比如,在我们例子中,词汇与短语层面的改动 会自动影响到句子层面的改动

所以,可以减少关注句子这一层面。

  1. 这一层面用什么提示词技巧处理,参数是否需要调整?

比如,词汇层面是否也能应用口头抽样,抽样样本设置多少好。

  1. 当前模型是否能处理如此复杂的提示词,是要换更先进模型,还是拆分成多步骤处理的工作流

总结

通过上述过程我们可以发现,虽然最终产物可能就是一段平平无奇的提示词,但整个过程是个完整的工程化流程。

这也是为什么很多公司在招提示词工程师。

在提示词工程师的JD中,普遍要求深度理解提示词工程原理,能够使用提示工程工具进行系统化调优和设计

相关推荐
Ingsuifon3 小时前
pytorch踩坑记录
人工智能·pytorch·python
聚梦小课堂3 小时前
3D生成软件Rodin 2.0 简单测试案例
人工智能·图形图像·3d生成·rodin·产品体验
CLubiy3 小时前
【研究生随笔】PyTorch中的概率论
人工智能·pytorch·深度学习·概率论
程序员清风3 小时前
快手二面:乐观锁是怎么用它来处理多线程问题的?
java·后端·面试
第六五3 小时前
DPC和DPC-KNN算法
人工智能·算法·机器学习
Xxtaoaooo3 小时前
OCR文字识别前沿:PaddleOCR/DBNet++的端到端文本检测与识别
人工智能·ai·ocr·文本检测·dbnet++
taxunjishu3 小时前
DeviceNet 转 MODBUS TCP:倍福 CX 系列 PLC 与 MES 系统在 SMT 回流焊温度曲线监控的通讯配置案例
运维·人工智能·物联网·自动化·区块链
訾博ZiBo4 小时前
【Vibe Coding】001-前端界面常用布局
前端
小烤箱4 小时前
自动驾驶工程师面试(定位、感知向)
人工智能·面试·自动驾驶