Appearance
提示词技巧课程安排:
- 本节课:自顶向下讲解提示词技巧框架
- 下节课:讲解具体的提示词技巧
对 提示词技巧 的认知:提示词技巧只能发掘模型最后的潜力,不能让模型超越自身极限
- GPT3.5 能力 8 分 + 技巧 2 分 = 10 分
- GPT4 能力 18 分 + 技巧 2 分 = 20 分
用 写文章 类比 提示词技巧框架。
提示词载体
常见提示词载体:自然语言、XML、MD、JSON、伪代码...
类比写文章:文言文、白话文
作用:提升模型的逻辑理解能力
比如,MD 天生用来表达文章结构:
- #代表 大标题, ##代表副标题,可以明确表达 逻辑上的层级关系
- 无序列表 表达 同级并列关系
- 有序列表 表达 同级递进关系
因为模型懂 MD 语法,所以能清楚认识到这些逻辑关系
XML、JSON 等同理...
自然语言
plain
生成一首关于春天的诗。要有美感,体现自然风光和生机。
- 优点:直观、容易理解、适合普通用户
- 缺点:可能存在歧义、结构性较差
- 适用场景:简单任务
XML 格式
xml
<task>写诗</task>
<topic>春天</topic>
<requirements>
<style>有美感</style>
<elements>
<element>自然风光</element>
<element>生机</element>
</elements>
</requirements>
- 优点:结构清晰、层次分明、便于程序解析
- 缺点:较繁琐、普通用户理解有难度
- 适用场景:复杂任务场景、表达结构化内容
MD 格式
markdown
# 任务:创作春天主题诗歌
## 要求
- 主题:春天
- 风格:优美
- 内容要素:
- 自然景色
- 生机勃勃
- 优点:结构化程度适中、易读易写、与文章结构高度映射
- 缺点:格式不够严格
- 适用场景:文章逻辑
JSON 格式
json
{
"task": "写诗",
"parameters": {
"theme": "春天",
"style": "有美感",
"elements": ["自然风光", "生机"]
}
}
- 优点:结构化程度高、便于数据交换
- 缺点:不太直观、不易表达层级结构、输出较繁琐
- 适用场景:结构化输出
伪代码格式
json
GeneratePoem(
theme = "春天"
style = 有美感
include = [自然风光, 生机]
format = "经典"
)
- 优点:逻辑性强、简洁
- 缺点:需要编程知识
- 适用场景:程序员描述的复杂业务场景
提示词结构
作用:约定不同场景下的最佳实践
类比写文章:总分总、递进式、并列式...
CO-STAR 结构
新加坡政府组织的首届 GPT-4 提示工程大赛的获奖提示词框架(补充资料)。一条提示词要包含如下模块:
- C:context 上下文 要做事的背景信息
- O:Objective 目标 明确要实现什么目标
- S:Style 风格 写作风格
- T:Tone 语气 输出的语气
- A:Audience 受众 输出的受众,会根据受众理解能力调整输出
- R:Response 响应 规定输出的格式,JSON、专业报告等
LangGPT
全称 Language For GPT like llm,国人 云中江树 提出的提示词框架,也是我们实战篇使用的提示词结构。
核心理念:将复杂任务分解成结构化的指令
xml
<role>
你是一位专业的中英双语翻译专家
</role>
<task>
将用户输入的文本在中英文之间互译
</task>
<rules>
- 保持原文的意思和语气
- 翻译要自然流畅
- 专业术语需准确翻译
- 如遇到歧义词,提供多种可能的翻译
</rules>
<workflow>
1. 分析源文本的上下文和语境
2. 进行翻译
3. 校对和优化译文
4. 对专业术语或歧义处提供解释说明
</workflow>
特点
- 载体:XML 语法(非强制要求)
xml
# Role: 你是一位专业的中英双语翻译专家
# Task: 将用户输入的文本在中英文之间互译
## Rules
- 保持原文的意思和语气
- 翻译要自然流畅
- 专业术语需准确翻译
- 如遇到歧义词,提供多种可能的翻译
## Workflows
1. 分析源文本的上下文和语境
2. 进行翻译
3. 校对和优化译文
4. 对专业术语或歧义处提供解释说明
- 灵活性
提示词模块(以 LangGPT 为例)
模块按需组装,常见模块:
- role:设定 AI 助手的专业背景和行为模式,明确特定场景
- task:具体执行的任务,原始需求
- constraints:对内容输出的限定条件
- global:定义贯穿整个会话的全局变量
xml
<global>
$style = "有美感"
$language = "中文"
$topic = "春天"
</global>
<role>
你是一位经验丰富的诗人
</role>
<task>
撰写一首关于{$topic}的诗歌
</task>
<constraints>
- 字数限制: 100词
- 风格要求: {$style}
- 语言: {$language}
</constraints>
- workflow:规范任务执行步骤,特定场景下的最佳实践
- output_format:限定输出格式,功能类似 formatInstructions
- error_handling:当遇到不符合规范的输入时如何处理
可以根据需要自行扩展模块。
模块内容(以 LangGPT 为例)
模块内容本身也可以是多种载体,以 技术写作 为例:
xml
<global>
$style = "专业简洁"
$length = "中等"
$format = "markdown"
</global>
<role>
你是一位经验丰富的技术写作专家,擅长{$style}风格写作
</role>
<task>
创建技术文档和教程
</task>
<constraints>
- 文章长度: {$length}
- 输出格式: {$format}
- 语言: 中文
</constraints>
<workflow>
1. 分析需求阶段:
IF 用户提供主题:
分析主题关键点
ELSE:
请求用户明确主题
END IF
2. 内容规划阶段:
- 创建大纲
- 确定重点内容
- 设计示例代码
3. 写作阶段:
FOREACH 章节 IN 大纲:
- 撰写内容
- 添加示例
- 进行解释
END FOREACH
4. 审查阶段:
- 检查专业术语使用
- 确保格式统一
- 优化表达方式
</workflow>
<output_format>
# {标题}
## 概述
{概述内容}
## 主要内容
{详细内容}
## 示例
{示例代码和说明}
## 总结
{关键点总结}
</output_format>
载体之间可以嵌套,单次执行效果主要取决于模型推理能力
如何写提示词?
写提示词的步骤:
- 确定特定场景下的最佳实践
- 判断最佳实践的复杂度
- 简单:自然语言输出
- 中等:MD 格式输出
- 复杂:选定提示词载体和结构(默认 LangGPT)
- 选一个提示词生成工具,输入步骤 1 的输出:
- 调试并优化输出的提示词
如何优化?