首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Prompt Engineering从入门到精通

Prompt Engineering从入门到精通

作者头像
编程小白狼
发布于 2026-11-04 08:57:30
发布于 2026-11-04 08:57:30
1240
举报
文章被收录于专栏:编程小白狼编程小白狼

把「和AI对话」从玄学变成工程学

为什么需要Prompt Engineering

"同样用GPT-4,为什么别人10分钟做完的工作,我要一个小时?"

这是我经常听到的抱怨。答案往往出在Prompt上。

好的Prompt和差的Prompt,输出的质量差距是数量级的。Prompt Engineering不是玄学,而是一门可以学习和复制的工程技能。

这篇文章从我半年多的实践出发,从基础到高级,系统性地分享Prompt Engineering的方法论和实战技巧。

一、Prompt的基础结构

一个高质量的Prompt通常包含几个要素:

代码语言:javascript
复制
[角色]      → 你是一个资深Java开发工程师
[任务]      → 请审查以下代码,找出潜在问题
[上下文]    → 这段代码是订单服务的核心方法
[约束]      → 只关注安全和性能问题,不要管代码风格
[输出格式]  → 用表格输出,包含:问题描述、严重程度、行号、修改建议
[示例]      → 最好给一个输出样例
黄金Prompt公式
代码语言:javascript
复制
角色 + 任务 + 上下文 + 约束 + 格式 = 高质量输出

实战对比:

❌ 差的Prompt:

代码语言:javascript
复制
帮我写一段Python代码做数据清洗。

✅ 好的Prompt:

代码语言:javascript
复制
你是一个数据清洗专家。我需要一个Python函数,用于清洗电商订单数据。

任务:清洗包含以下问题的原始数据
- 空值和缺失值处理
- 日期格式统一(统一为YYYY-MM-DD)
- 金额格式清洗(去除货币符号,转为浮点数)
- 去除完全重复的行

上下文:原始数据是CSV格式,约有5万行,包含字段:order_id, amount, date, status, customer_name

约束:
1. 使用pandas库
2. 内存敏感,不要一次性加载全部数据
3. 保留清洗日志,记录每步处理了多少条数据
4. 返回清洗后的DataFrame和清洗报告

输出格式:完整的Python函数,包含详细的注释和docstring

二、基础技巧:让AI理解你

技巧1:明确角色设定

给AI一个明确的角色,能大幅提升输出质量。

代码语言:javascript
复制
# 弱
帮我优化一下这段SQL

# 强
你是一个有10年经验的DBA,擅长MySQL性能优化。
请审查以下SQL,从索引使用、执行计划、锁竞争三个维度给出优化建议。
技巧2:提供足够的上下文

AI没有"常识"——你认为显而易见的事情,AI不知道。

代码语言:javascript
复制
# 弱
帮我看看这段代码有什么问题

# 强
这段代码是用户注册接口的核心逻辑,运行在生产环境。
当前问题:偶尔出现注册成功后无法登录的情况。
语言:Java 17
框架:Spring Boot 2.7
数据库:MySQL 8.0
请从并发安全、事务管理、异常处理三个角度审查。
技巧3:负面约束(告诉AI不要做什么)

告诉AI什么不该做,比告诉它该做什么更有效。

代码语言:javascript
复制
请审查以下需求文档。
注意:
- 不需要评估技术可行性
- 不要讨论UI/UX设计
- 只关注业务逻辑的完整性和一致性
技巧4:分步引导(Chain-of-Thought)

对于复杂任务,引导AI分步思考:

代码语言:javascript
复制
请逐步分析这个问题:
第一步:列出所有参与的服务和组件
第二步:分析正常情况下的数据流
第三步:分析可能的故障点
第四步:给出根因假设
第五步:验证假设的方法

三、进阶技巧:让AI输出更精准

技巧5:Few-shot示例

对于格式有要求的输出,给1-3个示例能让AI更快理解你的需求:

代码语言:javascript
复制
请将以下用户反馈进行分类,类别包括:技术问题、产品建议、投诉、其他。

示例:
输入:"APP打开就闪退,根本用不了"
输出:{"category": "技术问题", "sentiment": "负面", "priority": "高"}

