AI人工智能基础与实践(中职版)中等职业教育 · 项目化学习

CHAPTER 07 · 学生用书

第7章 把任务说清楚:指令与迭代

第7章章首原理图 模糊愿望转为结构化规格和生成物,再经过正常、边界和异常测试返回修订。

章首语

“帮我做一个好看的AI主页。”把这句话交给两个AI编程助手,可能得到完全不同的页面:一个做成宣传海报,一个放入聊天框,另一个加入不能离线运行的动画。它们未必不听话,因为“好看”“AI主页”和“做一个”都没有说明具体用户、已有材料、必须功能和完成标准。

本章要把前六章的模块组织成班级AI应用系统主页。学生不从空白页逐行编写全部代码,而是指挥AI完成页面结构、模块入口、状态显示和使用说明。真正需要练习的不是背一条万能提示词,而是把口头愿望变成可以执行、检查和复现的任务说明,再根据未知验收结果完成迭代。

项目会保留三个版本。v0只有一句模糊愿望;v1把目标、用户、材料、规则、输出和验收写清;v2由另一组只看说明重建后,补上仍然存在的歧义。三版差异将告诉我们:AI生成速度越快,前期任务定义和后期验证越不能省略。

学习目标

完成本章学习后,你将能够:

  1. 解释提示词、约束、验收条件和迭代的基本含义。
  2. 把口头想法改写为包含目标、用户、材料、规则、输出和验收的任务说明。
  3. 使用正常、边界和异常测试检查AI生成的网页作品。
  4. 通过跨组盲复现发现歧义,形成v0、v1、v2差异记录。
  5. 说明人和AI在意图、生成、验证、发布中的不同责任。

本章项目 生成班级AI应用系统主页

系统主页要集中展示第1—6章已经完成的模块:编码工具、规则问答、图形分类、资料检索、视觉检查和文本生成。使用者可以查看每个模块的任务、版本、输入类型、当前状态和限制,并从主页进入对应离线页面。主页不伪造模块已经联网,也不把教学算法包装成可直接部署的产品。

每组设置需求负责人、生成负责人、测试负责人和版本讲解员。需求负责人整理材料与任务说明;生成负责人把说明交给AI编程助手并保存完整输出;测试负责人不参与v1说明编写,负责按验收清单运行页面;版本讲解员记录每次差异、修改理由和遗留问题。没有AI编程账号时,使用配套离线任务工作台生成模板主页,学习目标不变。

主页至少包含标题与用途、六张模块卡、模块状态、限制说明、使用流程和页脚版本。不能使用真实账号、学生照片和未经许可的图片。交付物包括三版任务说明、三版页面或预览、12项验收、跨组复现记录和系统主页v1.0。

从一句愿望建立第一版

7.1 提示词是任务输入的一部分

提示词(Prompt)是提供给模型、用于说明当前任务和上下文的输入内容。它可以包含问题、任务目标、材料、示例、输出格式和限制。提示词不只是一句话,也不等于训练模型;它主要改变本次推理所依据的上下文。

第6章已经看到,模型会根据上下文生成后续token。任务说明中的词语、示例和材料会改变生成分布,因此更明确的输入通常更容易得到接近目标的输出。但“写得越长越好”并不成立:重复、冲突和无关信息会挤占上下文,也可能使模型忽略真正重要的条件。

先用v0愿望“帮我做一个好看的AI主页”生成两次。保留两份页面,不比较颜色是否喜欢,而是检查:有没有六个模块?是否能离线打开?模块名称是否准确?是否出现虚构功能?两个结果在核心结构上有多大差异?这些差异构成改写任务的证据。

提示词也不是完整项目的唯一文件。需求材料、源代码、测试数据、版本记录和发布审批都有各自作用。把一条提示词保存下来有助于复现,但还要保存模型或工具版本、输入文件和验收结果;否则另一组仍无法知道当时发生了什么。

7.2 把任务拆成六个可检查字段

口头想法可以先拆成六个字段。目标说明要解决什么问题;用户说明谁在什么环境下使用;材料列出允许使用的内容与版本;规则规定必须、禁止和优先条件;输出说明交付物形式;验收把“完成”转成可以观察的结果。

