编者按:
在智能体的搭建中,提示工程(Prompt Engineering)是连接人类意图与模型能力的桥梁。一个精心设计的提示词(Prompt)能够引导 LLM 准确理解任务、遵循指令,并生成高质量、符合法律行业要求的输出。

撰写高质量的提示词,需要遵循一定的原则,并按照逻辑编排。一般而言,提示词分为以下几个部分:
人设与目标
任务要求
输出格式
输出示例(可选)
其他上下文知识
输入数据
1.任务目标与角色设定(“人设与目标”部分)。
在提示词的开头,需要清晰地阐明 LLM 的目标以及它应该扮演的角色。这有助于模型建立正确的上下文理解。
法律应用示例:
合同审查:
### 人设与目标
你是一名专业的合同审查律师,你的目标是识别并标注合同中的潜在风险条款。
诉讼分析:
### 人设与目标
你是一名资深诉讼分析师,你的任务是根据提供的案情描述,评估案件的胜诉概率并提供关键证据方向。
法律文本生成:
### 人设与目标
你是一名精通各类法律文书起草的法律助手,你需要根据用户提供的要素,撰写一份简洁明了的法律意见书。
2.明确的操作步骤(“任务要求”部分)
清晰、具体地列出指引 LLM 完成任务的各项步骤,避免模糊不清的指令。可以使用编号、列表等方式使其更具可读性。
法律应用示例:
合同审查:
### 任务要求
1. 逐条审查合同条款。
2. 识别其中可能对立场方不利的风险点,例如不合理的免责条款、模糊的责任界定。
3. 针对每个风险点,提供修改建议或说明其潜在影响。
诉讼分析:
### 任务要求
1. 分析案情描述中涉及的法律关系和争议焦点。
2. 识别对原告或被告有利的关键事实和证据。
3. 参照相关法律法规和司法解释,评估本案可能的法律后果。
4. 提出可能的诉讼策略或和解建议。
法律文本生成:
### 任务要求
1. 根据提供的要素,生成一份格式规范、语言严谨的法律意见书。
2. 意见书应包含:事件概述、法律分析、结论与建议。
3. 确保引用法条准确无误。
3.约束条件与输出格式要求。
明确规定模型输出的格式、长度、语言风格以及需要避免的内容。这有助于控制输出质量并使其更具可用性。
法律应用示例:
合同审查:
### 输出格式
请以Markdown表格形式输出审查结果,包含 “条款序号”、“条款内容”、“风险等级(高/中/低)”、“风险描述”、“建议修改”五列。避免使用口语化表达。
诉讼分析:
### 输出格式
请以报告形式输出分析结果,报告需包含 “案情摘要”、“法律分析”、“证据建议”、“风险评估”四个部分。报告字数控制在1000字以内。
法律文本生成:
### 输出格式
法律意见书需使用正式书面语,条理清晰,逻辑严谨。避免冗余信息。结尾必须包含免责声明。
一般为了更好引导LLM输出内容的格式,可以选择添加部分输出示例。
4.外部信息或额外的上下文信息。
为模型提供完成任务所需的其他的必要信息,包括法律名称、相关法律条文等,从而避免模型凭空捏造。特别是法律AI应用中,LLM生成结果高度依赖于专业和准确的法律知识,比如合同类型的识别、合同是否具有违法风险的判断,在提示词中有必要提供这部分知识。这部分专业信息建议独立成提示词中的一部分。
法律应用示例:
增值税应税范围判断
### 背景知识
《中华人民共和国增值税暂行条例》中关于应税行为的规定如下:
第一条 在中华人民共和国境内销售货物或者提供加工、修理修配劳务以及进口货物的单位和个人,为增值税的纳税人,应当依照本条例缴纳增值税。
如果这部分知识过于庞杂,应当做成知识库(详见
5.输入数据。
即提供给 LLM 用于分析的内容,通常是合同文本。
Dify 中「LLM」的提示词部分区分了系统提示词(System Prompt)、用户提示词(User Prompt)、模型回复(Assistant Response)三部分内容,这和前文所说提示词的组成部分是相对应的。
系统提示词定义了 LLM 的初始身份、能力、行为准则以及对话的整体背景。内容上包括人设与目标、任务要求、输出格式、背景知识等部分。
用户提示词代表用户向 LLM 提出的具体问题、指令或数据。通常用于放置变量,比如需要处理的法律文件(如合同文本、案情描述),或者上游节点的输入。
模型回复则与下文中所说的样本提示相关。

零样本提示(Zero-Shot Prompt),是指在提示词中并未给出示例,而是要求 LLM 按照指令生成回复。单样本提示(One-Shot Prompt)是指给 LLM 提供一个示例。少样本提示(Few-Shot Prompt),是提供少量高质量的输出示例。提供样本的提示词有助于LLM理解任务意图和期望的输出风格,而是否给出提示可以视任务的复杂程度和LLM的输出效果而定。
法律应用示例:合同多个版本的内容比对
零样本提示
【任务要求】
请比对以下两个版本的合同内容差异,输出原始条款内容、新条款内容、变更类型(新增/删减/修改)、对权利义务的潜在影响。
【输入变量】
合同版本A:{{合同A}}、合同版本B:{{合同B}
单样本提示
【任务要求】
请比对以下两个版本的合同内容差异,输出原始条款内容、新条款内容、变更类型(新增/删减/修改)、对权利义务的潜在影响。
【示例输入】:
【版本A】第5.3条:付款期限为合同生效后30日内付款。
【版本B】第5.3条:付款期限为合同生效后60日内付款。
【示例输出】:
原始条款内容:第5.3条:付款期限为合同生效后30日内付款。
新条款内容:第5.3条:付款期限为合同生效后60日内付款。
变更类型:修改
潜在影响:延长了付款期限,可能导致卖方回款周期延长,增加现金流压力。
【输入变量】
合同版本A:{{合同A}}、合同版本B:{{合同B}}
Dify中的模型回复代表LLM根据系统提示词和用户提示词生成的输出内容。它体现了模型对用户指令的理解和执行结果。模型回复并不必然会有,比如在零样本提示词的情况下,则只需要系统提示词和用户提示词即可。如下图所示的工作流,提示词没有采用样本提示的方法:

(点击图片可放大查看)
当然也可以额外添加用户提示词和模型回复作为样本提示词。

(点击图片可放大查看)

1.指令明确化。
在编写提示词前,首先要明确当前「LLM」在整个工作流中的作用:它接收什么输入(来自上游节点)、需要完成什么任务、最终向下游节点输出什么内容。只有搞清楚这些基本信息,才能设计出具有清晰目标的提示词,避免出现“请帮我分析一下这个案子”这样过于模糊的指令,导致模型输出内容没有重点或背离预期。
法律应用示例:
目标不明确的系统提示词示例:
请帮我审查一下这份合同。
目标明确的系统提示词示例:
你是一名精通合同法的企业法务,擅长分析合同中存在的风险。
请根据下方提供的买卖合同全文,识别并指出其中是否存在下列问题:1)付款条款是否存在延迟或保障不足;2)违约责任是否明确、合理;3)争议解决机制是否规范;4)是否存在明显的不对等义务或格式条款问题。
输出内容包括:合同问题清单、每项问题对应的简要说明及参考法律条文。请确保所有分析基于《中华人民共和国民法典》的相关规定。
2.告诉 LLM “应该做什么”,比“不要做什么”更有效。
在实际使用中,LLM 有时对“禁止性指令”的理解并不稳定。比如即使提示词中写明“不要捏造不存在的法律”,它仍可能输出输出错误的法律。更好的做法是,用正面语言明确告诉模型应该如何做:比如“法律依据为《民法典》,不得参考其他法律”。简而言之,相比于要求 LLM 不要做什么,更好的指令是告诉 LLM 应该做什么。
法律应用示例——
应在提示词中避免下列说法:
不要忽略合同中的免责条款。
不要给出模糊不清的修改建议。
不要使用口语化的表达。
而更建议采用如下表述:
请务必识别并突出显示合同中所有免除或减轻一方责任的条款。
针对每个识别出的风险点,请提供具体、可操作的修改建议,例如修改措辞、增加限制条件或明确补充条款。
请始终使用严谨、正式的法律书面语言,确保专业性和准确性。
以下是一个较完整的示例:
法律应用示例:
系统提示词部分
### 人设与目标
你是一名熟悉中国税法的企业法务人员,掌握《中华人民共和国增值税暂行条例》及其相关增值税政策。你的任务是判断合同描述描述的交易是否属于增值税应税项目,并说明理由
### 任务要求
1. 提炼合同中的交易类型;
2. 判断判断该交易是否应缴纳增值税。
### 输出格式
请以如下格式回答:
是否应缴纳增值税:是 / 否
理由:……(援引法律)
### 背景知识
你可参考以下法规:
《中华人民共和国增值税暂行条例》第二条:在中国境内销售货物、提供加工、修理修配劳务、销售服务、无形资产、不动产,以及进口货物,属于应税行为,应缴纳增值税。
用户提示词部分
合同原文如下:{{}}
(如有:知识检索结果如下:{{}})

