Prompt工程:设计与优化#

Prompt工程基础原理#

什么是Prompt?#

Prompt(提示词)是用户与大语言模型交互的接口,是影响AI输出质量的关键因素。

1
2
3
4
5
6
7
8
# Prompt的基本结构
prompt_structure = {
    "角色设定": "你是一个专业的Python开发工程师",
    "任务描述": "请帮我优化以下代码的性能",
    "输入内容": "具体的代码或数据",
    "输出要求": "请提供优化后的代码和详细说明",
    "格式约束": "请按照JSON格式输出结果"
}

Prompt工程的核心原则#

1. 明确性原则#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 不好的Prompt
bad_prompt = "帮我写个函数"

# 好的Prompt  
good_prompt = """
请用Python写一个函数,要求:
1. 函数名:calculate_fibonacci
2. 功能:计算斐波那契数列的第n项
3. 参数:n (正整数)
4. 返回:第n项的值
5. 包含错误处理和详细注释
"""

2. 具体性原则#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 模糊的要求
vague_prompt = "分析这个数据"

# 具体的要求
specific_prompt = """
请分析以下销售数据:
1. 计算月度增长率
2. 识别季节性模式
3. 预测下季度趋势
4. 提供3个关键商业洞察
5. 用图表可视化结果
"""

3. 上下文原则#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 缺乏上下文
no_context = "这个结果对吗?"

# 丰富的上下文
with_context = """
背景:我正在开发一个电商推荐系统
问题:用户行为数据显示点击率很高但转化率很低
分析结果:推荐算法偏向热门商品,忽略了个性化
请问:这个分析结果是否合理?还有哪些可能的原因?
"""

提示词策略与技巧#

1. 角色扮演 (Role Playing)#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 专业角色设定
role_prompts = {
    "数据科学家": """
    你是一名资深数据科学家,拥有10年机器学习经验。
    请用专业、严谨的语言分析问题,并提供基于数据的建议。
    """,
    
    "产品经理": """
    你是一名优秀的产品经理,精通用户需求分析和产品设计。
    请从用户价值和商业价值角度分析问题。
    """,
    
    "技术专家": """
    你是一名技术架构师,擅长系统设计和性能优化。
    请提供技术实现方案和最佳实践建议。
    """
}

2. 思维链 (Chain of Thought, CoT)#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 标准CoT模板
cot_template = """
问题:{question}

请按以下步骤思考:
1. 问题分析:这个问题的核心是什么?
2. 信息收集:需要哪些信息和数据?
3. 方法选择:应该采用什么方法或策略?
4. 步骤规划:具体的执行步骤是什么?
5. 结果预期:预期的结果和可能的风险?
6. 解决方案:给出最终的答案和建议。

让我逐步分析:
"""

# 数学问题CoT示例
math_cot = """
问题:一个班级有30名学生,男生比女生多4人,求男女生各多少人?

思考过程:
1. 设女生人数为x,则男生人数为x+4
2. 根据总人数:x + (x+4) = 30
3. 化简方程:2x + 4 = 30
4. 解方程:2x = 26,x = 13
5. 验证:女生13人,男生17人,总共30人 ✓

答案:女生13人,男生17人
"""

3. 少样本学习 (Few-Shot Learning)#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# Few-Shot示例
few_shot_template = """
我需要你帮我将用户评论分类为正面、负面或中性。以下是一些示例:

示例1:
评论:"这个产品质量很好,物流也很快,非常满意!"
分类:正面

示例2:
评论:"还可以吧,没有想象中那么好,也不算差。"
分类:中性

示例3:
评论:"质量太差了,完全不值这个价钱,很失望。"
分类:负面

现在请分类以下评论:
评论:"{user_review}"
分类:
"""

4. 格式控制技巧#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# JSON格式输出
json_prompt = """
请分析以下文本的情感,并严格按照以下JSON格式输出:

{
  "sentiment": "正面/负面/中性",
  "confidence": 0.95,
  "keywords": ["关键词1", "关键词2"],
  "reasoning": "分析理由"
}

文本:{input_text}
"""