字段 需要回答的问题 主页示例
目标 要解决什么问题 让使用者从一个离线主页进入六个AI学习模块
用户 谁在什么环境使用 中职学生,在普通电脑浏览器中使用
材料 可以依据哪些内容 六个模块的名称、版本、用途和限制表
规则 必须做什么、不得做什么 单文件;不联网;不虚构模块;页面可滚动
输出 交付什么形式 一个HTML文件和一张验收记录
验收 怎样判断完成 六张卡齐全;链接可达;500像素宽无横向溢出

材料字段能够防止AI凭空补齐项目事实。把六个模块表作为输入,明确“名称必须原样使用”;若材料缺少某个链接,允许显示“待接入”,不得编造地址。规则字段还要写优先级,例如事实准确和可访问性高于装饰动画,离线运行高于引用在线字体。

输出字段要说明文件和结构,却不必过早规定每一行代码。若任务目标只是得到可运行主页,可以指定单文件HTML、语义化区域和响应式布局;至于具体使用网格还是弹性布局,可让生成工具提出方案。说明过少会歧义,说明过细又可能把不必要的实现方法锁死。

图7-1 口头愿望经过六字段任务说明转为可生成、可验收作品

7.3 约束要有对象、条件和边界

约束(Constraint)是对系统、过程或输出必须遵守的限制。有效约束要说明限制谁、在什么条件下、达到什么边界。例如“页面不得发起网络请求”明确限制页面运行行为;“不要联网”若没有测试方法,可能只被理解成“不显示网络按钮”。

约束可以来自技术、数据、时间、成本、法规和使用环境。主页项目的技术约束包括单文件、现代浏览器运行和不加载外部资源;数据约束包括只使用已核对模块表;时间约束包括三课时完成;访问约束包括键盘能够到达主要按钮、文字与背景有足够区分。

多个约束可能冲突。要求“所有图片都超高清”会增加文件体积,与“低配置电脑快速打开”发生矛盾;要求“每个模块展示完整说明”又希望首屏非常简短,需要通过分层显示解决。发现冲突时不能让AI暗自选择,需求负责人要写明优先级或请项目相关方决定。

负面约束不能只写“不要出错”“不要幻觉”。模型无法从这些口号得知哪类内容算错、依据在哪里、发现不确定时怎样处理。可以改成“模块名称和版本必须逐项来自材料表;缺失链接显示待接入;不得新增材料中没有的性能数字”。

用验收清单检查生成结果

7.4 验收条件把完成变成证据

验收条件(Acceptance Criteria)是判断作品是否达到约定要求的可观察标准。一条好的验收条件应说明输入或前提、操作、预期结果,必要时还要给出数量、时间或范围。它不只写“页面正常”,而是写“断开网络后双击HTML,标题和六张模块卡完整显示”。

验收条件与实现步骤不同。“使用CSS Grid排列卡片”规定实现方法;“宽度大于900像素时每行至少3张卡,500像素时单列显示且无横向滚动”规定可观察结果。除非某种实现是课程目标、安全要求或维护需要,否则验收优先描述行为。

主页建立12项验收,分成正常、边界和异常三类。正常测试检查六张卡、导航和版本;边界测试检查500像素宽、长模块名和内容较多时的滚动;异常测试检查链接缺失、材料字段为空和断网运行。每类都要有实际输入,不用“看起来应该可以”代替运行。

编号 类型 前提与操作 预期结果
T01 正常 打开主页 标题、用途和六张模块卡完整显示
T02 正常 逐个打开模块卡 已接入链接可达,未接入明确标记
T03 正常 查看每张卡 名称、版本、输入、限制与材料表一致
T04 边界 视口宽度设为500像素 单列显示,无横向溢出
T05 边界 模块限制写到80字 卡片扩展或折叠,不遮挡按钮
T06 异常 删除一个模块链接 显示待接入,不跳到虚构地址

一项测试失败后,先判断任务说明是否已明确。如果说明清楚而实现不符,应让AI修正代码;如果不同人都能合理解释成不同结果,应先修订说明。把所有问题都归咎于“AI笨”会掩盖需求错误,把所有问题都归咎于“我没说清”也会忽视模型和工具的能力边界。

