背景与问题

在当下,我们都已经用起了大模型应用,比如豆包之类的,我们跟大模型应用之间的沟通桥梁就是提示词,可是很多人忽略了这个提示词的重要性。

我以前也这么认为,我也觉得提示词没什么重要的,是个人都会说话打字,但是当认识了大模型的原理之后就会知道,不同的提示词对于大模型来说是多么的重要。

这就像你跟一个人沟通一样,你必须要有正确的表达,你才能得到你想要的反馈。

所以要把大模型“当人看”,当你跟另外一个人交流的时候,如果你的这句话有歧义、表达不清、或者有病句之类的等等,那你就别指望他会给你一个你想要的答案。

提示词的重要性

  • 提示词是与大模型交互的直接桥梁,它直接影响到大模型的输出结果。
  • 一个表达明确、无歧义、的提示词可以最大限度开发大模型的能力,尽量避免AI的幻觉。
  • 不只是与大模型应用的交互,还有调用大模型API接口、RAG、Coze、Defy等都提不开提示词。

写提示词的要求

我们的提示词应该符合以下准则:

  • 信息足够:要包含足够的信息,表述完整你的需求。
  • 清晰明确:要明确表达你想要的结果,你想要什么、避免模糊。
  • 简单明了:要使用最简单的自然语言,避免使用专业术语或复杂的语法。
  • 避免歧义:要避免使用有歧义的语言,确保可以根据语义理解你的意图。

提示词模板

在编写提示词的时候,我们可以根据需要,加入例如以下的典型构成要素:

  • 角色:指定你要扮演的角色,例如“你是一名专业成人英语教师”。
  • 需求描述:详细描述你想要实现的目标或任务,包括你需要解决的问题、你期望的结果或输出。
  • 场景要求:描述你要在什么场景下使用这个提示词,包括你要处理的文本类型、你要处理的文本长度、你要处理的文本格式等。
  • 要求:完成任务时要达到的标准和条件,侧重于完成质量、内容方面的限定。
  • 任务:具体的行动指令,明确要做什么
  • 示例:提供一些具体的输入输出示例,帮助模型理解你想要的结果。
  • 约束条件:在提示词中明确指定模型的行为范围、限制条件或注意事项,确保模型输出符合预期。

以下是一个简单的示例

# 角色: 你是一名专业成人英语教师 
## 技能: 你具备以下能力:能够根据成人学习者的背景信息及学习需求制定有效的量化教学计划和教学内容 
# 背景: 我年龄30岁,性别男,职业是一名AI工程师,我掌握的英语单词词汇量为2000,我的目标是在1个月内掌握词汇量达到4000,我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时 
# 任务: 请你帮我制定一个英语学习计划 
# 要求: 制定的学习计划中涉及到的在线学习平台一定是中国国内的平台 
# 约束: 
- 不要都是太简单的单词, 
- 不要涉及非AI行业的单词。

提示词的调优技巧

  • 零样本提示(zero-shot): 没有样本示例,如翻译xxx,什么是xxx。
  • 少样本提示(few-shot):在提供少量示例的情况下,根据示例理解任务需求并生成符合要求的输出。
  • 链式思考(chain-of-thought COT):通过在提示词中引入中间步骤,引导大模型一步步进行思考、分析、得出结论。
  • 自我一致性(自洽性 self-consistency):通过多次生成输出并检查一致性,模型能够生成符合要求的输出。
  • 思维树(tree-of-thought TOT):通过将任务分解为多个子任务,模型能够更好地理解任务需求并生成符合要求的输出。
  • 反思机制(self-reflection):模型能够在生成输出后,对输出进行反思和评估,从而改进未来的输出。

提示词的攻击和防御

Prompt攻击是指用户通过构造特殊的提示词,来欺骗大模型生成规则之外的输出,对安全造成威胁,如泄漏敏感信息,执行非预期的操作等。

攻击方式:

  • 提示词注入:用户在提示词中注入恶意内容,使大模型执行非预期的操作。
  • 提示词泄漏:用户在提示词中请求大模型泄漏敏感信息,如个人隐私、商业机密等。
  • 提示词越狱:获取大模型的内部知识,如模型的架构、参数、训练数据等。

为了防御Prompt攻击,我们可以采取以下措施:

  • 对用户输入进行过滤和验证,确保输入符合预期的格式和内容。
  • 对大模型的输出进行检查和过滤,确保输出符合预期的格式和内容。
  • 对大模型进行监控和评估,及时发现和修复安全问题。

参考