Agent Mentor Learn
Prompt 工程基础:如何写出有效的指令 · 第 6 / 6 节

第 06 课:针对不同任务的 Prompt 策略

本课目标:

  • 掌握代码生成任务的 prompt 最佳实践
  • 学会文档写作和总结的有效策略
  • 了解数据分析和提取的 prompt 技巧

前置知识:<< 05 调试和改进 Prompt

不同任务需要不同的 prompt 策略

你已经学会了 prompt 的基本结构、few-shot、CoT、调试方法——这些是通用技能。但不同类型的任务有各自的特点和陷阱,需要针对性的策略。

代码生成需要明确输入输出和边界条件;文档写作需要指定受众和语气;数据提取需要处理缺失值和格式统一。本课教你三类常见任务的具体技巧1

任务类型 1:代码生成

代码生成是最常见的 AI 应用场景之一。关键是把需求说清楚,AI 才能写出能用的代码1

代码生成的六要素

一个好的代码生成 prompt 应该包含1

  1. 编程语言和版本:Python 3.10、TypeScript 5.0
  2. 函数签名:输入参数类型、返回值类型
  3. 核心逻辑:要实现什么功能
  4. 边界条件:空输入、异常情况怎么处理,这体现的是防御性编程——假设输入可能不合法,提前想清楚怎么应对
  5. 代码风格:要不要注释、类型标注、错误处理
  6. 依赖限制:只用标准库、或者可以用哪些第三方库

对比:模糊 vs 清晰的代码 prompt

模糊 prompt

写一个 Python 函数处理用户数据

AI 只能瞎猜:什么数据?怎么处理?

清晰 prompt

写一个 Python 3.10 函数,要求:
功能:- 输入:包含用户信息的字典列表,每个字典有 name(str)、age(int)、email(str) 三个字段- 输出:过滤掉 age < 18 的用户,返回剩余用户的 email 列表(去重)
要求:- 包含类型标注(Type hints)- 处理缺失字段的情况(如果某个字典缺少 age 或 email,跳过该用户)- 只使用 Python 标准库- 包含文档字符串说明用法
示例:输入:[{"name": "Alice", "age": 20, "email": "a@example.com"},        {"name": "Bob", "age": 15, "email": "b@example.com"},       {"name": "Charlie", "age": 25, "email": "a@example.com"}]输出:["a@example.com"]

这个 prompt 明确了输入输出、边界条件、代码风格,AI 能一次写出可用的代码。

研究显示,明确写清需求细节的 prompt 能减少 68% 的来回修改1——你第一次就更可能拿到能直接用的代码。

代码生成的最佳实践

实践 1:明确输入输出的数据结构

不要说"处理数据",要说"输入是 List[Dict[str, Any]],输出是 Dict[str, int]"。

实践 2:用示例澄清边界情况

处理这些特殊情况:- 空列表输入 → 返回空列表- None 值 → 跳过- 重复值 → 保留第一次出现的

实践 3:指定代码风格

代码风格要求:- 使用 type hints- 包含 docstring(Google 风格)- 不要过度注释(不要解释显而易见的代码)- 优先可读性,其次性能

实践 4:说明不要什么

不要:- 不要使用全局变量- 不要引入外部依赖(只用标准库)- 不要写测试代码(只要主函数)

代码审查 prompt

让 AI 审查代码时,明确审查维度:

审查下面的 Python 代码,关注以下方面:
1. 正确性:逻辑错误、边界条件处理2. 性能:时间复杂度分析、可能的瓶颈3. 安全性:SQL 注入、XSS、输入验证
不要评论代码风格和命名(这些已经通过 lint 检查了)。
对每个发现的问题,说明:- 问题位置(行号或代码片段)- 问题类型(bug / 性能 / 安全)- 具体影响(什么情况下会出错)- 修复建议
代码:[粘贴代码]

明确审查维度,AI 不会浪费时间在不重要的细节上。

任务类型 2:文档写作和总结

文档写作包括:技术文档、会议纪要、文章总结、报告生成。

文档写作的关键要素

  1. 目标受众:技术人员 vs 非技术人员
  2. 写作目的:说明使用方法 vs 说服决策者
  3. 语气风格:正式 vs 随意、详细 vs 简洁
  4. 结构模板:用什么章节组织内容

对比:文档总结 prompt