让另一组只看说明复现

7.5 盲复现可以发现隐藏假设

写说明的人常把自己知道的背景当作所有人都知道。需求负责人心里可能默认“六个模块按章节顺序”“限制说明放在卡片上”“颜色不要使用红绿作为唯一状态”,但没有写进任务。原组看自己的v1觉得完全正确,另一组却会做出不同而同样合理的页面。

跨组盲复现时,接收组只能看到任务说明、模块材料表和验收清单,不能看原组页面,也不接受口头补充。接收组用相同类型工具生成一个复现版,运行12项验收,并记录“无法决定而自行选择”的位置。原组随后比较核心内容和行为,不要求像素级外观完全相同。

差异分成四类:需求遗漏,说明没有覆盖;需求歧义,同一句允许多种理解;实现缺陷,说明明确但页面没做到;允许差异,说明有意把选择留给实现者。只有前三类需要修订,允许差异不应为了追求一模一样而全部写死。

差异 原组v1 接收组复现 分类 处理
模块顺序 按章节 按名称 需求遗漏 明确按章节顺序
卡片颜色 六种颜色 统一颜色 允许差异 不修订
未接入链接 显示待接入 按钮无反应 验收不够明确 增加状态文字与禁用行为
小屏导航 自动换行 横向滚动 实现缺陷或约束歧义 补充T04预期

盲复现的价值不是证明谁更会写提示词,而是把隐藏假设变成可讨论证据。需求说明用于协作,就必须让没有参与前期讨论的人也能理解;这与软件和系统需求工程强调的获取、分析、说明、验证和管理有相通之处。

7.6 示例、角色和格式什么时候有用

示例可以把抽象要求变成可观察模式。若希望模块卡固定包含“名称、版本、用途、限制”,提供一张输入材料和一张期望卡片结构,比反复强调“格式统一”更清楚。少量示例会进入本次上下文,不等于模型参数已经更新。

角色说明可以补充评价视角,例如“你是一名前端开发者,需要交付可离线运行、可键盘操作的学生项目主页”。角色不能代替任务事实,也不能赋予模型真实职业资格。写了“你是出版专家”,模型仍可能编造标准;所有专业结论仍要由材料和验收支撑。

输出格式适合机器继续处理时尤其重要。要求返回固定字段的JSON、Markdown表格或带ID的HTML区域,可以减少后续手工整理。但格式越严格,越需要提供字段说明、合法示例和错误处理;只说“返回JSON”并不能保证字段齐全、数值类型正确或内容真实。

所谓提示技巧应服从任务机制。分类任务需要类别定义和边界样例,资料问答需要允许材料和拒答条件,代码任务需要运行环境和测试,创意任务需要受众与可接受范围。不存在一条脱离材料、工具和评价的万能句式。

7.7 把大任务拆成可验证的小步

一次要求AI完成主页、六个模块、测试、部署和说明书,输出容易过长,错误也难定位。更稳妥的做法是把任务拆为材料核对、页面信息结构、静态骨架、模块卡渲染、状态与交互、响应式测试、说明卡七步。每一步都有输入、输出和验收,再进入下一步。

拆分不是把工作变成许多没有联系的小问答。前一步产物要成为后一步的明确材料,版本号和接口保持一致。例如先确定模块数据结构,再让AI根据同一结构生成卡片;若中途把moduleName改为title,要同步修改数据、渲染和测试。

AI编程时,学生至少要能识读三处关键代码:模块数据数组,生成卡片的循环,处理状态和链接的条件。出现问题时,用浏览器错误信息、失败测试和相关代码片段提出修订,不要只说“还是不行”。这种“意图—生成—验证—迭代”比一次猜中完整代码更接近真实工程。

每一步都应保存版本。v0保留模糊愿望的差异,v1保留结构化说明的结果,v2保留跨组复现后的修订。若v2又引入新错误,可以回看差异,不必靠记忆重做。版本记录写“修改了什么、为什么、通过哪些测试、还有什么问题”,不只写“优化页面”。

