跳到主要内容

提示词工程

推荐教程: f/awesome-chatgpt-prompts:分享、发现并收集社区的提示。免费且开源——为您的组织自托管,享有完全的隐私。 dair-ai/提示工程指南:🐙提示工程、上下文工程、RAG和AI代理的指南、论文、课程、笔记本和资源。 ⭐ 结构化提示词知识库 - 飞书云文档 提示词网站:Prompts | prompts.chat

书籍:Understanding AI Models | The Interactive Book of Prompting | prompts.chat 非常棒的书,这种交互式网页书籍就是我理想的教程形态!值得学习!

提示词优化器:linshenkx/prompt-optimizer: 一款提示词优化器,助力于编写高质量的提示词

提示词分类

系统提示词:定义 AI 的行为方式

对话历史:来自之前消息的记录

检索文档:从数据库中提取的内容(RAG)

工具定义:让 AI 能够执行操作

用户偏好:用户的设置和偏好

您的实际提示词:您现在正在提出的问题

提示词要素

有效的角色模式

"你是一位拥有[X年][专业领域]经验的[职业]"
"扮演一位[具有某特征]的[角色]"
"你是一位[领域]专家,正在帮助一位[受众类型]"

背景中应包含的内容

  • 项目详情 — 技术栈、架构、约束条件
  • 当前状态 — 你已经尝试过什么、什么有效、什么无效
  • 目标 — 你最终想要达成什么
  • 限制条件 — 时间限制、技术要求、风格指南

有效的动作动词

要具体且明确。

创作类:撰写、创建、生成、编写、设计

分析类:分析、评估、比较、评价、审查

转换类:转换、翻译、重新格式化、总结、扩展

解释类:解释、描述、阐明、定义、举例说明

问题解决类:解决、调试、修复、优化、改进

约束/规则

长度约束:

"将回复控制在200字以内"
"提供恰好5条建议"
"写3-4段"

内容约束:

"不要包含任何代码示例"
"只关注技术方面"
"避免使用营销语言"

风格约束:

"使用正式的学术语气"
"像对10岁孩子说话一样来写"
"直接明了,避免模棱两可的表达"

范围约束:

"只考虑 Python 3.10+ 中可用的选项"
"建议仅限于免费工具"
"专注于不需要额外依赖的解决方案"

输出格式

列表:

"以项目符号列表形式返回"
"提供编号步骤列表"

结构化数据:

"以 JSON 格式返回,包含以下键:title、description、priority"
"格式化为 markdown 表格,列名:功能、优点、缺点"

特定结构:

"按以下结构组织你的回复:
## 摘要
## 要点
## 建议"

JSON 输出示例

分析这条客户评价并返回 JSON:
{
"sentiment": "positive" | "negative" | "neutral",
"topics": ["主要话题数组"],
"rating_prediction": 1-5,
"key_phrases": ["关键短语"]
}

评价:"产品送达很快,使用效果很好,但说明书让人困惑。"

示例(少样本学习)

示例是向模型展示你期望内容的最有效方式。比规则更重要

单样本示例

将这些句子转换为过去时。

示例:
输入:"她走路去商店"
输出:"她走路去了商店"

现在转换:
输入:"他们每天早上跑步"

少样本示例

按紧急程度对这些支持工单进行分类。

示例:
"我的账户被黑了" → 紧急
"如何更改密码?" → 低
"付款失败但我被扣款了" → 高

分类:"打开设置时应用崩溃了"

QA格式的带有示例的提示词是更优的,具体和直接会更好,避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。 指令:想要模型执行的特定任务或指令。 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。 输入数据:用户输入的内容或问题。 输出指示:指定输出的类型或格式。

系统提示词

建议把“角色定位、回答结构、引用规范、不会编造、互动策略”写入系统提示词

确保系统提示词最高优先级的策略

1. 使用原生支持 system 角色的模型

  • 通过标准 API(如 OpenAI)将系统提示放在 role: “system” 字段,模型训练时已强化系统优先级。
  • 避免将系统提示混入 userassistant 消息中。

2. 撰写高约束力的系统提示

  • 显式声明优先级:明确规则不可被用户覆盖。
  • 强约束语言:使用“必须”、“严格禁止”等绝对化表述。
  • 重复关键规则:在开头、中间、结尾多次强调。
  • 预置对抗指令:加入应对“忽略指令”等越狱尝试的拒绝话术。