输入:"建议增加夜间模式,晚上看太刺眼了"
输出:{"category": "产品建议", "sentiment": "中性", "priority": "中"}

现在请分类:
输入:"你们客服电话打不通,等了半小时没人接"
技巧6:格式约束与结构化输出

需要特定格式时,明确指定:

代码语言:javascript
复制
请用JSON格式输出,包含以下字段:
{
  "summary": "摘要(50字以内)",
  "issues": ["问题1", "问题2"],
  "recommendations": ["建议1", "建议2"],
  "risk_level": "high/medium/low"
}

不要输出任何其他内容,只输出JSON。
技巧7:迭代优化(一句一句改)

不要期望一次Prompt就得到完美结果。好的Prompt是迭代出来的:

代码语言:javascript
复制
# 第一轮
请写一篇关于微服务的文章

# 第二轮(优化)
请写一篇面向技术管理者的微服务文章,重点讨论迁移成本和收益

# 第三轮(继续优化)
请把第三段"迁移成本分析"展开,包含:
- 团队培训成本(按15人团队估算)
- 基础设施改造成本
- 迁移期间的业务风险
- ROI计算模型
技巧8:温度参数调整

对于需要创意的任务(头脑风暴、文案),用高温度(0.7-0.9) 对于需要精确的任务(代码、数据分析),用低温度(0.1-0.3)

代码语言:javascript
复制
# 严谨分析
response = client.chat.completions.create(
    model="gpt-4",
    temperature=0.1,
    messages=[...]
)

# 创意写作
response = client.chat.completions.create(
    model="gpt-4",
    temperature=0.8,
    messages=[...]
)

四、高级模式:复杂场景的Prompt设计

模式1:思维链(Chain-of-Thought)

适合需要推理的复杂问题:

代码语言:javascript
复制
请一步步推理以下问题:

阿里云某ECS服务器的CPU利用率持续在95%以上,
但监控显示该服务器上只运行了一个Nginx进程,
Nginx的CPU使用率只有20%。

请分析可能的原因。
过程(逐步推理):
1. 首先...
2. 其次...
3. 然后...
4. 结论...
模式2:反思自省

让AI自己检查自己的输出:

代码语言:javascript
复制
请先回答上面的问题,然后:
1. 审查你的推理过程,是否有遗漏的可能性?
2. 你的结论有多少把握(百分比)?
3. 如果需要更多信息来确证,需要什么信息?
模式3:角色辩论

让AI扮演不同角色,从多角度分析同一个问题:

代码语言:javascript
复制
请你先扮演"安全工程师",再扮演"产品经理",最后扮演"架构师"。
分别从这三个角色角度,评估"增加用户头像上传功能"这个需求,
并给出各自的意见和理由。

最后请作为项目经理,综合三个角色的意见,给出最终决策建议。
模式4:Prompt Chaining(多轮Prompt串联)

复杂的任务分解成多个子任务,每个子任务用一个专门的Prompt:

代码语言:javascript
复制
def ai_article_generator(topic):
    # Step 1: 生成大纲
    outline_prompt = f"生成一篇关于{topic}的技术文章大纲,4-6个章节"
    outline = call_llm(outline_prompt)
    
    # Step 2: 逐章展开
    full_article = ""
    for chapter in outline:
        chapter_prompt = f"基于以下大纲,撰写'{chapter}'章节的内容:\n{outline}"
        chapter_content = call_llm(chapter_prompt)
        full_article += chapter_content
    
    # Step 3: 润色合并
    polish_prompt = f"请润色以下文章,确保段落连贯、风格统一:\n{full_article}"
    final_article = call_llm(polish_prompt)
    
    return final_article
模式5:System Prompt vs User Prompt

区别对待系统指令和用户输入:

代码语言:javascript
复制
messages = [
    {"role": "system", "content": """
        你是一个代码审查助手。
        规则:
        - 只审查安全性和性能问题
        - 用中文回答
        - 用表格输出结果
        - 不确定的问题标记为"待确认"
    """},
    {"role": "user", "content": f"请审查以下代码:\n{code_snippet}"}
]

五、不同场景的Prompt模板