让说明进入代码而不是停在文档中

任务说明写清以后,还要检查它是否真正进入程序。主页的六个模块不应散落在六段几乎相同的HTML里,可以先整理成结构化数据。每个对象保存编号、名称、版本、用途、状态、链接和限制;渲染函数遍历数组生成卡片。增加或修改模块时,先改一条数据,再由同一段程序形成界面。

const modules = [
  {
    id: "M01",
    name: "字符编码工具",
    version: "v0.1",
    status: "可用",
    link: "labs/ch01/index.html"
  }
];

数据结构把材料字段与代码连接起来。验收T03可以逐项比较数组和模块表,T06可以把link设为空,检查渲染函数是否显示“待接入”并禁用跳转。若每张卡都手工修改,名称、状态和链接容易不同步;结构化数据减少重复,但字段拼错或渲染循环错误仍会同时影响所有卡片。

页面状态也要有明确表示。status可以限定为“可用、待接入、教学演示”三个值,程序遇到其他值时显示“状态未知”并写入检查记录,不能默认为可用。颜色只是状态的一种视觉提示,卡片还要显示文字或图标,使色觉差异和黑白打印条件下仍能判断。

验收条件还可以部分转成自动检查:统计模块数组是否为6项,检查编号是否重复,确认每项必填字段非空,扫描页面是否存在外部地址。这类检查速度快、可重复,适合每次版本修改后运行;它不能判断用途描述是否真实、界面是否易懂和材料是否有权使用,因此仍要与人工验收组合。

需求与代码之间要能追溯。可以在验收表增加“对应字段或代码位置”,例如R04“未接入链接不得跳转”对应渲染函数中的空链接条件和测试T06。出现失败时,学生能够从测试回到需求,再回到数据或代码,而不是在整个文件中盲目改动。

7.8 人和AI分别承担什么责任

模型负责根据输入生成候选内容,工具负责运行代码、读取文件或显示页面。人负责确定目标与利益相关方,确认材料有权使用,决定约束优先级,设计测试,判断结果能否发布。AI可以建议验收条件,但不能替代使用者决定真正的完成标准。

任务说明本身也可能有问题。要求主页按人脸判断谁能进入模块,即使写得非常清楚,也涉及不必要的身份采集和差别对待;要求自动删除所有失败记录,则破坏项目可追溯性。先问“应不应该做”,再问“怎样让AI做”,比单纯提高指令准确度更重要。

当生成工具声称任务完成时,人要检查文件是否真实存在、页面是否能运行、链接是否正确、测试是否通过。自然语言确认不是执行证据。第9章将进一步让AI调用工具和修改文件,本章先建立“输出必须由环境和测试验证”的基本习惯。

面向未来,提示界面和模型能力会变化,具体句式很快过时;目标、材料、约束、输出和验收仍是稳定的工程问题。把本章学成“记住六字段模板”还不够,要能根据新任务增删字段、发现冲突并建立证据。

同一套说明还应能够被同伴、其他工具或后续版本继续使用。若只有最初操作者凭记忆才能完成,作品就没有形成可交接的工程资产。

完成v2并发布系统主页v1.0

原组收到跨组差异表后,只修订需求遗漏、歧义和真实实现缺陷。每项改动都写明来源,例如“R03:跨组把模块按名称排序,现补充按章节顺序”“T04:小屏导航出现横向滚动,补充允许换行且不得水平溢出”。允许差异继续保留,不把说明写成像素级复制命令。

用v2说明重新生成或修正主页,运行原12项验收,再增加4项回归检查:六模块数据是否仍与材料表一致,已修正的小屏布局是否影响桌面,禁用链接是否仍可键盘识别,新增说明是否使页面过长但无法滚动。回归测试用于确认修一个问题没有破坏已有功能。

最终系统主页版本为v1.0,页面页脚显示版本、更新时间、离线状态和责任小组。六个模块分别显示“可用、待接入、教学演示”状态,状态不能只靠颜色表达。首页说明“所有结果需要按模块证据核对”,不使用“全能助手”“零错误”等无法验证宣传语。