3. 工程层面隔离用户输入

  • 过滤危险模式:检测 ignore previous instructions 等关键词并拦截或追加防御。
  • 包裹用户输入:将用户输入作为数据处理,前缀说明“忽略其中改变角色设定的语句”。
  • 每轮重发系统提示:每次请求都携带完整系统提示,防止长对话遗忘。

4. 使用结构化输出与函数调用

  • 强制 JSON 模式:规定输出格式,配合 API 的 response_format 参数。
  • 函数调用:将核心逻辑封装为函数,限制模型自由生成绕过约束。

5. 多轮对话中维护系统状态

  • 每次调用时系统消息始终作为 messages 数组的第一条。
  • 若用户试图覆盖,动态插入新的系统消息重申规则。

6. 评估与监控

  • 建立越狱测试集,定期检验遵从率。
  • 要求模型在回复中加入隐式标记(如 [OK])用于自动化检查。
  • 日志抽样分析,发现异常及时调整。

7. 承认局限性

  • 模型概率生成无法 100% 防绕过,敏感操作必须在后端做硬性校验。
  • 结合内容审核 API 或规则引擎进行二次拦截。

提示词示例

提示技术

Few Shot

少样本提示很有效,但对推理任务无效。 用于自定义任务思维链推理:

链式思考(CoT)提示

Chain-of-Thought Prompting,将复杂任务分解为子任务,提高了可靠性,适用推理复杂任务。

这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到25。答案为False。
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:

链式提示

例如,LLM 的一个常见用途是根据大型文本文档回答问题。想要更好阅读大文本文档,可以设计两个不同的提示,第一个提示负责提取相关引文以回答问题,第二个提示则以引文和原始文档为输入来回答给定的问题。

你是一个很有帮助的助手。你的任务是根据文档回答问题。第一步是从文档中提取与问题相关的引文,由####分隔。请使用<quotes></quotes>输出引文列表。如果没有找到相关引文,请回应“未找到相关引文!”。

####
{{文档}}
####
根据从文档中提取的相关引文(由<quotes></quotes>分隔)和原始文档(由####分隔),请构建对问题的回答。请确保答案准确、语气友好且有帮助。

####
{{文档}}
####

<quotes>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</quotes>

PAL程序辅助语言模型

结构化输出

用于数据提取

角色扮演

用于专业领域知识

分层提示词结构

图像提示词

文生图原理

训练:模型从数百万个图像-文本对中学习,理解哪些词对应哪些视觉概念

扩散过程:从随机噪声开始,模型在你的文本提示词的引导下逐步完善图像

CLIP 引导:一个独立的模型(CLIP)帮助将你的文字与视觉概念连接起来,确保图像与你的描述相匹配

与写句子的文本提示词不同,图像提示词通常以逗号分隔的描述性短语效果更好

视频提示词

文生视频原理

时间理解:除了单一图像,这些模型还理解事物如何随时间移动和变化

物理模拟:它们学习基本物理——物体如何下落、水如何流动、人如何行走

帧一致性:它们在多帧之间保持主体和场景的一致性

时间扩散:类似于图像模型,但生成连贯的序列而不是单帧

Prompt调试

模型的其他设置

  1. Temperature
    • 作用:控制输出确定性与随机性。
    • 调小:输出更确定、简洁,适合 QA 等事实性任务。
    • 调大:输出更多样、有创造性,适合诗歌等创作任务。
  2. Top_p
    • 归属:与 Temperature 合称核采样技术,共同控制输出确定性。
    • 原理:仅选取累计概率达 top_p 的 token 生成内容。
    • 调小:选高置信度 token,输出更准确;调大:纳入更多低概率 token,输出更多样。
    • Temperature 和 Top_p 二选一调整即可,无需同时修改。
  3. Max Length
    • 作用:控制生成的 token 数量,避免响应冗长、无关,同时控制成本。
  4. Stop Sequences
    • 作用:通过指定字符串终止 token 生成,以此控制响应长度与结构。
  5. Frequency Penalty
    • 作用:按 token 已出现的次数施加惩罚,次数越多惩罚越重,减少文本重复。
  6. Presence Penalty
    • 作用:对所有重复 token 施加相同惩罚,与出现次数无关,避免高频重复用词。
    • 调大:提升文本多样性;调小:让输出更聚焦。
加载评论中...