代码生成模板
代码语言:javascript
复制
角色:资深{语言}工程师
任务:实现{功能描述}
上下文:
- 项目架构:{架构说明}
- 已有代码:{相关代码}
- 依赖框架:{框架名}
约束:
- 遵循{命名规范}命名规范
- 包含完整的异常处理
- 添加充分的日志输出
- 编写单元测试
输出:完整的代码文件
数据分析模板
代码语言:javascript
复制
角色:数据分析专家
任务:分析以下数据,发现规律和异常
数据样本(前5行):
{数据}
分析要求:
1. 数据质量评估
2. 关键趋势分析
3. 异常值检测
4. 相关性分析
5. 业务建议
输出格式:Markdown报告
Bug排查模板
代码语言:javascript
复制
角色:资深{系统}运维专家
现象:{错误描述}
环境:{系统版本/配置}
日志:{关键日志}
排查要求:
1. 可能的原因列表(按可能性排序)
2. 每个原因的验证方法
3. 修复建议(按风险排序)
4. 预防措施

六、Prompt管理技巧

版本管理

像管理代码一样管理Prompt:

代码语言:javascript
复制
PROMPT_VERSIONS = {
    "v1.0": "初始版本",
    "v1.1": "增加了格式约束",
    "v1.2": "优化了角色设定",
    "v2.0": "改为JSON输出格式",
}
A/B测试

对同一个任务,用不同的Prompt版本测试效果:

代码语言:javascript
复制
def ab_test_prompt(task, prompt_a, prompt_b):
    result_a = call_llm(prompt_a.format(task=task))
    result_b = call_llm(prompt_b.format(task=task))
    
    # 让AI自己评价哪个更好
    eval_prompt = f"比较以下两个回答,哪个更好?为什么?\nA: {result_a}\nB: {result_b}"
    evaluation = call_llm(eval_prompt)
    
    return evaluation
Prompt模板库

建立团队的Prompt模板库,新成员直接复用:

代码语言:javascript
复制
prompt_templates/
├── code_review.yaml
├── bug_analysis.yaml
├── meeting_minutes.yaml
├── api_design.yaml
└── data_analysis.yaml

七、常见误区

  1. Prompt越长越好——❌ 太长反而引入噪声,关键信息被稀释
  2. 一次就能写好——❌ 好的Prompt需要多次迭代
  3. 万能Prompt——❌ 不同任务需要不同的Prompt设计
  4. 英语Prompt更好——❌ 中文模型用中文更准确
  5. 不需要测试——❌ 每次修改Prompt都要测试效果

总结

Prompt Engineering是一项需要刻意练习的技能,跟写代码一样需要:

  • 学习基础——理解Prompt的结构要素
  • 积累模板——建立自己的Prompt库
  • 持续迭代——好的Prompt是改出来的
  • 测试验证——用数据证明Prompt的效果

记住:AI的能力上限 = 模型的潜力 × 你的Prompt质量

你有什么好的Prompt技巧?欢迎分享!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 为什么需要Prompt Engineering
  • 一、Prompt的基础结构
    • 黄金Prompt公式
  • 二、基础技巧:让AI理解你
    • 技巧1:明确角色设定
    • 技巧2:提供足够的上下文
    • 技巧3:负面约束(告诉AI不要做什么)
    • 技巧4:分步引导(Chain-of-Thought)
  • 三、进阶技巧:让AI输出更精准
    • 技巧5:Few-shot示例
    • 技巧6:格式约束与结构化输出
    • 技巧7:迭代优化(一句一句改)
    • 技巧8:温度参数调整
  • 四、高级模式:复杂场景的Prompt设计
    • 模式1:思维链(Chain-of-Thought)
    • 模式2:反思自省
    • 模式3:角色辩论
    • 模式4:Prompt Chaining(多轮Prompt串联)
    • 模式5:System Prompt vs User Prompt
  • 五、不同场景的Prompt模板
    • 代码生成模板
    • 数据分析模板
    • Bug排查模板
  • 六、Prompt管理技巧
    • 版本管理
    • A/B测试
    • Prompt模板库
  • 七、常见误区
  • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档