# 表格格式输出
table_prompt = """
请将以下信息整理成表格格式:

| 字段 | 值 | 说明 |
|------|----|----|
| 姓名 | 张三 | 员工姓名 |
| 部门 | 技术部 | 所属部门 |

信息:{input_info}
"""

# 列表格式输出
list_prompt = """
请提供3个关键建议,格式如下:

1. **建议标题**:具体建议内容
2. **建议标题**:具体建议内容  
3. **建议标题**:具体建议内容

问题:{question}
"""

高级Prompt技巧#

1. 分步骤指令#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
step_by_step_prompt = """
请按照以下步骤完成任务:

步骤1:理解需求
- 仔细阅读用户需求
- 识别关键要求和约束条件
- 确认理解是否正确

步骤2:分析方案
- 评估不同的解决方案
- 比较各方案的优缺点
- 选择最优方案

步骤3:实施执行
- 详细规划实施步骤
- 提供具体的操作指南
- 包含质量检查点

步骤4:结果验证
- 验证结果的正确性
- 检查是否满足要求
- 提供改进建议

任务:{task_description}
"""

2. 条件判断和分支#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
conditional_prompt = """
请根据以下条件选择不同的处理方式:

如果输入是数学问题:
- 使用逐步解题的方法
- 显示每个计算步骤
- 验证最终答案

如果输入是代码问题:
- 提供完整的代码实现
- 包含详细注释
- 添加测试用例

如果输入是分析问题:
- 使用结构化分析框架
- 提供数据支撑
- 给出可行建议

输入:{user_input}
"""

3. 递归和迭代优化#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
iterative_prompt = """
请使用迭代优化的方法来完善答案:

第一轮:给出初始答案
第二轮:检查答案的完整性和准确性
第三轮:优化表达和结构
第四轮:添加具体示例和细节
最终轮:整合所有优化,给出最终答案

问题:{question}
"""

Prompt模板库#

1. 商业分析模板#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
business_analysis_template = """
作为资深商业分析师,请分析以下商业问题:

# 问题背景
{background}

# 分析框架
请按照以下框架进行分析:

## 1. 现状分析
- 当前情况描述
- 关键数据和指标
- 存在的问题和挑战

## 2. 根因分析  
- 问题的根本原因
- 内外部影响因素
- 风险评估

## 3. 解决方案
- 可行的解决方案(至少3个)
- 方案对比和评估
- 推荐方案及理由

## 4. 实施计划
- 具体实施步骤
- 时间安排和里程碑
- 资源需求和预算

## 5. 成功指标
- KPI设定
- 监控机制
- 风险控制措施

请确保分析客观、数据驱动、切实可行。
"""

2. 技术文档模板#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
technical_doc_template = """
请编写技术文档,要求专业、清晰、完整:

# {title}

## 概述
- 功能简介
- 适用场景
- 技术特点

## 技术规范
- 系统要求
- 技术架构
- 接口定义

## 实现指南
- 安装配置
- 使用示例
- 最佳实践

## 问题排查
- 常见问题
- 错误代码
- 解决方案

## 性能指标
- 性能基准
- 优化建议
- 监控方法

请确保文档结构清晰、代码示例可运行、问题解答准确。

技术内容:{content}
"""

3. 创意写作模板#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
creative_writing_template = """
请进行创意写作,要求想象丰富、表达生动:

# 写作要求
- 主题:{theme}
- 风格:{style}
- 长度:{length}
- 目标受众:{audience}

# 创作指导
## 开头
- 吸引读者注意力
- 建立情景和氛围
- 引出主要人物或事件

## 发展
- 推进情节发展
- 深化人物性格
- 增加冲突和张力

## 高潮
- 达到情感或情节高峰
- 解决主要冲突
- 揭示关键真相

## 结尾
- 给出满意的结局
- 呼应开头主题
- 留下思考空间

请确保语言优美、情节连贯、主题鲜明。
"""

