结构化提示词设计实战(CRISPE框架+分类任务落地案例)
一、Prompt工程基础概念
1.1 定义
Prompt Engineering(提示词工程),是通过精心设计、迭代优化输入给大模型的文本指令,约束大语言模型的思考逻辑、输出内容、排版格式、语气风格,从而精准完成业务需求的一套方法论。
大模型不存在固有意志,用户输入的提示词就是模型执行任务的唯一依据;同一需求,提示词撰写方式不同,输出准确率、规范性、可用性差距巨大。
1.2 学习Prompt工程的价值
- 低成本优化效果:无需对大模型进行微调训练,仅依靠文字编排即可显著提升7B、8B等轻量化本地开源模型的听话能力;
- 便于程序对接:强制固定输出结构,方便Python等后端代码解析、提取数据,实现AI能力自动化落地;
- 规避模型通病:有效解决大模型幻觉、答非所问、随意闲聊、逻辑跑偏、内容冗长杂乱等问题;
- 模板可复用:标准化提示词框架能够套用在文本分类、数据抽取、文案创作、角色扮演、AI问答等几乎所有大模型场景。
1.3 主流适用场景
文本规则分类、结构化信息提取、总结润色、角色扮演对话、AI智能判定、报告生成等落地场景。
1.4 LLM 基础应用模块(Agent 的前置基础)
本模块不属于智能 Agent,属于大模型结构化规则推理模块,是搭建生活类 AI Agent 的核心前置能力:负责标准化行为识别、属性判定、数值增减,为后续高阶 Agent 的自主规划、自我复盘提供底层数据支撑。
- 当前代码:不是 Agent,是 LLM 规则推理分类模块
- 技术定位:Prompt 工程落地 + 结构化输出解析 + 工程容错
- 项目地位:LifeCraft AI Agent 的底层核心前置模块
二、Prompt工程通用编写原则与常用技巧
2.1 三大基础编写原则
- 角色前置:开篇为模型设定专属身份与岗位职责,划定能力边界,避免模型自由发散;
- 规则详尽:完整罗列业务判定标准、场景边界、例外情况,不要让模型自主揣测需求;
- 格式锁定:硬性规定返回内容结构,拒绝无限制自由文本输出。
2.2 高频实用技巧
- Few-Shot 少样本学习:给模型提供多组「输入内容+标准答案」成对案例,模仿输出逻辑,对7B小模型提升效果最显著;
- 零样本提示:不提供参考案例,仅依靠文字规则下发指令,适合极简简单任务;
- 负向约束:明确写明禁止行为(禁止写汉字、禁止添加解释、禁止换行),剔除无效冗余内容;
- 分层结构化排版:利用分段、模块标题拆分提示词,层级清晰,模型更容易阅读理解规则。
2.3 万能结构化框架:CRISPE(本次实战核心)
新手入门最友好、通用性最强的提示词撰写模板,分为6个固定模块,按顺序填充内容即可产出规范提示词:
| 缩写 | 英文全称 | 模块作用 |
|---|---|---|
| C | Capacity | 能力设定:赋予模型专属身份,说明具备的专业能力 |
| R | Role | 岗位职责:限定本次任务唯一工作,剔除无关操作 |
| I | Insight | 业务背景与完整规则:提示词核心主体,罗列所有判定细则、场景边界 |
| S | Statement | 核心指令:一句话交代最终需要完成的任务 |
| P | Personality | 输出约束:规定返回格式、字符要求、语气,锁死输出样式 |
| E | Examples | 少样本案例:输入+输出成对示例,强化模型模仿能力 |
三、实战案例:RPG生活养成系统 行为属性双向判定任务
3.1 项目需求背景
自研 LifeCraft 游戏化个人打卡工具,用户记录日常行为,本地大模型自动完成两项工作:
- 将行为匹配五大RPG角色属性;
- 区分正向增益行为(属性增加)、负面损耗行为(属性下降);
统一输出固定格式文本,由Python代码读取解析,实现人物数值养成闭环。
3.2 前期无规范提示词带来的各类问题
- 维度划分混乱:最初设计4大分类边界模糊,休闲娱乐行为无归属,只能强行归入健康类目,数值统计失去意义;
- 逻辑不完整:仅支持属性加分,熬夜、精神内耗、整日摆烂等伤身内耗行为无法扣除属性;
- 输出不可控:模型随意添加前缀、文字、换行,代码数字转换频繁抛出异常;
- 判定准确率低下:开放式文本分类极易出现语义理解跑偏。
3.3 前置准备:梳理完整业务规则(写Prompt必备步骤)
重构5维RPG角色属性体系,无兜底冗余类目,正向、负面行为全覆盖:
| 编号 | 属性名称 | RPG角色定位 | 正向行为(属性+) | 负面行为(属性-) |
|---|---|---|---|---|
| 1 | 体魄值 | 生命值HP | 运动、早睡、规律三餐、散步养生 | 熬夜、睡眠不足、暴饮暴食、过度劳累 |
| 2 | 心智值 | 脑力蓝量MP | 读书、听课、钻研技术、观看科普内容 | 无脑刷短视频、精神内耗、思虑过度 |
| 3 | 行动力 | 耐力值 | 上班工作、做家务、记账、规划日程 | 整日拖延摆烂、逃避所有事务 |
| 4 | 人缘值 | 魅力值 | 朋友聚餐、线下约会、线上维系亲友 | 和人吵架、刻意疏远、拒绝社交 |
| 5 | 愉悦值 | 心情快乐度 | 追剧、听歌、逛街、休闲放空 | 心情压抑、烦心事堆积、情绪低落 |
约定全局标准输出格式:数字,符号
示例:1,+= 体魄值增加;1,-= 体魄值下降
3.4 套用CRISPE框架编写完整提示词
importollamaimportre prompt=""" 【C Capacity 身份能力】 你是LifeCraft RPG人生养成游戏专属数值判定官,能够根据用户日常行为,精准判断对应属性以及数值变化方向,严格遵守规则,判定零失误。 【R Role 岗位职责】 仅做属性+增减方向判定,严格按照固定格式输出,不写多余解释、不闲聊、不推演思考过程。 【I Insight 5项属性完整增减规则】 编号对应属性: 1=体魄值(身体健康) 2=心智值(学识脑力) 3=行动力(事务执行力) 4=人缘值(人际魅力) 5=愉悦值(心情快乐度) 正向行为(数值上涨 标记+): 1体魄+:健身运动、早睡休养、规律吃饭、散步养生 2心智+:读书学习、上网课、钻研技能、观看科普纪录片 3行动力+:上班办公、家务打扫、记账办事、规划待办日程 4人缘+:朋友聚餐、线下约会、线上和亲友谈心维系关系 5愉悦+:看娱乐影片、听歌、逛街游玩、发呆休闲放松 负面行为(数值下降 标记-): 1体魄-:熬夜通宵、睡眠不足、暴饮暴食、过度劳累透支身体 2心智-:长时间无脑刷短视频、精神内耗、过度思虑损耗脑力 3行动力-:整日拖延摆烂、逃避所有事务、什么事情都不去做 4人缘-:刻意疏远亲友、与人争吵、拒绝一切社交往来 5愉悦-:心情压抑、遭遇烦心事、人际矛盾带来负面情绪 【S Statement 执行指令】 读懂用户描述的日常行为,匹配对应属性,判定数值是增加还是降低。 【P Personality 强制固定输出格式】 格式必须严格:数字,符号 符号只有两种:+ 或者 - 例子参照:1,+ / 1,- / 5,+ 禁止汉字、换行、标点、多余文字、前缀后缀,只输出这三个字符内容。 【E Examples 参考范例】 行为:晨跑锻炼30分钟 → 1,+ 行为:通宵熬夜凌晨三点才睡 → 1,- 行为:研读编程技术书籍 → 2,+ 行为:一整天无脑刷短视频消磨时间 → 2,- 行为:居家打扫全屋卫生 → 3,+ 行为:整日躺平拖延什么都不干 → 3,- 行为:周末约闺蜜出门聚餐 → 4,+ 行为:和朋友吵架刻意断绝来往 → 4,- 行为:闲暇追剧看电影放松 → 5,+ 行为:诸事不顺整日心情低落 → 5,- 用户行为:{user_task} """attr_map={1:"体魄值",2:"心智值",3:"行动力",4:"人缘值",5:"愉悦值"}defparse_result(text):# 正则提取 数字 + +/- 符号res=re.search(r"([1-5]),([+-])",text)ifres:num=int(res.group(1))op=res.group(2)returnnum,op# 兜底容错:默认体魄值增加return1,"+"test_cases=["今晚通宵熬夜没有睡觉","早起慢跑锻炼身体","一整天不停刷短视频","学习AI大模型相关知识","周末在家大扫除洗衣服","这几天摆烂拖延啥活都不干","和好朋友出门逛街吃饭","跟伴侣闹矛盾刻意冷战疏远","睡前听歌追剧放松心情","压力太大整日情绪低落难受"]foractionintest_cases:resp=ollama.generate(model="qwen2:7b",prompt=prompt.format(user_task=action),options={"temperature":0,"seed":666})raw=resp["response"].strip()attr_num,operate=parse_result(raw)tip=f"{operate}{attr_map[attr_num]}"print(f"行为:{action}===> 数值变动:{tip}")3.5 本地小模型专属调优方案
- 关闭生成随机性:推理参数设置 temperature=0,固定随机种子 seed,相同输入每次输出结果完全一致,方便规则调试;
- 多次叠加负向约束:反复强调禁止冗余文字、禁止照搬示例前缀,从源头规避格式错乱;
- 输出越简短越好:极简字符格式,轻量化模型指令遵循度最高。
3.6 工程落地双层防护体系:提示词层 + 代码层
只依靠提示词无法彻底杜绝模型乱输出,可商用 AI 功能必须搭建双层容错机制:
- 上层防护:提示词强约束:依托 CRISPE 结构化框架 + 少样本案例 + 严苛格式限制,最大限度规范模型生成内容;
- 下层防护:Python 代码容错解析:利用正则表达式提取有效数字与正负符号,自动过滤所有多余文本,设置兜底默认值,保证程序永不崩溃。
四、整体学习总结
- CRISPE 结构化框架是新手学习提示词工程最优起点,无需凭空构思,模块化填充即可写出高质量提示词;
- 本地 7B轻量化开源模型做分类判定任务,固定输出格式 + Few-shot 少样本示例缺一不可;
- 提示词标准开发流程:梳理业务场景边界 →划分维度规则 → 套用结构化框架编写 Prompt → 锁定输出格式 → 代码增加容错兜底;
- 工程落地切忌完全信任大模型输出,后端校验、异常捕获是稳定性保障; 一套结构化模板可无限复用在文本分类、信息抽取、规则判定各类 AI任务中。