提示工程架构师指南:构建法律领域Agentic AI系统的提示词库实践
从需求拆解到迭代优化的全流程方法论
摘要/引言
当你使用AI工具审核合同时,是否遇到过以下问题:
- AI将“格式条款”误写为“制式条款”,专业术语出错;
- 生成的法律意见缺乏法条支持,逻辑链条断裂;
- AI自行给出“可以起诉”的结论,违反“不替代律师决策”的合规要求;
- Agent系统拥有法条检索工具,却不知何时启用。
这些问题的根本原因,并非LLM不够智能,而是缺乏适合法律场景的提示词库。法律领域的高度专业性(术语严格、逻辑严密)、强合规性(不得越界),以及Agentic系统的动态决策特性(自主调用工具、跟踪状态),要求提示词不能随意编写,而必须是结构化、可复用、适应Agent行为的知识集合。
本文将带你从0到1构建法律领域Agentic AI的提示词库,涵盖以下流程:
- 需求拆解
- 知识结构化
- 分层设计
- 集成测试
- 迭代优化
读完本文,你将学会:
- 如何将法律专业知识转化为Agent能理解的提示词;
- 如何设计“分层+元数据”的提示词库架构;
- 如何解决法律AI的合规性和准确性问题;
- 如何使提示词库适应Agent的动态决策流程。
目标读者与前置知识
目标读者
- 提示工程架构师:希望进入法律AI领域,需要设计适应场景的提示词体系;
- 法律科技开发者:负责实施法律Agent系统(如合同审查、法律咨询),需要解决提示词的专业性问题;
- 法律AI产品经理:希望理解提示词库的设计逻辑,更好地与技术团队合作。
前置知识
- 基础提示工程:了解零样本/少样本提示、思维链(CoT)、Prompt Template;
- Agentic AI基础:熟悉LangChain/Autogpt等Agent框架的核心概念(工具调用、状态管理);
- 法律常识:了解法律文本结构(如法条的“编-章-节-条-款-项”)、基本法律逻辑(三段论:大前提-小前提-结论)。
文章目录
- 引言与基础
- 法律领域Agentic AI的特殊性与挑战
- 核心概念:提示词库的设计原则
- 分步实现:从需求到提示词库落地
- 关键代码解析:LangChain集成提示词库
- 验证与优化:确保准确性与合规性
- 最佳实践与常见问题
- 未来展望
- 总结
一、法律领域Agentic AI的特殊性与挑战
要设计好提示词库,首先得理解法律场景对AI的独特要求——这些要求决定了提示词库不能简单复制通用场景的设计。
1.1 法律领域的核心特性
- 高度专业性:术语与逻辑的“双重严谨”
- 大前提(法律依据):《民法典》第577条:“当事人一方不履行合同义务或者履行合同义务不符合约定的,应当承担继续履行、采取补救措施或者赔偿损失等违约责任”;
- 小前提(案件事实):甲未按合同约定交付货物;
- 结论(法律意见):甲应承担违约责任。
- 强合规性:不可逾越的“红线”
- 不可替代律师决策:所有输出需标注“仅供参阅,不构成法律建议”;
- 不可生成违法内容:例如,不可建议用户“伪造证据”;
- 必须基于现行有效的法律:例如,《民法典》于2021年生效后,不得再引用《合同法》。
- 场景复杂性:多任务的动态决策
- 合同审查:需识别风险点→关联法条→提出修改建议;
- 法律咨询:需理解用户问题→检索相关法条→用通俗语言解释;
- 案例分析:需提取案例关键信息→对比现行法律→总结裁判规则。
法律文本的术语是“精确到字”的:例如,“定金”与“订金”的区别(前者适用双倍返还,后者不适用);“无权处分”与“无权代理”的法律后果完全不同。若提示词中术语出错,AI生成的内容将完全失效。
同时,法律推理遵循三段论逻辑:
提示词必须引导AI遵循这一逻辑,不可“跳跃”或“遗漏”。
法律AI的核心合规要求包括:
这些要求必须“硬编码”到提示词中,否则AI容易“触线”。
法律Agent需要应对的场景十分多样:
不同场景的提示词需适应Agent的行为逻辑(如合同审查需调用法条检索工具,而法律咨询需用口语化表达)。
1.2 现有解决方案的局限性
- 通用提示词:例如,“你是一名律师,请回答我的问题”,无法满足法律的专业性和合规性要求;
- 单一场景提示词:例如,仅针对合同审查编写提示词,无法复用,维护成本高;
- 忽略Agent特性:未引导Agent调用工具(如需要法条时不知查询数据库),导致输出不准确。
二、核心概念:提示词库的设计原则
要解决上述问题,提示词库需遵循“分层架构+元数据管理+Agent适配”三大原则。
2.1 什么是“法律领域Agentic AI提示词库”?
它是结构化存储法律场景提示词的知识库,具有以下三个特点:
- 分层:按“基础能力→场景能力→Agent交互能力”分层,复用性强;
- 元数据化:每个提示词带有场景、合规级别、版本等标签,便于管理;
- Agent适配:提示词引导Agent自主决策(如“需要法条时调用工具”)。
2.2 核心设计原则
(1)分层设计:从通用到具体
提示词库分为三层,每层解决不同问题:
| 层级 | 作用 | 示例 |
|---|---|---|
| 基础层 | 提供通用能力,如基本法律逻辑、术语定义等 | “请解释‘定金’与‘订金’的区别” |
| 场景层 | 针对特定应用场景,如合同审查、法律咨询等 | “请审查以下合同条款,指出潜在风险并提供改进建议” |
| 交互层 | 指导Agent与用户互动,如调用工具、反馈结果等 | “在需要时,请调用法条检索工具以获取相关信息” |
定义AI的“身份”“合规要求”“通用规则”
“你是一名专业的中国律师,回答需基于2021年《民法典》及现行有效的司法解释;所有输出必须标注‘仅供参阅,不构成法律建议’。”
场景层
针对具体任务的指示(如合同审核)
“请审核以下合同的风险点,每个风险点需指出对应的法律依据(如《民法典》第XX条),并提供修改建议。”
Agent交互层
指导Agent调用工具、追踪状态
“当你需要查询法律条文时,请调用工具‘LegalProvisionsRetriever’,输入关键词(如‘格式条款 无效’);当你需要验证案例时,请调用‘CaseBase’。”
优势
:基础层可以重复使用(所有场景都需要合规要求),场景层针对特定任务,Agent交互层适应系统行为,结构清晰。
(2)元数据管理:使提示词“可控、可查找、可追溯”
每个提示词需要添加元数据,例如:
{
"id": "contract_review_001",
"content": "请审核以下合同的风险点...",
"metadata": {
"scene": "合同审核", // 场景标签
"compliance_level": "high", // 合规级别(高/中/低)
"version": "v1.0", // 版本号
"update_time": "2024-05-01", // 更新时间
"author": "LegalAI Team", // 作者
"dependency": ["base_001"] // 依赖的基础层提示词
}
}
功能
:快速检索:例如要找“合同审核”场景的提示词,直接过滤
scene
标签;
版本控制:防止修改冲突(例如v1.0和v2.0的提示词可以共存);
合规审计:通过
compliance_level
快速定位高风险提示词。
(3)Agent适配:引导自主决定
Agentic AI的核心是“自主行动”,提示词需要
清楚地告诉Agent“何时做何事”。
例如:
当需要法律依据时:“请调用工具‘LegalProvisionsRetriever’,输入关键词”;
当需要验证事实时:“请询问用户提供合同签订时间”;
当完成任务时:“请总结风险点、法律依据和修改建议,最后标注合规提示”。
三、逐步实施:从需求到提示词库落地
接下来,我们用**“合同审核Agent”**作为案例,展示提示词库的构建过程。
3.1 步骤1:需求分解——明确“要解决的问题”
提示词库的设计必须从
用户需求
和
场景痛点
出发,不能凭空想象。
(1)场景列举
首先列出法律Agent的核心场景,例如:
合同审核(最常见):识别合同中的风险点(如格式条款、违约条款);
法律咨询:回答用户的法律问题(如“租房押金不退怎么办”);
合规检查:检查企业行为是否符合《数据安全法》《反垄断法》;
案例分析:总结类似案例的裁判规则(如“民间借贷利率的上限”)。
本文以
合同审核
为例。
(2)用户需求收集
通过访谈律师、法务人员,收集合同审核的核心需求:
AI需
准确识别风险点
(如“提前3个月支付全部租金”是否违法);
每个风险点必须
关联具体的法律条文
(不能只说“违法”,要指出“《民法典》第721条”);
需提供
可操作的修改建议
(如“改为按月支付”);
必须
标注合规提示
(“仅供参阅,不构成法律建议”)。
(3)合规要求整理
法律合规是“红线”,必须明确写入提示词:
所有输出必须标注“仅供参阅,不构成法律建议”;
不能代替用户做决定(如不能说“你应该起诉”,只能说“你可以考虑起诉”);
必须基于现行有效的法律(如2021年《民法典》)。
3.2 步骤2:法律知识结构化——将“法律文本”变为“提示词原料”
提示词库的核心是
法律知识
,必须先将法律文本结构化,才能转化为提示词。
(1)法律条文结构化
法律条文的结构是“编-章-节-条-款-项”,例如《民法典》的结构:
第一编 总则 → 第六章 民事法律行为 → 第三节 民事法律行为的效力 → 第一百四十三条 具备下列条件的民事法律行为有效:
(一)行为人具有相应的民事行为能力;
(二)意思表示真实;
(三)不违反法律、行政法规的强制性规定,不违背公序良俗。
我们需要将法律条文拆解为**“编号+内容+关键词”**的结构,便于Agent检索:
{
"law_id": "民法典_143",
"content": "具备下列条件的民事法律行为有效:(一)行为人具有相应的民事行为能力;(二)意思表示真实;(三)不违反法律、行政法规的强制性规定,不违背公序良俗。",
"keywords": ["民事法律行为", "有效条件", "行为能力", "意思表示", "公序良俗"]
}
(2)法律逻辑建模
合同审核的核心逻辑是**“事实→风险点→法律条文→建议”**,我们需要将这一逻辑转化为提示词的“引导语”:
“请按照以下步骤分析合同:
提取合同中的关键条款(如租金支付方式、解除条件);
辨识每项条款的风险点(例如是否增加了承租人的责任);
引用相应的法律条文作为依据(例如《民法典》第XX条);
提出具体的修订提议(例如“将预付3个月改为按月支付”);
最后注明合规性建议。
3.3 步骤3:提示词库分层构建——从基础至场景
依据先前的分层准则,我们构建了合同审核场景下的提示词库。
- 基础层提示词(base_001)
界定AI的角色、合规需求及普遍规则:
你是一名专业的中国律师,擅长合同审查。回答需严格遵循以下规则: 1. 所有分析基于2021年《中华人民共和国民法典》及现行有效司法解释; 2. 不得生成违反法律、行政法规的内容; 3. 所有输出必须标注:“本意见仅供参考,不构成法律建议,请咨询专业律师。” - 场景层提示词(contract_review_001)
针对合同审核的具体工作:
请审查以下合同的风险点,按照“风险点→法条依据→修改建议”的结构输出: 1. 风险点:明确指出合同中的违规或不合理条款(如“提前3个月支付全部租金”); 2. 法条依据:引用具体的法律条文(如《民法典》第721条); 3. 修改建议:给出可操作的调整方案(如“改为按月支付租金”)。 - Agent交互层提示词(agent_contract_review_001)
指导Agent调用工具:
当你需要检索法条时,请调用工具“LegalProvisionsRetriever”,输入关键词(如“格式条款 无效”); 当你需要确认合同细节时,请询问用户补充信息(如“请提供合同的签订时间”); 当你完成分析后,请按照“风险点→法条依据→修改建议”的结构总结,并标注合规提示。 - 组合完整提示词
整合三层提示词,生成最终的Agent提示词:
{基础层提示词} {场景层提示词} {Agent交互层提示词} 合同文本:{contract_text}
3.4 步骤4:元数据录入——使提示词‘可管理’
为每个提示词添加元数据,比如场景层提示词
contract_review_001
的元数据:
{
"id": "contract_review_001",
"content": "请审查以下合同的风险点...",
"metadata": {
"scene": "合同审查",
"compliance_level": "high",
"version": "v1.0",
"update_time": "2024-05-01",
"author": "LegalAI Team",
"dependency": ["base_001"]
}
}
3.5 步骤5:存储与管理——采用JSON/数据库存储提示词库
可以使用 JSON文件 或关系型数据库(例如PostgreSQL)来存储提示词库。本文使用JSON文件示例(
legal_prompt_library.json
):
{
"base_001": {
"content": "你是一名专业的中国律师...",
"metadata": {...}
},
"contract_review_001": {
"content": "请审查以下合同的风险点...",
"metadata": {...}
},
"agent_contract_review_001": {
"content": "当你需要检索法条时...",
"metadata": {...}
}
}
四、关键代码解析:LangChain集成提示词库
接下来,我们将使用LangChain框架将提示词库集成到Agent系统中,以实现合同审查功能。
4.1 环境准备
- 依赖库安装
pip install langchain openai elasticsearch pandas python-dotenv
- 工具准备
Elasticsearch :用于存储和检索法条(模拟法律数据库);
OpenAI API Key :用于调用GPT-3.5/4模型;
.env文件 :存储敏感信息(如OPENAI_API_KEY、ELASTICSEARCH_URL)。
4.2 核心代码实现
- 加载提示词库
import json from dotenv import load_dotenv # 加载环境变量 load_dotenv() # 加载提示词库JSON文件 def load_prompt_library(path: str) -> dict: with open(path, "r", encoding="utf-8") as f: return json.load(f) prompt_library = load_prompt_library("legal_prompt_library.json") - 定义法条检索工具
模拟使用Elasticsearch检索法条:
from elasticsearch import Elasticsearch # 初始化Elasticsearch客户端 es_client = Elasticsearch( hosts=[os.getenv("ELASTICSEARCH_URL")], http_auth=(os.getenv("ELASTICSEARCH_USER"), os.getenv("ELASTICSEARCH_PASS")) ) # 定义法条检索工具函数 def retrieve_legal_provisions(keywords: str) -> list: """调用Elasticsearch检索法条""" query = { "query": { "match": { "keywords": keywords # 匹配法条的关键词字段 } } } results = es_client.search(index="legal_provisions", body=query) return [hit["_source"]["content"] for hit in results["hits"]["hits"]] - 构建Agent提示词
拼接三层提示词,创建PromptTemplate:
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool
# 1. 获得各层提示语
base_prompt = prompt_library["base_001"]["content"]
scene_prompt = prompt_library["contract_review_001"]["content"]
agent_prompt = prompt_library["agent_contract_review_001"]["content"]
# 2. 组合完整提示语
full_prompt = f"{base_prompt}\n{scene_prompt}\n{agent_prompt}\n合同文本:{{contract_text}}"
# 3. 建立PromptTemplate(输入变量为合同文本)
prompt_template = PromptTemplate(
input_variables=["contract_text"],
template=full_prompt
)
# 4. 启动LLM(采用OpenAI GPT-3.5)
llm = OpenAI(temperature=0, model_name="gpt-3.5-turbo-instruct")
# 5. 规定工具列表
tools = [
Tool(
name="LegalProvisionsRetriever",
func=retrieve_legal_provisions,
description="用于查找中国现行有效的法律条文,输入关键字(如‘格式条款 无效’)"
)
]
# 6. 启动Agent(zero-shot-react-description类型:依据工具说明自主调用)
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description",
verbose=True # 展示Agent的思考流程
)
(4)测试合同审核
提交一份租赁合同,测试Agent的输出:
# 测试用合同文本
contract_text = """
租赁合同
甲方:张三(出租人)
乙方:李四(承租人)
1. 租赁对象:甲方位于北京市朝阳区XX路XX号的房产;
2. 租期:1年(2024年1月1日至2024年12月31日);
3. 租金:每月5000元,乙方需提前3个月支付总租金(总计60000元);
4. 解约条件:若乙方未能按时支付租金,甲方有权立即终止合同,并不退还已支付的租金。
"""
# 运行Agent
response = agent.run(prompt_template.format(contract_text=contract_text))
# 输出结果
print("合同审核结果:")
print(response)
4.3 代码解释
提示语组合
:连接基础层、场景层、Agent互动层提示语,保证AI同时满足“角色定义”“任务需求”和“工具调用逻辑”;
工具定义
:利用
Tool
类封装法规检索功能,
description
字段告知Agent“何时使用此工具”;
Agent启动
:选用
zero-shot-react-description
类型,Agent将基于工具的描述自行决定是否调用工具;
verbose=True
:展示Agent的思考流程(例如“我需要查询关于租金支付时间的法规,因此调用LegalProvisionsRetriever工具”),便于调试。
五、验证与优化:确保准确性和合规性
提示语库构建完毕后,必须验证
准确性
(风险点识别无误)、
合规性
(不超出界限)、
Agent兼容性
(正确调用工具)。
5.1 结果验证
执行上述代码后,Agent的输出示例:
我现在需要审查这份租赁合同的风险点。首先看第3条“乙方需提前3个月支付全部租金”,这涉及租金支付期限的问题。我需要调用LegalProvisionsRetriever工具,检索关键词“租金支付期限 民法典”。
(调用工具后,返回《民法典》第721条:“承租人应当按照约定的期限支付租金。对支付租金的期限没有约定或者约定不明确,依据本法第五百一十条的规定仍不能确定,租赁期限不满一年的,应当在租赁期限届满时支付;租赁期限一年以上的,应当在每届满一年时支付,剩余期限不满一年的,应当在租赁期限届满时支付。”)
接下来分析第4条“若乙方未按时支付租金,甲方有权立即解除合同,且不退还已支付的租金”,涉及解除合同的条件和押金退还问题。需要检索“解除合同 租金 民法典”。
(调用工具后,返回《民法典》第722条:“承租人无正当理由未支付或者迟延支付租金的,出租人可以请求承租人在合理期限内支付;承租人逾期不支付的,出租人可以解除合同。”)
现在整理风险点:
1. 风险点:第3条要求提前3个月支付全部租金,违反《民法典》关于租金支付期限的规定。
法条依据:《民法典》第721条。
修改建议:将“提前3个月支付全部租金”改为“按月支付租金,每月5日前支付当月租金”。
2. 风险点:第4条约定“未按时支付租金立即解除合同且不退还租金”,不符合《民法典》关于解除合同的“合理期限”要求,且不退还租金可能加重承租人责任。
法条依据:《民法典》第722条。
修改建议:将“立即解除合同”改为“出租人有权催告承租人在7日内支付,逾期不支付的,出租人可以解除合同”;删除“且不退还已支付的租金”。
本意见仅供参考,不构成法律建议,请咨询专业律师。
5.2 验证标准
准确性
:风险点对应的法规是否准确(例如第3条对应《民法典》第721条);
合规性
:是否标有“仅供参考”(是);
Agent兼容性
:是否正确调用工具(是,两次调用LegalProvisionsRetriever);
实用性
:修改建议是否可行(是,例如“改为按月支付”)。
5.3 优化迭代
如果验证失败,需要针对性地优化:
若风险点识别错误
:增加少量样本示例(例如向AI展示正确的风险点分析实例);
若Agent不调用工具
:优化Agent互动层提示语,明确“需要法规时调用工具”;
若合规性缺失
:在基础层提示语中强制添加“必须标注合规提示”;
若法规关联错误
:优化法规的关键词(例如将“租金支付时间”改为“租金 支付时间 民法典”)。
六、最佳实践与常见问题
6.1 最佳实践
(1)利用“少量样本示例”提高准确性
在场景层提示语中加入
少样本示例
,使AI更明确“如何输出”。例如合同审查的少量样本:
示例1:
合同条款:“乙方需支付10万元定金,如果乙方违约,定金不予退还;如果甲方违约,仅退还定金。”
风险点:定金条款不符合“双倍返还”的规定(《民法典》第586条)。
法条依据:《民法典》第586条“当事人可以约定一方给予另一方定金作为债权的担保。定金合同自实际交付定金时生效。定金的金额由当事人约定;但是,不得超过主合同标的额的百分之二十,超出部分不产生定金的效力。实际交付的定金金额多于或少于约定金额的,视为变更约定的定金金额。”
修改建议:将“仅退还定金”改为“双倍返还定金”。
(2)定期更新提示词库
法律是不断变化的(例如新的司法解释出台、旧法修订),需要定期更新提示词库:
当《民法典》司法解释出台时,更新基础层提示词中的“现行有效法律”;
当合同审查的新风险点出现(如“数据隐私条款”),添加新的场景层提示词。
(3)用自动化测试保证质量
编写单元测试验证提示词的效果,例如:
def test_contract_review_prompt():
# 测试用合同文本(包含格式条款)
contract = "乙方不得提前解除合同,否则需支付违约金10万元。"
# 预期输出:识别格式条款风险,关联《民法典》第497条
response = agent.run(prompt_template.format(contract_text=contract))
assert "格式条款" in response
assert "《民法典》第497条" in response
6.2 常见问题与解决方法
| 问题 | 解决方法 |
|---|---|
| AI生成的术语错误(如“定金”写成“订金”) | 在基础层提示词中加入术语定义(如“‘定金’指…,‘订金’指…”),或使用少量样本示例。 |
| Agent不调用工具 | 优化Agent交互层提示词,明确“需要法条时调用工具”,或提高工具的清晰度。 |
| 合规提示缺失 | 在基础层提示词中强制加入“所有输出必须标注合规提示”,或用代码检查输出是否包含该提示。 |
| 提示词库维护困难 | 使用元数据管理(如场景标签、版本号),或用数据库存储(如PostgreSQL)替代JSON文件。 |
七、未来展望
法律领域Agentic AI的提示词库有很大的优化空间:
7.1 结合法律知识图谱
利用知识图谱关联法条、案例、术语,使提示词库更加“智能化”:例如当AI识别到“格式条款”时,自动关联相关法条(《民法典》第497条)、案例(例如“淘宝格式条款案”),生成更全面的提示词。
7.2 多模态提示词
支持处理合同中的图片、表格(如财务数据表格),生成多模态提示词:例如“请分析合同附件中的财务表格,识别其中的金额风险”。
7.3 跨司法管辖区支持
支持不同国家/地区的法律(如中国、美国、欧盟),通过元数据的
jurisdiction标签区分提示词:例如jurisdiction: "China"对应中国法律提示词,jurisdiction: "US"对应美国法律提示词。
7.4 提示词的自动化生成
使用LLM自动生成提示词:例如输入“合同审查场景”,LLM自动生成基础层、场景层、Agent交互层的提示词,再由人工审核,提高效率。
八、总结
构建法律领域Agentic AI的提示词库,关键是**“将法律专业知识转化为Agent能理解的结构化提示”**。主要步骤包括:
- 需求拆解:明确用户需求和合规要求;
- 知识结构化:将法条、法律逻辑转化为提示词原料;
- 分层设计:基础层(身份与合规)、场景层(具体任务)、Agent交互层(工具调用);
- 集成测试:使用LangChain等框架验证提示词的效果;
- 迭代优化:根据反馈调整提示词,确保准确性和合规性。
法律AI的核心价值是**“辅助律师,而不是替代律师”**,提示词库的设计必须围绕这一核心,确保AI输出的内容“专业、合规、有用”。
希望本文能帮助你开始法律领域提示工程的实践,如果你有任何问题或想法,欢迎在评论区交流!
参考资料
- LangChain官方文档:https://python.langchain.com/
- 《中华人民共和国民法典》:https://www.gov.cn/xinwen/2020-05/28/content_5516317.htm
- OpenAI提示工程指南:https://platform.openai.com/docs/guides/prompt-engineering
- 法律知识图谱项目:https://github.com/koaning/legal-bert
- Elasticsearch官方文档:https://www.elastic.co/guide/index.html
附录
完整提示词库JSON示例:https://github.com/your-repo/legal-prompt-library/blob/main/legal_prompt_library.json
Elasticsearch法律条文索引创建脚本
:https://github.com/your-repo/legal-prompt-library/blob/main/create_legal_index.py
测试用合同文档
:https://github.com/your-repo/legal-prompt-library/blob/main/test_contract.txt
(注:上述链接为示例,实际项目中应替换为个人仓库地址。)


雷达卡


京公网安备 11010802022788号