在构建法律智能体时,为 LLM 提供更丰富的上下文信息通常有助于提升准确性、减少幻觉。然而,更多的上下文也意味着更高的运行成本、更慢的响应速度。推荐的做法是:从简洁的提示词开始,通过测试逐步优化,按需增加内容。
1.从简单到复杂:逐步扩展上下文。
提示词不宜一开始就设计得过于复杂,而应从核心指令和必要上下文信息开始,随着模型在实际测试中的表现,逐步添加提示词要素。比如,发现LLM会犯某种错误的时候在提示词中增加具体指令或限制性条件进行引导。所以,根据测试反馈不断迭代提示词是至关重要的,应结合Dify的追踪功能,观察「LLM」的输出结果。
2.多维测试:覆盖特殊与通用场景。
评估提示词效果不能仅依赖于某一类文本的测试效果,而应包括多种类型的输入,以发现模型在不同情境下的稳定性与误判。
判断「LLM」的输出质量的标准是多维度的,比如:知识理解是否准确、法条引用是否正确、推理逻辑是否清晰、输出格式是否符合预期。在测试中应当特别留意这些多维度的评价标准。
测试样本也应该是多维度的:不仅要测试“理想情况”下的表现,还要测试特殊的案例、模糊输入等等,以发现LLM 的薄弱环节。比如在搭建判断增值税的工作流的时候,不仅要测试正常缴纳增值税的交易类型,还要考虑免征情形;在正常缴纳增值税的交易中,同时要测试销售货物、服务、劳务、无形资产、不动产的交易,而不能只限定在某一领域。这将有助于测试 LLM 是否了解各种交易标的、各类交易情形,并将其与税法政策建立正确的关联。
3.提示词的优化。
根据测试结果,提示词的优化方向可以包括:
指令更清晰具体:确保 LLM 明确知道要完成的任务和输出要求。
增加限制条件:在提示词中约束 LLM 的行为。
补充关键法律概念:针对模型常犯的错误,在提示词中提供必要的法律背景信息或术语定义,弥补其可能存在的知识盲区。
提供高质量范例:样本学习可以引导 LLM 生成符合预期的内容。
如果撰写提示词时发现单个节点任务过于复杂,应考虑将其拆解为多个子任务,并分别为每个子任务设计独立的提示词和 LLM 节点,避免一个节点承担过多的责任(详见下文)。

