给定三个任务,为每个任务选择最关键的策略要点,并说明原因。
Level 1:选择合适的任务策略任务 A:让 AI 生成一个 Python 函数,实现二分查找 任务 B:让 AI 将技术白皮书总结为面向管理层的 2 页报告 任务 C:让 AI 从一批客户邮件中提取:客户名称、问题类型、紧急程度
为每个任务回答:
- 这属于哪种任务类型?(代码生成/文档写作/数据提取)
- 最关键的 3 个策略要点是什么?
- 为什么这 3 个要点对这个任务最重要?
本课目标:
- 掌握代码生成任务的 prompt 最佳实践
- 学会文档写作和总结的有效策略
- 了解数据分析和提取的 prompt 技巧
前置知识:<< 05 调试和改进 Prompt
你已经学会了 prompt 的基本结构、few-shot、CoT、调试方法——这些是通用技能。但不同类型的任务有各自的特点和陷阱,需要针对性的策略。
代码生成需要明确输入输出和边界条件;文档写作需要指定受众和语气;数据提取需要处理缺失值和格式统一。本课教你三类常见任务的具体技巧1。
代码生成是最常见的 AI 应用场景之一。关键是把需求说清楚,AI 才能写出能用的代码1。
一个好的代码生成 prompt 应该包含1:
❌ 模糊 prompt:
AI 只能瞎猜:什么数据?怎么处理?
✅ 清晰 prompt:
这个 prompt 明确了输入输出、边界条件、代码风格,AI 能一次写出可用的代码。
研究显示,明确写清需求细节的 prompt 能减少 68% 的来回修改1——你第一次就更可能拿到能直接用的代码。
实践 1:明确输入输出的数据结构
不要说"处理数据",要说"输入是 List[Dict[str, Any]],输出是 Dict[str, int]"。
实践 2:用示例澄清边界情况
实践 3:指定代码风格
实践 4:说明不要什么
让 AI 审查代码时,明确审查维度:
明确审查维度,AI 不会浪费时间在不重要的细节上。
文档写作包括:技术文档、会议纪要、文章总结、报告生成。
❌ 模糊 prompt:
✅ 清晰 prompt:
这个 prompt 明确了受众(前端工程师)、目的(快速入门)、结构(四个部分)、语气(实用)。
实践 1:明确目标受众的背景
实践 2:提供结构模板
实践 3:控制详细程度
数据分析包括:从文本中提取结构化信息、分类、筛选、统计。
一个可靠的数据提取 prompt,要提前交代四件事:
❌ 模糊 prompt:
✅ 清晰 prompt:
示例覆盖了完整情况和缺失情况,AI 知道找不到信息时输出 null,而不是编造——这种一本正经编造事实的行为叫幻觉 (Hallucination)。
实践 1:明确每个字段的取值范围
实践 2:用 few-shot 统一格式
提取结构化数据时,2-3 个示例比文字说明更有效(第 03 课讲过的 few-shot)。
实践 3:说明如何处理边界情况
实践 4:加入数据验证
不管什么任务,前面学的通用原则仍然适用:
本课的任务特定策略是在通用原则基础上的针对性优化:
不同任务需要不同的 prompt 策略:
这些策略建立在前面学的通用技能(四要素、few-shot、CoT、调试)基础上,是针对具体任务类型的优化。实践中,根据你的任务选择合适的策略组合。
课程总结
你已经完成了 Prompt 工程基础的全部 6 课:
现在你有了完整的工具箱。下一步是实践:选一个你工作中的实际任务,应用这些技巧,观察效果,持续优化。Prompt 工程是一项通过实践提升的技能——理论课程到此结束,真正的学习从使用开始。
Prompt Engineering for Code Generation — https://graphite.com/guides/better-prompts-ai-code ↩ ↩2 ↩3 ↩4
任务 A:让 AI 生成一个 Python 函数,实现二分查找 任务 B:让 AI 将技术白皮书总结为面向管理层的 2 页报告 任务 C:让 AI 从一批客户邮件中提取:客户名称、问题类型、紧急程度
为每个任务回答:
场景选项:
场景 1:代码审查助手
场景 2:学习笔记生成器
场景 3:客户反馈分析器
要求: 设计的 prompt 必须:
写一个 Python 函数处理用户数据写一个 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"]处理这些特殊情况:- 空列表输入 → 返回空列表- None 值 → 跳过- 重复值 → 保留第一次出现的代码风格要求:- 使用 type hints- 包含 docstring(Google 风格)- 不要过度注释(不要解释显而易见的代码)- 优先可读性,其次性能不要:- 不要使用全局变量- 不要引入外部依赖(只用标准库)- 不要写测试代码(只要主函数)审查下面的 Python 代码,关注以下方面:
1. 正确性:逻辑错误、边界条件处理2. 性能:时间复杂度分析、可能的瓶颈3. 安全性:SQL 注入、XSS、输入验证
不要评论代码风格和命名(这些已经通过 lint 检查了)。
对每个发现的问题,说明:- 问题位置(行号或代码片段)- 问题类型(bug / 性能 / 安全)- 具体影响(什么情况下会出错)- 修复建议
代码:[粘贴代码]总结这篇技术文档你是一位技术作家,擅长把复杂的技术文档改写为易懂的总结。
任务:将下面的 API 文档总结为面向前端开发者的快速入门指南。
受众:有 JavaScript 基础,但没用过这个 API 的前端工程师。
输出格式:1. 一句话说明这个 API 是做什么的2. 三个最常用的功能(每个功能:用途 + 代码示例)3. 一个完整的使用场景示例4. 常见错误和解决方案(2-3 个)
语气:直接、实用,避免营销话术。
长度:不超过 800 字。
原始文档:[粘贴文档]受众:- 职位:产品经理- 技术水平:不懂编程,但理解基本的软件架构概念- 阅读目的:决定是否采用这个方案按以下结构组织:
## 背景为什么需要这个方案(1 段)
## 方案对比| 方案 | 优点 | 缺点 | 成本 ||------|------|------|------|| ... | ... | ... | ... |
## 推荐推荐哪个方案,为什么(2-3 段)
## 风险实施这个方案的主要风险和应对措施(列表)详细程度:- 每个论点用 1-2 句话说明,不要展开- 省略实现细节,只讲业务影响- 不要引用具体的代码或技术术语你是一位项目助理,擅长从会议录音/记录中提炼关键信息。
任务:根据下面的会议记录,写一份会议纪要。
输出结构:1. 会议信息 - 时间:YYYY-MM-DD - 参与人:[列表] - 主题:[一句话]
2. 讨论内容(按优先级排序) 每个议题包括: - 问题描述(1 句话) - 讨论要点(2-3 条) - 决策结果(明确的结论,如果没有达成一致,写"待定")
3. 待办事项 每项包括: - 任务描述(动词开头,可执行) - 负责人 - 截止日期
约束:- 只记录有明确结论的讨论,略过闲聊- 待办事项必须可检查(有明确的交付物)- 总长度不超过 500 字
会议记录:[粘贴记录]从这段招聘信息中提取关键信息从招聘信息中提取以下字段,输出为 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}
现在处理:[粘贴招聘信息]字段:sentiment (情感分类)取值:只能是这三个值之一:"正面" / "负面" / "中性"不要输出:positive, 积极, 好评 等其他词特殊情况:- 如果一段文字包含多个情感("产品不错,但价格太贵")→ 分类为"中性"- 如果是纯粹的疑问句("这个怎么用?")→ 分类为"中性"- 如果文字过短(少于 3 个字)→ 输出 null验证规则:- salary 字段必须包含数字- experience 如果不是 null,必须包含"年"或"不限"- location 不能是空字符串,要么有值,要么 null
如果提取的数据不符合验证规则,返回错误信息而不是不合法的数据。