模糊 prompt

总结这篇技术文档

清晰 prompt

你是一位技术作家,擅长把复杂的技术文档改写为易懂的总结。
任务:将下面的 API 文档总结为面向前端开发者的快速入门指南。
受众:有 JavaScript 基础,但没用过这个 API 的前端工程师。
输出格式:1. 一句话说明这个 API 是做什么的2. 三个最常用的功能(每个功能:用途 + 代码示例)3. 一个完整的使用场景示例4. 常见错误和解决方案(2-3 个)
语气:直接、实用,避免营销话术。
长度:不超过 800 字。
原始文档:[粘贴文档]

这个 prompt 明确了受众(前端工程师)、目的(快速入门)、结构(四个部分)、语气(实用)。

文档写作的最佳实践

实践 1:明确目标受众的背景

受众:- 职位:产品经理- 技术水平:不懂编程,但理解基本的软件架构概念- 阅读目的:决定是否采用这个方案

实践 2:提供结构模板

按以下结构组织:
## 背景为什么需要这个方案(1 段)
## 方案对比| 方案 | 优点 | 缺点 | 成本 ||------|------|------|------|| ...  | ...  | ...  | ...  |
## 推荐推荐哪个方案,为什么(2-3 段)
## 风险实施这个方案的主要风险和应对措施(列表)

实践 3:控制详细程度

详细程度:- 每个论点用 1-2 句话说明,不要展开- 省略实现细节,只讲业务影响- 不要引用具体的代码或技术术语

会议纪要 prompt

你是一位项目助理,擅长从会议录音/记录中提炼关键信息。
任务:根据下面的会议记录,写一份会议纪要。
输出结构:1. 会议信息   - 时间:YYYY-MM-DD   - 参与人:[列表]   - 主题:[一句话]
2. 讨论内容(按优先级排序)   每个议题包括:   - 问题描述(1 句话)   - 讨论要点(2-3 条)   - 决策结果(明确的结论,如果没有达成一致,写"待定")
3. 待办事项   每项包括:   - 任务描述(动词开头,可执行)   - 负责人   - 截止日期
约束:- 只记录有明确结论的讨论,略过闲聊- 待办事项必须可检查(有明确的交付物)- 总长度不超过 500 字
会议记录:[粘贴记录]

任务类型 3:数据分析和提取

数据分析包括:从文本中提取结构化信息、分类、筛选、统计。

数据提取的关键要素

一个可靠的数据提取 prompt,要提前交代四件事:

  1. 字段定义:每个字段的含义和取值范围
  2. 缺失值处理:找不到某个字段时怎么办
  3. 输出格式:JSON、CSV、表格
  4. 数据验证:提取后的数据是否需要验证

对比:数据提取 prompt

模糊 prompt

从这段招聘信息中提取关键信息

清晰 prompt

从招聘信息中提取以下字段,输出为 JSON 格式。
字段定义:- position (string): 职位名称- location (string): 工作地点(城市+区,如果有)- experience (string): 经验要求(保留原文描述,如"3-5年"、"不限")- salary (string): 薪资范围(保留单位,如"20-30k/月"、"面议")- company (string): 公司名称
缺失值处理:- 如果某个字段在原文中找不到,输出 null- 不要猜测或推断缺失的信息
示例 1:输入:急招 Java 工程师,深圳南山,3年以上经验,月薪 25-35k,XX 科技公司输出:{  "position": "Java 工程师",  "location": "深圳南山",  "experience": "3年以上",  "salary": "25-35k/月",  "company": "XX 科技公司"}
示例 2:输入:前端开发,远程,薪资面议输出:{  "position": "前端开发",  "location": "远程",  "experience": null,  "salary": "面议",  "company": null}
现在处理:[粘贴招聘信息]

示例覆盖了完整情况和缺失情况,AI 知道找不到信息时输出 null,而不是编造——这种一本正经编造事实的行为叫幻觉 (Hallucination)。

数据提取的最佳实践

实践 1:明确每个字段的取值范围

字段:sentiment (情感分类)取值:只能是这三个值之一:"正面" / "负面" / "中性"不要输出:positive, 积极, 好评 等其他词

实践 2:用 few-shot 统一格式

提取结构化数据时,2-3 个示例比文字说明更有效(第 03 课讲过的 few-shot)。

实践 3:说明如何处理边界情况