由于「LLM」的运行需要耗费时间成本和经济成本,所以工作流中该节点的编排也需要掌握一定技巧。
1.「LLM」的合并与删除。
如果一个「LLM」处理的任务过于复杂可以考虑拆分成多个「LLM」。多个「LLM」,如果实现的功能类似或者相关的话,也可以考虑合并在一起。

(点击图片可放大查看)
如上图所示,中间的「LLM」用于分析合同中存在的风险、提供建议,最终生成一份完整的审查报告。但问题在于,该节点承担过多的任务,如果其输出结果不理想,可以考虑将该节点拆开,如下图所示:

(点击图片可放大查看)
上图是将风险审查中的任务基于条款的类别进行了拆解:
「LLM 1」:将条款按照主题,如费用与支付、违约责任、争议解决、保密条款等条款,进行分类。
「LLM 2」、「LLM 3」、「LLM 4」:针对特定类别的条款,如违约责任,比对预设的风险规则或标准范本,识别潜在风险,并提出修改建议。
「LLM 5」:综合各个节点的输出,最终生成一份风险分析报告。
这种拆解方式并不是唯一的,而是需要考虑到实际效果,不断地调整。
而多个节点根据实际运行效果也可能会合并。比如,如果两个「LLM」的任务都较为简单,并且有一定相关性,可以考虑将两个节点合并到一起。
2.如果能用其他节点实现的相似功能,就不用「LLM」。
LLM 耗时更久,并且会消耗 Tokens,所以如果使用其他节点能够让运行速度更快并且降低成本,则更推荐选择其他节点而非「LLM」。比如,如果需要提取从上游节点的格式化文本中提取特定内容,可以考虑使用「代码执行」,而不必动用「LLM」;如果需要汇总上游节点的多个输出,也可以通过「代码执行」按照特定格式整理结果,也无需调用「LLM」。
此外,如果有专门任务,也可以交由专门的节点完成,比如 Dify 中的「问题分类器」用于给输入变量进行分类,「参数提取器」用于从自然语言推理并提取结构化参数。虽然这两个节点都使用了 LLM,但用于特定的任务,使用起来会更便捷并具有针对性。
3.没有先后顺序的多个「LLM」,建议并行运行。
如果两个「LLM」之间互不为彼此提供输入变量,则可以设置并行分支,节约时间。比如在做不同版本的合同的文本对比的时候,同时需要提取两个合同的条款合同,此时可以设置并行的「LLM」,最后汇总在一个「LLM」。

