Prompt工程01:任务定义

从角色、目标、输入、输出、验收标准,理解如何定义一个清晰的任务给大模型。

字数 1249 阅读时长 ≈ 4 分钟 2026-7-23 2026-7-27
Prompt工程01:任务定义

任务定义是 Prompt 工程的第一步,也是最重要的一步。一个清晰的任务定义能让模型更准确地理解你的需求,输出更高质量的结果。

任务定义的重要性

很多人使用大模型效果不好,不是因为模型不行,而是因为任务定义不清晰。

模糊任务 vs 清晰任务

模糊任务

帮我写一段代码。

清晰任务

角色:你是一名资深 Java 后端工程师
目标:实现一个用户登录接口
输入:用户名和密码
输出:登录结果(成功/失败)和 JWT token
约束:使用 Spring Boot,密码使用 BCrypt 加密,返回 JSON 格式
验收标准:
1. 接口路径:POST /api/login
2. 请求体:{"username": "string", "password": "string"}
3. 成功响应:{"success": true, "token": "xxx"}
4. 失败响应:{"success": false, "message": "xxx"}

任务定义的影响

维度模糊任务清晰任务
理解成本
输出质量不稳定稳定
修改次数
调试时间

任务定义的要素

一个完整的任务定义应该包含以下要素:

角色(Role)

告诉模型它应该扮演什么角色:

角色类型示例适用场景
专家角色”你是一名资深架构师”需要专业知识
助手角色”你是我的编程助手”日常帮助
工具角色”你是一个代码生成器”特定任务
评审角色”你是一个代码审查员”代码审查

角色定义的技巧

  1. 具体:不要只说”专家”,要说”资深 Java 后端架构师”
  2. 权威:赋予角色权威性,让模型更自信
  3. 一致性:同一对话中保持角色一致

目标(Objective)

明确告诉模型要完成什么任务:

目标类型示例适用场景
生成目标”生成一段 Python 代码”代码生成
分析目标”分析这段代码的性能问题”代码分析
总结目标”总结这篇文章的要点”文本总结
转换目标”将这段 SQL 转换为 MongoDB 查询”代码转换

目标定义的技巧

  1. 明确:不要说”做一些优化”,要说”优化这段代码的时间复杂度”
  2. 可衡量:目标应该是可以验证的
  3. 单一:一次只定义一个主要目标

输入(Input)

告诉模型需要处理什么数据:

输入类型示例处理方式
文本”以下是一段代码…”直接粘贴
代码代码片段用代码块包裹
文档文档内容分段提供
参数参数说明结构化说明

输入提供的技巧

  1. 完整:提供所有必要的输入
  2. 结构化:用代码块、列表等格式组织输入
  3. 标注:对重要部分进行标注

输出(Output)

告诉模型应该输出什么格式和内容:

输出类型示例适用场景
代码完整代码代码生成
分析报告分析结果代码分析
总结要点总结文本总结
方案技术方案方案设计

输出定义的技巧

  1. 格式:明确输出格式(JSON、Markdown、代码等)
  2. 结构:明确输出结构(标题、段落、列表等)
  3. 长度:明确输出长度限制

约束(Constraints)

告诉模型需要遵守的规则:

约束类型示例适用场景
技术栈”使用 Java 和 Spring Boot”技术选型
时间限制”代码执行时间不超过 1 秒”性能要求
安全限制”不要暴露敏感信息”安全要求
风格限制”代码风格符合 Google 规范”代码规范

约束定义的技巧

  1. 必要:只定义必要的约束
  2. 明确:不要说”代码要简洁”,要说”代码行数不超过 50 行”
  3. 优先级:重要的约束放在前面

验收标准(Acceptance Criteria)

告诉模型如何判断任务是否完成:

标准类型示例适用场景
功能标准”代码能正确运行”代码生成
性能标准”响应时间小于 100ms”性能优化
格式标准”输出符合 JSON 格式”数据处理
质量标准”代码通过单元测试”代码质量

验收标准定义的技巧

  1. 可验证:标准应该是可以验证的
  2. 具体:不要说”代码质量高”,要说”代码包含单元测试”
  3. 完整:覆盖所有重要方面

任务定义的模板

使用模板可以快速定义一个清晰的任务:

角色:[角色名称]
目标:[具体目标]
输入:
- [输入1]
- [输入2]
输出:
- [输出格式]
- [输出结构]
约束:
- [约束1]
- [约束2]
验收标准:
- [标准1]
- [标准2]
示例:
输入:[示例输入]
输出:[示例输出]

模板使用示例

角色:你是一名资深前端工程师
目标:实现一个响应式导航栏组件
输入:
- 导航菜单项:首页、产品、关于我们、联系我们
- 设计要求:移动端显示汉堡菜单,桌面端显示完整菜单
输出:
- HTML 结构
- CSS 样式
- JavaScript 交互逻辑
约束:
- 使用纯 HTML/CSS/JavaScript,不使用框架
- 响应式设计,支持移动端和桌面端
- 使用 Flexbox 布局
验收标准:
- 在 375px 屏幕宽度下显示汉堡菜单
- 在 1024px 屏幕宽度下显示完整菜单
- 点击汉堡菜单可以展开/收起导航
示例:
输入:导航菜单项
输出:[代码示例]

任务定义的常见问题

问题1:目标不明确

表现:模型不知道要做什么

示例

帮我优化一下代码。

解决

帮我优化这段代码的时间复杂度,要求:
1. 当前时间复杂度:O(n²)
2. 优化后时间复杂度:O(n log n)
3. 使用 Java 语言实现

问题2:输入不完整

表现:模型缺少必要的信息

示例

帮我写一个查询用户的接口。

解决

帮我写一个查询用户的接口,输入:
- 用户表结构:id (Long), name (String), email (String), created_at (Date)
- 查询条件:支持按 name 和 email 模糊查询
- 分页参数:page, size

问题3:输出格式不明确

表现:模型输出的格式不符合预期

示例

分析这段代码的问题。

解决

分析这段代码的问题,输出格式:
1. 问题描述:[问题说明]
2. 影响:[问题影响]
3. 修复方案:[修复方案]

问题4:缺少示例

表现:模型不知道输出应该是什么样的

示例

将以下文本转换为 JSON 格式。

解决

将以下文本转换为 JSON 格式,示例:
输入:"姓名:张三,年龄:30"
输出:{"name": "张三", "age": 30}

项目判断清单

  • 模型输出不稳定 → 检查任务定义是否清晰
  • 需要专业知识 → 定义具体的专家角色
  • 需要特定格式输出 → 明确输出格式和结构
  • 需要验证结果 → 定义明确的验收标准
  • 复杂任务 → 拆分为多个简单任务
  • 多次修改才能得到满意结果 → 完善任务定义