7.6 本章实战练习
7.6 本章实战练习
本节提供递进式的练习题,帮助读者巩固提示词链与任务分解的知识,并在实际场景中应用。
练习一:构建简单的顺序链(基础设计)
目标:体验如何将一个复杂任务拆解成流水线式的两步操作。
场景:你需要分析一份长篇的用户调研访谈记录,并生成一份面向开发团队的简短需求清单。
输入文本示例:
“访谈者 A:我平时最常用的就是你们的搜索功能,但是每次搜索结果出来都没有按时间排序的选项,找以前的内容太费劲了。还有就是,我觉得系统默认的深色模式对比度太强,看着有点刺眼,希望能自己调。其实总体来说还是挺好用的,就是这两个点让我觉得不舒服。”
任务: 设计一个两步的提示词链:
[Step 1] 信息抽取 (Extraction):提取文本中提到的所有“用户痛点”和“具体功能诉求”,输出 JSON 数组。
[Step 2] 需求转化 (Translation):将 Step 1 输出的 JSON 转化为标准的 “User Story” 格式(作为[角色],我想要[功能],以便于[价值])。
思考:
如果不用链式结构,而是一个提示词让大模型直接输出最终结果,这两种方式在输出的 结构一致性和追溯便利性 上有什么区别?
练习二:设计带验证环节的并行链(进阶架构)
目标:掌握并行调度与验证节点的应用。
场景背景: 你正在开发一个“自动代码审阅助手”。用户提交一段 Python 代码,系统需要审查其 安全性(安全漏洞)和性能(时间/空间复杂度),最后必须确保不能有互相矛盾的建议。
任务: 请设计这个工作流的架构。不一定需要写出完整的提示词,只需画出/写出带有判断逻辑的流程节点:
并行节点设计:同时触发“安全审查” Prompt 和“性能审查” Prompt。思考:为什么这里适合并行而不是串行?
验证/融合节点设计:设计第三个 Prompt,接收前两步的输出,并进行冲突检查。
设计一个负面测试用例:假设性能审查建议“为了加速应该关闭所有的输入校验”,而安全审查建议“必须添加严格的输入校验”。验证节点应该如何处理?
练习三:复杂长表单的多轮实体抽取架构(实战挑战)
目标:结合 7.5 节多轮对话管理,设计一个稳健的对话状态机。
场景描述: 你需要开发一个帮用户定机票的 AI 客服。必须收集以下五个必填实体: 出发地、目的地、出发日期、舱位等级、乘客人数。 用户可能一次性给出 3 个条件,也可能分 5 句话一点点说,甚至中间会修改条件。
架构设计任务: 为了保证极高的稳定性,我们不使用单次对话的记忆,而是每轮对话都更新一个 状态 JSON。
设计一个 状态更新 Prompt。
输入: 当前累积的 JSON 状态 + 用户最新的一句话
指令: 根据用户的最新发言,更新或填充 JSON 中的字段。
设计一个 回复生成 Prompt。
输入: 更新后的 JSON。
指令: 判断还有哪些必填项为空。如果不为空,则继续自然地询问用户;如果全满,则输出“正在为您查询机票...”。
实践验证: 手工模拟这几轮对话:
初始状态:全空
轮次 1:用户:“我想订两张明天去上海的机票。”(更新状态:人数=2,目的地=上海,日期=明天。缺失:出发地,舱位)
轮次 2:客服(基准回复):“请问您从哪里出发?对舱位有要求吗?”
轮次 3:用户:“哦对了,我带个小孩,一共三人。从北京走。没要求,便宜就行。”(测试点:能否跨轮更新人数从 2 变 3,能否将“便宜就行”映射为经济舱)。
思考: 采用这种 累积状态模式 (State Accumulation),与传统的把所有历史消息直接发给模型的截断窗口模式相比,遇到上下文超长时的表现会有什么差异?
最后更新于