(点击图片可放大查看)

在「LLM」中点击模型,可以设置参数。

(点击图片可放大查看)
常见的模型设置的参数如下:
温度(Temperature):控制随机性。温度越低,LLM 返回的结果就越确定;温度越高,LLM 的输出结果会更随机。
最大标记(Max Length):可以通过调整最大标记来控制大模型生成的 token 数,这决定了 LLM 生成内容的长度。
Top P:控制结果的多样性与置信度范围。
运行原理:模型会将所有候选词按概率排序,从中选出累计概率达到P的词集合(如P=0.9表示选取概率总和为90%的前若干词),然后从中随机抽取一个生成。
Top P与Top K的区别:Top K是只看“前K个最可能的词”,次数固定,不管它们的总概率是多少;Top P是只看“累计概率达到P的最少词数”,词数不固定。
Top P如何影响结果的多样化:较低的Top P值会选择最有信心的响应,而较高的Top P值将使模型考虑更多可能的词语,包括不太可能的词语,从而导致更多样化的输出。
存在惩罚(Presence Penalty): 控制模型生成重复实体或信息的倾向。通过对已经生成的内容施加惩罚,使模型倾向于生成新的或不同的内容。参数值增加时,对于已经生成过的内容,模型在后续生成中被施加更大的惩罚,生成重复内容的可能性越低。
频率惩罚(Frequency Penalty):控制模型输出中高频词语的重复次数。随着参数值的增加,对频繁出现的词或短语施加更大的惩罚。较高的参数值会减少这些词的出现频率,从而增加文本的词汇多样性。
如果你希望在本文的基础上,进一步系统了解“大模型 + 工作流 + 知识库”如何结合起来服务法律业务,可以参考:《法律智能体(Agent)搭建指南:以 Dify、扣子为例快速入门》。
本书由法天使智能法务部编写,面向不具计算机背景的法律人,介绍如何以 LLM 为基础,通过工作流和知识库搭建出可控、可用的法律智能体,让AI在合同审查、合规管理等场景中真正发挥“勤勉助理”的作用。
欢迎点击下方图书链接了解更多。