Prompt优化技巧#

1. A/B测试方法#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def prompt_ab_testing():
    """Prompt A/B测试示例"""
    
    # 版本A:简单直接
    prompt_a = "请总结这篇文章的主要内容"
    
    # 版本B:结构化要求
    prompt_b = """
    请按以下结构总结文章:
    1. 核心观点(1-2句话)
    2. 关键论据(3-5个要点)
    3. 结论和启示(1段话)
    """
    
    # 版本C:角色+结构化
    prompt_c = """
    作为专业的内容分析师,请深度总结这篇文章:
    
    📌 核心观点:文章的中心思想
    🔍 关键论据:支撑观点的主要证据
    💡 深度洞察:你的专业分析和见解
    🎯 实用价值:对读者的具体价值
    """
    
    return [prompt_a, prompt_b, prompt_c]

2. 迭代改进流程#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def prompt_optimization_process():
    """Prompt优化流程"""
    
    steps = [
        "1. 基线测试:使用基础prompt测试效果",
        "2. 问题识别:分析输出中的不足之处",  
        "3. 假设提出:提出改进的假设方向",
        "4. 设计实验:创建改进版本的prompt",
        "5. 对比测试:比较新旧版本的效果",
        "6. 数据分析:量化评估改进效果",
        "7. 持续优化:基于结果继续迭代"
    ]
    
    for step in steps:
        print(step)

3. 错误诊断和修复#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
common_prompt_issues = {
    "输出不稳定": {
        "问题": "同样的prompt得到不同的结果",
        "原因": ["temperature设置过高", "prompt太模糊", "缺乏约束条件"],
        "解决方案": ["降低temperature", "增加具体要求", "添加格式约束"]
    },
    
    "回答不准确": {
        "问题": "AI理解错误或回答偏题",
        "原因": ["问题描述不清", "缺乏上下文", "任务过于复杂"],
        "解决方案": ["重新表述问题", "提供更多背景", "分解复杂任务"]
    },
    
    "格式不规范": {
        "问题": "输出格式不符合要求",
        "原因": ["格式说明不明确", "示例不够清楚", "缺乏强制约束"],
        "解决方案": ["详细格式说明", "提供标准示例", "使用JSON Schema"]
    }
}

实战演练#

案例1:数据分析Prompt#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
data_analysis_prompt = """
你是一名资深数据分析师。请分析以下电商销售数据:

数据:{sales_data}

分析要求:
1. 📊 描述性统计:计算基本统计指标
2. 📈 趋势分析:识别销售趋势和季节性模式  
3. 🔍 异常检测:发现异常数据点和可能原因
4. 💡 商业洞察:提供3个关键商业发现
5. 📋 行动建议:给出具体的业务优化建议

输出格式:
- 使用清晰的标题和结构
- 包含具体的数值和百分比
- 提供可视化建议
- 结论要有数据支撑

请开始分析:
"""

案例2:代码Review Prompt#

1
2
3
4
5
code_review_prompt = """
作为高级软件工程师,请review以下代码:

```{language}
{code}

Review标准: 🔍 代码质量

  • 可读性和结构
  • 命名规范
  • 注释质量

性能优化

  • 时间复杂度
  • 空间复杂度
  • 潜在性能问题

🛡️ 安全性

  • 安全漏洞
  • 错误处理
  • 边界条件

🧪 可测试性

  • 单元测试覆盖
  • 模块化程度
  • 依赖管理

输出格式:

  1. 总体评分:(1-10分)
  2. 主要问题:按优先级列出
  3. 改进建议:具体的修改方案
  4. 优化代码:提供改进后的代码 """

通过系统学习这些Prompt工程技巧,您将能够设计出高质量的提示词,显著提升AI的输出效果和工作效率。