特殊情况:- 如果一段文字包含多个情感("产品不错,但价格太贵")→ 分类为"中性"- 如果是纯粹的疑问句("这个怎么用?")→ 分类为"中性"- 如果文字过短(少于 3 个字)→ 输出 null

实践 4:加入数据验证

验证规则:- salary 字段必须包含数字- experience 如果不是 null,必须包含"年"或"不限"- location 不能是空字符串,要么有值,要么 null
如果提取的数据不符合验证规则,返回错误信息而不是不合法的数据。

通用原则的应用

不管什么任务,前面学的通用原则仍然适用:

  • 四要素(第 02 课):角色、任务、格式、约束
  • Few-shot(第 03 课):复杂任务给 2-3 个示例
  • CoT(第 04 课):需要推理的任务加"让我们一步步思考"
  • 调试(第 05 课):一次改一个地方,用测试用例验证

本课的任务特定策略是在通用原则基础上的针对性优化

  • 代码生成 → 强调输入输出类型、边界条件、不要什么
  • 文档写作 → 强调受众背景、结构模板、语气风格
  • 数据提取 → 强调字段定义、缺失值处理、few-shot 示例

小结

不同任务需要不同的 prompt 策略:

  • 代码生成:明确输入输出类型、边界条件、代码风格、依赖限制;用示例澄清特殊情况
  • 文档写作:明确受众背景和技术水平、提供结构模板、控制详细程度和语气
  • 数据提取:定义每个字段的取值范围、说明缺失值处理、用 few-shot 统一格式、加入数据验证

这些策略建立在前面学的通用技能(四要素、few-shot、CoT、调试)基础上,是针对具体任务类型的优化。实践中,根据你的任务选择合适的策略组合。

课程总结

你已经完成了 Prompt 工程基础的全部 6 课:

  1. 理解了 prompt 的本质和重要性
  2. 掌握了 prompt 的四大核心要素
  3. 学会了用 few-shot 通过示例引导 AI
  4. 应用了 chain-of-thought 展示推理过程
  5. 建立了系统化的调试和优化流程
  6. 了解了不同任务类型的特定策略

现在你有了完整的工具箱。下一步是实践:选一个你工作中的实际任务,应用这些技巧,观察效果,持续优化。Prompt 工程是一项通过实践提升的技能——理论课程到此结束,真正的学习从使用开始。

Footnotes

  1. Prompt Engineering for Code Generation — https://graphite.com/guides/better-prompts-ai-code 2 3 4

练习

01

给定三个任务,为每个任务选择最关键的策略要点,并说明原因。

Level 1:选择合适的任务策略

任务 A:让 AI 生成一个 Python 函数,实现二分查找 任务 B:让 AI 将技术白皮书总结为面向管理层的 2 页报告 任务 C:让 AI 从一批客户邮件中提取:客户名称、问题类型、紧急程度

为每个任务回答:

  1. 这属于哪种任务类型?(代码生成/文档写作/数据提取)
  2. 最关键的 3 个策略要点是什么?
  3. 为什么这 3 个要点对这个任务最重要?
完成标准 · 本地勾选
02

选择下面一个场景,设计一个完整的 prompt,综合运用本课程学到的所有技巧。

Level 2:综合设计任务 prompt

场景选项

场景 1:代码审查助手

  • 让 AI 审查一段 Python 代码,找出潜在的性能问题和安全漏洞
  • 输出结构化的审查报告,按严重程度排序
  • 每个问题包含:位置、问题描述、修复建议、优先级

场景 2:学习笔记生成器

  • 给 AI 一段技术讲座的文字稿
  • 生成结构化的学习笔记:核心概念、关键要点、实践建议、进阶阅读
  • 面向初学者,语言通俗易懂

场景 3:客户反馈分析器

  • 从 10-20 条客户反馈中提取共性问题
  • 输出:问题分类、每类问题的频次、具体示例、建议的改进方向
  • 用于产品迭代决策

要求: 设计的 prompt 必须:

  1. 包含四要素(角色、任务、格式、约束)
  2. 如果需要示例,提供 2-3 个 few-shot 示例
  3. 如果涉及推理或分析,加入 CoT 引导
  4. 考虑了边界情况和缺失值处理
  5. 输出格式清晰,便于后续使用
完成标准 · 本地勾选