第4章:Prompt工程基础
各位同学好,我是你们的老朋友。今天咱们聊聊Prompt工程——说白了,就是怎么跟大模型「好好说话」。
我刚开始做法律大模型时,总觉得模型「笨」。后来才发现,不是模型笨,是我没把问题说清楚。你想想看,你跟一个刚入行的实习生交代任务,说得含糊其辞,他能干好吗?大模型也一样。
4.1 Prompt设计原则:让模型听懂你的话
Prompt设计,核心就三个字:清、晰、准。我总结了几条铁律,你在项目中直接套用就行。
原则一:明确角色与任务
别让模型猜你是谁。直接告诉它:「你是一名资深律师」「你是一名法官助理」。我习惯在Prompt开头就定调。
「你是一名专攻合同纠纷的律师。请分析以下合同条款是否存在显失公平的情形。」
❌ 差的Prompt:
「看看这个合同有没有问题。」
原则二:提供上下文与约束
法律场景最怕「开放式回答」。你得给模型画个圈。比如限定法条范围、指定输出格式。
原则三:分步拆解复杂问题
别指望模型一口吃成胖子。把「这个案子怎么判」拆成:
1. 事实认定 → 2. 法律适用 → 3. 裁判结论。
嗯,这里要注意:每步之间用空行隔开,模型更容易理解逻辑层次。
4.2 Few-shot与Zero-shot学习:给不给例子,差别很大
这两个概念,说白了就是「要不要给模型看几个例子」。我刚开始也搞混过,后来踩了坑才明白。
Zero-shot:零样本,直接问
适合简单任务。比如「判断这个行为是否构成正当防卫」。模型凭预训练知识就能答。
# Zero-shot示例
Prompt: "判断:张三在遭受持刀攻击时,夺刀反击致对方轻伤。是否构成正当防卫?"
输出: "根据《刑法》第20条,构成正当防卫。"
Few-shot:给几个例子,让模型学套路
复杂任务必须用Few-shot。我做过一个实验:
- 不给例子:模型准确率 62%
- 给3个例子:准确率飙到 89%
# Few-shot示例
Prompt:
"示例1:合同约定违约金为合同金额的30%,法院认为过高,调整为实际损失的1.5倍。
示例2:租赁合同约定逾期一天罚1000元,法院认为过高,调整为实际损失的1.3倍。
问题:借款合同约定逾期利率为年化36%,法院应如何调整?"
输出: "法院可能调整为LPR的4倍(约年化14.8%),因为36%明显过高。"
4.3 Chain-of-Thought:让模型「边想边说」
这是我最喜欢的技巧。Chain-of-Thought(CoT),说白了就是让模型把推理过程写出来。就像你做数学题,不能只写答案,得写「因为...所以...」。
为什么CoT在法律推理中特别有用?
法律本身就是「三段论」:大前提(法条)→ 小前提(事实)→ 结论。CoT完美匹配这个结构。
一个交通事故责任纠纷,直接问模型「谁全责」,它答错了。但加上「请逐步推理:1. 分析交通规则 2. 分析双方行为 3. 判断过错程度」,模型给出了完全正确的答案。
CoT的三种常用模式
| 模式 | 适用场景 | 示例Prompt |
|---|---|---|
| 标准CoT | 复杂法律推理 | 「请逐步分析:首先...其次...最后...」 |
| Few-shot CoT | 需要参考先例 | 「参考以下案例的推理过程...」 |
| 自洽性CoT | 高精度要求 | 「请用三种不同路径推理,然后投票选出最合理的结论」 |
实战:用CoT分析合同纠纷
Prompt:
"你是一名合同纠纷律师。请用Chain-of-Thought逐步分析:
案情:A公司与B公司签订供货合同,约定A每月供货100吨,B按月付款。A连续3个月供货,B均未付款。A停止供货,B起诉A违约。
请按以下步骤推理:
1. 分析合同是否有效成立
2. 分析双方各自履行情况
3. 判断是否存在违约行为
4. 分析违约责任归属
5. 给出最终法律意见"
输出:
"步骤1:合同有效成立。双方主体适格,意思表示真实...
步骤2:A已履行供货义务,B未履行付款义务...
步骤3:B构成违约,A行使不安抗辩权合法...
步骤4:违约责任在B方...
结论:B公司应支付货款并承担违约责任,A公司不构成违约。"
知识体系总览
下面这张图,是我自己梳理的Prompt工程知识框架。你照着这个结构去设计Prompt,基本不会跑偏。
小结
今天聊了三个核心点:
1. 设计原则:角色明确、上下文清晰、分步拆解
2. 学习方式:Zero-shot省事但精度低,Few-shot效果好但别贪多
3. CoT推理:让模型「边想边说」,法律三段论的最佳拍档
我个人建议:所有法律类任务,优先上CoT。哪怕你觉得问题简单,也让它走一遍推理流程。为什么?因为你能看到它的「思考过程」,方便纠错。这比直接给结论靠谱得多。
公众号:蓝海资料掘金营,微信deep3321