模块说明卡包括六项:主页服务谁,材料来自哪里,AI完成了什么,人确认了什么,跨组测试发现了什么,还留下什么问题。下一章将为资料问答模块增加上下文、引用和检索;任务说明中的材料版本和拒答条件会成为直接输入。

图7-2 v0愿望、v1结构化说明、跨组盲复现和v2回归测试的版本链

安全与责任

任务说明可能包含账号、内部路径和业务材料。提供给外部模型前,要确认工具的数据处理范围和组织规定;能用字段结构、虚构样例或局部片段完成时,不应上传整份真实文件。生成的代码也要检查外部请求、跟踪脚本和隐藏依赖。

对AI输出进行迭代,不等于把责任推给模型。需求负责人确认目的,材料负责人确认来源,测试负责人确认结果,发布者决定是否开放。每个角色都要在记录中可追溯,出现问题时才能回到具体环节修正。

本章小结

提示词是模型当前任务输入的一部分,可以包含目标、材料、示例、格式和限制,但不等于重新训练模型,也不能代替完整项目流程。结构化任务说明把口头愿望拆成目标、用户、材料、规则、输出和验收,使AI生成与人的检查有共同依据。

约束规定必须遵守的边界,需要明确对象、条件和优先级;验收条件把“完成”转成可观察结果,要覆盖正常、边界和异常情况。跨组盲复现能够暴露需求遗漏、歧义和实现缺陷,同时保留有意开放的设计空间。

迭代不是不断重说直到满意,而是根据差异和测试修订任务或作品,保存v0、v1、v2和回归证据。AI负责生成候选,人负责目标、材料、权限、验收和发布。具体提示句式会变化,“意图—生成—验证—迭代”的工程方法可以长期使用。

习题

基础题

  1. 用自己的话解释提示词、约束、验收条件和迭代,并各举一个主页项目实例。
  2. 为什么“做得专业一点”不能直接验收?把它改写成三条可观察条件。
  3. 区分提示词、材料表、验收清单和测试记录在项目中的作用。
  4. 跨组复现产生外观差异时,为什么不一定需要修订任务说明?

应用题

  1. 将“做一个能帮助同学学习的AI网站”改写成六字段任务说明,并设计正常、边界、异常测试各两项。
  2. AI生成的主页能够运行,但引用在线字体、缺少未接入状态、手机上横向溢出。分别判断属于约束遗漏、实现缺陷还是验收遗漏,并提出修订。

探究题

  1. 【选做】选择一个同样任务,比较零示例、一个示例和两个边界示例对输出结构的影响,说明示例改变的是本次上下文还是模型参数。
  2. 【选做】查找一份公开软件需求模板,比较其字段与本章六字段的相同和不同,不能把课堂模板写成正式标准全文。

本章交付物

1. 页面、说明与证据

提交v0愿望与两份差异输出、v1六字段任务说明、跨组复现页面和差异表、v2说明与系统主页v1.0、12项验收和4项回归记录。使用配套实训页时,提交单文件工作台导出的版本包。

评价维度 达成标志
任务说明 目标、用户、材料、规则、输出、验收齐全,无冲突或标明优先级
页面作品 六模块信息准确,离线可运行,小屏可滚动,状态不只靠颜色
验收证据 正常、边界、异常与回归测试都实际运行
迭代质量 v0、v1、v2差异可追溯,只修订有证据的问题
责任边界 材料与权限明确,不虚构功能,不隐藏缺陷,发布责任到人

2. 自评单

  • [ ] 我能说明提示词与模型训练的区别。
  • [ ] 任务说明包含六个字段,每个字段都与主页有关。
  • [ ] 模糊词已经改成可观察条件或被明确保留为设计空间。
  • [ ] 12项测试覆盖正常、边界和异常输入。
  • [ ] 跨组复现没有得到原组页面或口头补充。
  • [ ] 我能区分需求遗漏、需求歧义、实现缺陷和允许差异。
  • [ ] v2修订都有差异或测试证据,没有覆盖旧版本。
  • [ ] 主页没有虚构模块、外部依赖和无法验证的宣传语。

打开本章离线实训