跳转到内容

4.2 基础与高级提示技巧

工欲善其事,必先利其器:掌握提示工程的基础与高级技巧

Section titled “工欲善其事,必先利其器:掌握提示工程的基础与高级技巧”

理解了提示工程(Prompt Engineering)对于有效利用大型语言模型(LLM)的关键作用(见4.1节),下一步便是掌握具体的技巧,将抽象的原理转化为可操作的实践。这如同律师需要精通不同的法律研究方法或庭审辩论技巧一样,与LLM进行高效、精准的交互也需要掌握一套系统的方法论和实用的“独门秘籍”。

大型语言模型本质上是基于其庞大训练数据进行模式匹配和概率预测的系统,它们并不具备真正的理解力、常识或意图。因此,我们向其发出的“提示”(Prompt),就如同我们与一位极其博学但有时稍显“字面化”或“缺乏主动性”的学徒沟通时所使用的指令和上下文。提示的质量直接决定了这位“超级学徒”能否准确领会我们的意图,并给出符合要求、有价值的回应。

本节将系统介绍一系列从基础到高级的提示工程技巧,这些技巧旨在帮助您更好地构建提示,引导LLM发挥其最大潜力。我们将辅以与法律场景相关的示例,助您逐步提升驾驭LLM的能力,让这位强大的“智能助手”真正为您所用,成为法律工作中提质增效的利器。

一、 基础提示技巧:打好与AI沟通的地基

Section titled “一、 基础提示技巧:打好与AI沟通的地基”

这些是构建任何有效提示的基石性原则和基础技巧。它们看似简单直观,却是后续所有高级玩法能够成功施展的前提,适用于几乎所有与LLM的交互场景。熟练掌握并灵活运用这些基础技巧,是与AI进行清晰、有效沟通的第一步。

1. 清晰明确的指令 (Clear and Specific Instructions):避免模棱两可

Section titled “1. 清晰明确的指令 (Clear and Specific Instructions):避免模棱两可”
  • 原则阐释: LLM缺乏人类的直觉和背景知识,它们严格按照接收到的指令进行处理。因此,使用简洁、直接、没有歧义的语言,一针见血地告诉模型你到底希望它完成什么具体任务至关重要。模糊不清、过于笼统或开放式的问题,只会让AI难以确定目标,导致其输出结果偏离预期,或者给出过于泛化、缺乏实用价值的回答。
  • 实践技巧:
    • 指令动词化: 尽量使用祈使句式,并以明确的行动动词开头,直接点明任务核心。例如:“总结”以下判决书要点、“列出”这份合同中的所有定义条款、“识别”“提取”邮件中的关键时间节点、“起草”一份关于XX事宜的律师函初稿、“比较并对比”这两部法规在XX规定上的异同、“解释”“表见代理”这个法律概念的构成要件、**“将”这段英文证词“翻译”**成中文。
    • 任务分解: 如果一个任务包含多个步骤或目标,尝试将其分解为数个更小、更单一、目标更明确的子指令。这些子指令可以分步在不同的交互轮次中提出,也可以在一个提示中通过编号或项目符号清晰列出,引导模型按顺序完成。
    • 明确对象与范围: 清晰界定指令所作用的具体对象(是分析附件A中的合同,还是处理下方提供的这段文字?),以及期望的处理范围(是需要对整个文档进行全面分析,还是仅关注特定的章节、条款或时间段?输出结果是需要覆盖所有细节,还是仅需聚焦核心要点?)。
  • 示例对比:
    • 模糊指令 (效果不佳): “关于这个合同怎么样?” (AI: ??? 我该从何说起?)
    • 清晰指令 (效果更佳): “请识别以下这份《商铺租赁合同》(文本如下)中,所有关于租金支付方式、支付时间、以及逾期支付违约责任的条款。请将这些条款的具体编号核心内容要点项目符号列表的形式列出。”
    • 模糊指令 (效果不佳): “分析一下这个案子。” (AI: 分析哪方面?事实?法律?风险?给谁分析?)
    • 清晰指令 (效果更佳): “请分析以下劳动争议案情摘要,识别其中可能涉及的主要法律争议焦点(例如,解除合同的合法性、经济补偿金的计算等),并列出支持原告主张和支持被告抗辩的关键事实依据(如有提及)。”

2. 提供充足且相关的上下文 (Provide Sufficient & Relevant Context):让AI“知情”

Section titled “2. 提供充足且相关的上下文 (Provide Sufficient & Relevant Context):让AI“知情””
  • 原则阐释: LLM生成回答的质量,在极大程度上取决于它在处理请求时所能获取和理解的背景信息(上下文)。如同与人类同事协作一样,提供必要的背景信息、相关知识或前提条件,能帮助模型更好地理解你的真实意图、任务的具体要求、以及做出准确判断或生成相关内容所需的特定依据。缺乏必要的上下文,AI就只能依赖其庞大但通用的预训练知识库进行“猜测”,其输出结果很可能与你的具体需求脱节。
  • 实践技巧:
    • 关键信息注入: 在你的提示中,直接包含完成当前任务所必需的相关背景信息。这可能包括:简要的案件事实摘要、合同涉及的交易背景介绍、需要遵循的特定法律框架公司内部政策的关键片段、或者在多轮对话中先前讨论的要点总结

    • 明确指定输入数据: 如果任务是处理特定的文本、数据或文件,务必清晰地将其包含在提示中(可以使用下文提到的分隔符来界定),或者明确告知其来源(例如,“请分析附件A中的判决书原文”、“请基于下方提供的客户邮件内容……”)。

    • 设定前提或约束条件: 如果你的任务是基于某些特定的前提条件、假设或约束进行的,必须在提示中明确告知模型。例如,“假设本案适用《中华人民共和国民法典》合同编的规定……”、“在分析时,请仅考虑合同文本本身,暂不考虑双方的实际履行情况……”、“请确保生成的条款符合我方作为[甲方/乙方]的利益最大化原则,同时保持基本的公平性……”。

  • 示例对比:
    • 缺乏上下文: “请起草一份软件开发合同的知识产权条款。” (AI: 为谁起草?什么软件?什么场景?费用怎么给?…… 信息太少,只能给个通用模板)
    • 提供充足上下文: “我方(甲方,一家在线教育平台)委托乙方(一家软件外包公司定制开发一套在线考试系统。请起草该软件开发合同中的知识产权(IP)归属条款。基本原则是:1. 甲方支付全部开发费用,因此最终的考试系统软件(包括源代码、目标代码、相关文档)的全部知识产权应归甲方所有;2. 乙方在开发过程中可能使用的其原有的、与本项目无关的底层技术或库(需明确列出或定义)的知识产权仍归乙方所有,但应授予甲方一项永久的、免费的、不可撤销的、全球范围内的使用许可,以确保甲方能正常使用和维护考试系统;3. 乙方不得在未经甲方书面同意的情况下,将为本项目开发的任何代码或成果用于其他项目或第三方。请确保条款措辞严谨、权利界定清晰。”

3. 明确期望的输出格式 (Specify Desired Output Format):让结果“规整”可用

Section titled “3. 明确期望的输出格式 (Specify Desired Output Format):让结果“规整”可用”
  • 原则阐释: 不要假设AI能够“读心”并自动以你最希望的方式呈现结果。清晰地告知模型你希望得到的输出结果的具体形式、结构、布局或风格,可以极大地提高结果的可用性,使其更易于你的后续处理、引用、整合或向他人展示。明确格式要求也有助于约束模型的输出,使其更聚焦于核心内容。
  • 实践技巧:
    • 直接要求特定格式: 明确要求使用项目符号列表(bullet points)(例如,“请用项目符号列出……”)、编号列表(numbered list)(例如,“请按重要性顺序列出……”)、表格(table)(可以指定表格的列名和大致内容,例如,“请用一个包含‘条款编号’、‘核心内容’、‘风险等级’三列的表格总结……”)、JSON格式(常用于需要程序化处理结果的场景)、XML格式等。
    • 限定输出长度或规模: 给出大致的字数限制(例如,“请将以下内容总结在300字以内”)、要点数量限制(例如,“请识别出不超过5个最主要的法律风险”)、段落数量整体篇幅限制(例如,“生成一份不超过两页的备忘录初稿”)。
    • 规定结构层次与标题: 要求模型在输出时使用特定的标题、子标题、章节编号等结构化元素来组织内容,使其更具条理性和可读性。
    • 指定语言风格: 明确要求输出的语言风格,例如,“请使用正式、专业的法律术语”、“请使用简洁、通俗易懂的语言,避免行话”、“请以客观中立的口吻进行陈述”。
  • 示例:
    • “请将以下这段复杂的法律判决理由(文本如下),改写成一段面向非法律专业客户的、易于理解的摘要。要求:1. 总字数不超过250字;2. 使用简单、清晰的语言,避免专业术语;3. 重点说明法院最终支持或驳回了哪些核心诉求,以及最关键的理由是什么;4. 分段清晰。”
    • “请提取这份《投资协议》(附件C)中所有与 ‘对赌条款’(Valuation Adjustment Mechanism) 相关的约定。请将结果整理成一个包含以下四列的表格‘条款编号’‘业绩承诺方’‘业绩目标描述’‘触发条件及调整/补偿方式’。”

4. 巧妙运用角色扮演提示 (Role Prompting / Persona Prompting):赋予AI“专业视角”

Section titled “4. 巧妙运用角色扮演提示 (Role Prompting / Persona Prompting):赋予AI“专业视角””
  • 原则阐释: 通过在提示中明确指示模型扮演一个特定的角色、身份、或具有某种特定专业背景、经验水平、甚至特定立场的人物,可以非常有效地引导模型调整其思考问题的视角、选用更恰当的专业术语、把握合适的论证深度、采用特定的语言风格和整体口吻。这就像给演员设定角色一样,能让模型的“表演”更加入戏,输出结果更贴合你的特定需求和目标受众
  • 实践技巧:
    • 使用诸如“假设你是一位……”、“请以……的身份回答”、“作为一个……,请你……”、“你的角色是……,请完成以下任务”、“You are a [Role], please…”等明确的句式来设定角色。
    • 角色设定应尽可能具体化:不仅是“律师”,最好是“在中国执业超过20年、专注于跨境并购领域的资深律师”;不仅是“法官”,可以是“一位审理知识产权案件经验丰富的基层法院法官”;不仅是“顾问”,可以是“一位专门为初创科技公司提供融资法律服务的顾问,特别擅长用简洁明了的方式解释复杂问题”。
    • 可以将角色设定任务指令、格式要求、风格要求结合起来,形成更强大的组合提示。
  • 示例:
    • 假设你是一位非常严谨、注重细节的证券法律师,正在为一家计划在科创板IPO的公司准备招股说明书的风险因素章节。请审阅以下由业务部门提供的关于‘技术依赖风险’的初步描述文字(文字附后),识别其中可能存在的表述不准确、风险揭示不充分、或者可能引起监管机构质疑的问题,并提出具体的修改建议(请说明修改理由)。” (角色设定+任务+上下文+要求具体输出)
    • 请以一位耐心的法律援助志愿者的身份,向一位首次卷入民事诉讼、对法律程序完全不了解的当事人(假设文化程度不高),解释收到法院传票后,他需要做哪些准备?开庭时大致流程是怎样的?他有哪些基本的诉讼权利?请务必使用最简单、最口语化、最容易理解的语言,并避免任何可能让他感到恐慌或压力的措辞。” (角色设定+任务+目标受众特征+语言风格要求)
    • 作为一个代表大型跨国公司(被告方)处理产品责任诉讼的经验丰富的外部律师,请分析原告提交的这份专家报告(报告摘要附后),找出其中可能存在的逻辑漏洞、方法论缺陷、数据疑点、或者与行业惯例或科学常识相悖之处,并列出可以在庭审中对该专家进行交叉询问的关键问题线索(请列出至少5条)。” (角色设定+任务+上下文+要求具体输出格式)

5. 使用分隔符清晰界定输入的不同部分 (Use Delimiters):避免信息“混淆”

Section titled “5. 使用分隔符清晰界定输入的不同部分 (Use Delimiters):避免信息“混淆””
  • 原则阐释: 当你的提示(Prompt)中包含了多个不同的组成部分时——例如,既有明确的指令性文字,又有需要模型重点处理的大段上下文文本(如合同条款、判决书片段),可能还有具体的提问,甚至可能包含了用于示范的示例(Few-shot examples)——如果这些不同部分混杂在一起,模型可能会难以准确区分哪些是指令、哪些是待处理的数据、哪些是问题本身。使用清晰、一致的分隔符明确地划分和界定这些不同的输入部分,就像在文档中使用章节标题或段落分隔一样,可以帮助模型更准确地解析你的提示结构,理解每个部分的意图,从而避免信息混淆和指令误解

  • 实践技巧:

    • 选择一种你认为清晰且模型易于识别的分隔符,并在整个提示中保持一致性。常用的分隔符包括:
      • 三重引号: """ [内容] """
      • 三重反引号: [内容] (常用于代码块,也可用于文本)
      • XML标签: <tag_name> [内容] </tag_name> (例如, <指令></指令>, <上下文></上下文>, <问题></问题>)
      • 简单的分隔线: ---***
      • 明确的标题或标签: 例如,直接使用“【指令】”、“【待处理文本】”、“【我的问题是】”等。
    • 将指令、需要处理的核心文本、示例、具体问题等用选定的分隔符清晰地包裹或分隔开来。
  • 示例:

    【角色设定】
    假设你是一位专注于公司治理领域的律师。
    【任务指令】
    请仔细阅读并分析下方提供的《公司章程》相关条款原文,识别其中与“董事的忠实义务与勤勉义务”直接相关的具体规定,并评估这些规定是否符合《中华人民共和国公司法》的基本要求。
    【待处理文本:《公司章程》节选】
    """
    第五章 董事会
    第一百二十条 董事应当遵守法律、行政法规和本章程,对公司负有忠实义务和勤勉义务。
    第一百二十一条 董事不得利用职权收受贿赂或者其他非法收入,不得侵占公司的财产。
    ... (此处省略其他条款) ...
    第一百三十五条 董事执行公司职务时违反法律、行政法规或者本章程的规定,给公司造成损失的,应当承担赔偿责任。
    """
    【具体要求】
    请按照以下格式输出你的分析结果:
    1. **相关条款识别**: 列出章程中直接涉及董事忠实与勤勉义务的条款编号。
    2. **核心内容概述**: 简要概括这些条款规定的主要内容。
    3. **合规性评估**: 简要评价这些条款是否基本符合《公司法》关于董事义务与责任的原则性规定,并指出是否存在明显不足或需要关注之处。
    【请开始分析】

6. 恰当提供示例(少样本提示 Few-shot Prompting):用“样板”说话

Section titled “6. 恰当提供示例(少样本提示 Few-shot Prompting):用“样板”说话”
  • 原则阐释: 有时,仅仅依靠抽象的文字指令来描述一个复杂的任务或期望的输出格式,可能不够直观,或者容易让模型产生歧义。尤其对于那些需要模型遵循特定、不常见的格式进行输出、或者进行某种复杂的文本转换(如风格迁移、特定信息提取模式)、或者模仿某种独特写作风格的任务,“身教重于言教”往往更有效。在提示中提供一个或多个完整的“输入-期望输出”的示例对,就像给模型展示“样板”或“范例”一样,能够非常有效地、具体地向模型演示你到底想要它做什么以及做到什么程度。

  • 技术背景: LLM具备强大的情境学习(In-context Learning)能力。当它在提示中看到示例时,它会尝试从中归纳出模式和规则,并将这些学到的模式应用于处理你紧随其后提出的新任务。

  • 实践技巧:

    • 示例格式: 通常采用 输入: [示例输入文本] 紧跟着 输出: [对应的、你期望得到的输出文本] 的成对格式。
    • 示例数量 (Few-shot): 通常,提供1到3个高质量、具有代表性的示例就足够引导模型理解任务要求了(这被称为少样本提示 Few-shot Prompting)。提供0个示例(即完全依赖指令)被称为零样本提示(Zero-shot Prompting)。提供大量示例(例如,几十、上百甚至更多)则更接近于**模型微调(Fine-tuning)**的概念,那需要不同的技术流程。
    • 示例质量至上: 提供的示例必须是准确无误、格式规范、且与你的目标任务高度相关的。错误的、低质量的或不相关的示例可能会严重误导模型,导致其输出更差的结果。选择或构建好的示例本身就需要投入思考。
    • 示例与新任务的衔接: 在提供了示例之后,紧接着给出你真正需要模型处理的新输入,并通常需要有一个清晰的提示(例如,“现在,请根据以上示例的模式,处理以下新输入:”)来引导模型开始工作。
  • 示例 (将复杂的法律风险描述简化为固定格式的摘要):

    【任务】: 将以下法律风险描述,简化为包含“风险领域”、“风险摘要”、“初步等级”的结构化输出。
    【示例 1】
    输入: "经过审阅,我们发现在目标公司签订的多份关键供应商合同中,关于知识产权归属的约定存在模糊不清之处,特别是在合作开发成果的权利分配上未做明确界定,这可能在未来引发潜在的权属纠纷,尤其当合作关系终止或涉及技术剥离时,风险较高。"
    输出:
    {
    "风险领域": "知识产权/合同",
    "风险摘要": "关键供应商合同中知识产权归属(特别是合作开发成果)约定模糊,可能引发未来权属纠纷。",
    "初步等级": "高"
    }
    【示例 2】
    输入: "对公司网站的隐私政策文本进行了初步核查,发现其关于个人信息处理目的、方式、范围的告知内容不够具体全面,且未提供清晰的用户撤回同意途径,可能不完全符合《个人信息保护法》的最新要求,存在一定的合规风险,建议尽快修订。"
    输出:
    {
    "风险领域": "数据合规/隐私保护",
    "风险摘要": "网站隐私政策在信息告知具体性、全面性及用户撤权途径方面存在不足,可能不符合《个保法》要求。",
    "初步等级": "中"
    }
    【新任务】
    现在,请根据以上示例的格式和风格,处理以下新的风险描述:
    输入: "分析了公司的劳动合同模板,注意到其中关于加班费计算标准的表述与地方最新出台的司法解释存在不一致,如果严格按模板执行,可能面临员工提起劳动仲裁并被判补发加班费及经济补偿金的风险。"
    输出: [此处让模型根据示例模式生成JSON格式的结构化输出]

二、 高级提示技巧:挖掘LLM更深层次的潜力

Section titled “二、 高级提示技巧:挖掘LLM更深层次的潜力”

当基础技巧不足以应对更复杂的任务、或者您希望进一步提升输出结果的质量、可靠性、逻辑性和可控性时,可以尝试运用以下一些更高级的提示策略。这些策略通常需要对LLM的工作原理有更深入的理解,并可能需要进行更多的实验和迭代。

7. 思维链提示 (Chain-of-Thought, CoT Prompting):引导AI“三思而后行”

Section titled “7. 思维链提示 (Chain-of-Thought, CoT Prompting):引导AI“三思而后行””
  • 原则阐释: 许多复杂的法律问题或任务(例如,需要进行多步骤逻辑推演的法律关系分析、涉及多个变量和规则的损害赔偿估算、需要综合多个证据来源进行事实认定的判断)如果直接要求LLM给出最终的“答案”或“结论”,它很容易出错。因为它可能倾向于“一步到位”地给出一个基于其训练数据中常见模式的、表面看似合理但内部逻辑链条并不完整或严谨的答案。思维链(Chain-of-Thought, CoT)提示的核心思想,就是不直接索要最终答案,而是通过在提示中明确地要求或通过示例示范,引导模型在给出最终结论之前,先“显式地”输出其解决问题的中间步骤、推理过程、分析逻辑或思考脉络。这就像要求学生在做复杂的数学题时“写下详细的解题步骤”一样。
  • 核心效果: 大量的研究和实践已经证明,这种 “让模型大声思考”(Think Aloud)或者说“展示其工作过程”的方式,能够显著提高LLM在需要复杂推理、数学计算、常识判断、多步规划和逻辑分析的任务上的准确性和可靠性。因为它迫使模型放慢“思考”速度,更结构化、更有条理地处理问题,也让用户能够检查其推理过程是否合理、是否存在逻辑跳跃或事实错误。
  • 实践技巧:
    • 指令式CoT (Zero-shot CoT): 在提示的末尾直接加入类似“请逐步思考并解释你的推理过程。”、“让我们一步一步地分析这个问题。”、“在给出最终答案之前,请先列出你的分析步骤和每一步的理由。”、“Let’s think step by step.”这样的指令性语句。
    • 示例式CoT (Few-shot CoT): 在提供少样本示例时,不仅给出最终的“输出”,更重要的是在示例的“输出”部分包含详细的、分步骤的思考过程或推理链条。模型在看到这些示例后,会学习模仿这种“先思考再作答”的模式来处理你的新问题。这种方式通常比指令式CoT效果更好,尤其对于非常复杂的任务。
  • 示例 (复杂的法律适用分析):
    • 基础提示 (可能直接给出结论,易出错): “案件事实:[此处描述一个涉及产品责任、消费者权益、可能还涉及格式条款效力的复杂案例事实摘要]。请问,销售商是否应当对消费者承担赔偿责任?”
    • 示例式CoT提示 (引导详细分析,提升准确性):
      【任务】: 分析以下案件事实,判断销售商是否应承担赔偿责任,并说明详细理由。
      【示例】
      输入: [此处描述一个简单的违约案例事实]
      输出:
      思考过程:
      1. 分析合同是否有效成立?[是/否,理由...]
      2. 销售商是否存在违约行为?[是/否,具体行为是...,违反了合同哪条或法定义务...]
      3. 是否存在免责事由?[是/否,理由...]
      4. 消费者是否存在损失?损失与违约行为间是否有因果关系?[是/否,理由...]
      5. 根据以上分析,销售商应否承担责任?
      结论:销售商应当/不应当承担赔偿责任,主要理由是...
      【新任务】
      现在,请按照以上示例中的**思考过程模式**,分析以下新的案件事实,并给出你的结论和详细理由:
      输入: [此处描述前面提到的那个涉及产品责任、消费者权益、格式条款效力的复杂案例事实摘要]
      输出: [此处让模型生成包含详细思考步骤和最终结论的回答]
      (通过强制模型在输出中显式地展现其分步的分析逻辑,可以大大提高其处理复杂法律问题的逻辑性和可靠性,也便于人工审核其推理过程。)

8. 自我批判与迭代改进 (Self-Critique / Self-Correction / Self-Refinement):让AI“自省”

Section titled “8. 自我批判与迭代改进 (Self-Critique / Self-Correction / Self-Refinement):让AI“自省””
  • 原则阐释: LLM虽然不能像人类一样真正地“反思”,但它们在其训练数据中学习了大量关于评估、批评、修改文本的模式,因此具备一定的评估和改进自身或他人输出的能力(尽管这种能力也是有限的、基于模式的)。我们可以利用这一点,设计一种多轮交互的策略:首先让模型针对某个任务生成一个初步的、可能不完美的回答或草稿;然后在下一轮交互中,明确要求它扮演一个“批判者”或“编辑”的角色,对其自己刚刚生成的草稿进行审视、评估,主动发现其中可能存在的缺陷(例如,事实性错误、逻辑矛盾、论证不充分、表述不清、遗漏关键要点、格式不规范等),并在此基础上进行自我修正和迭代改进。这种“让AI自己检查一遍作业”或者“自己跟自己辩论”的方式,有时能够有效地提升最终输出结果的质量、准确性、严谨性和可靠性。
  • 实践技巧: 在模型给出初步回答后,可以在下一轮提示中追加类似以下的指令:
    • “请仔细检查并评估你刚才提供的回答。其中是否存在任何事实性错误、信息遗漏或者逻辑上的不一致之处?请明确指出这些问题,并提供一个修正后的版本。”
    • “你认为刚才的分析在哪些方面可以进一步加强或改进?例如,论证是否足够充分?是否考虑了所有相关的法律风险因素?语言表达是否足够专业和精确?请基于这些反思,生成一个优化后的、更高质量的版本。”
    • 假设你是一位经验极其丰富、对细节要求极高的资深合伙人律师,正在审阅一位初级律师(也就是你刚才扮演的角色)提交的这份备忘录草稿。请用批判性的眼光找出其中所有不够严谨、可能被对方抓住漏洞、或者未能充分保护客户利益的地方,并直接给出修改后的、更佳的表述。”
    • 结合CoT: 可以先让模型生成草稿及其详细的思考过程(CoT),然后要求它基于自己写下的思考过程,来审视最终的草稿,检查结论是否与过程一致、是否存在逻辑跳跃或论证不足,并进行修正。
  • 示例 (合同条款起草与迭代改进):
    • 第一轮提示 (要求起草): “请为一份技术服务合同,起草一个关于‘服务水平协议(SLA)’的核心条款,需要包括服务可用性承诺(目标99.9%)、故障响应时间(4小时内响应)、问题解决时间(根据优先级区分,例如高优先级8小时内解决)以及未达标的补偿措施(例如,按比例减免当月服务费)。”
    • 模型生成初步SLA条款草稿…
    • 第二轮提示 (要求自我批判与改进): “请扮演一位代表客户方(服务接受方)的、极其注重风险控制的律师,来审阅你刚才起草的SLA条款。请找出其中所有对客户可能不利、定义不够清晰、或者容易引发争议的表述。例如:‘服务可用性’的计算方法是否明确?‘故障’和‘问题优先级’的定义是否清晰且对客户公平?补偿措施是否足够有力且易于执行?请指出这些潜在问题,并提供一个经过修改的、更能保护客户利益的版本。”

9. 长文本处理策略:分块、滑动与整合 (Chunking, Sliding Window, Summarization & Synthesis):化整为零,聚沙成塔

Section titled “9. 长文本处理策略:分块、滑动与整合 (Chunking, Sliding Window, Summarization & Synthesis):化整为零,聚沙成塔”
  • 原则阐释: 当前绝大多数LLM都存在上下文窗口长度的限制(Context Window Limit),即它们一次能够有效处理的文本(包括用户输入的所有提示信息和模型自身的输出,以及多轮对话的历史记录)的总长度是有限的。尽管这个限制随着技术发展在不断放宽(例如,像Claude 3.7 Sonnet, GPT-4o, Gemini 2.5 Pro, Kimi Chat等模型已经支持数十万甚至上百万Token的超长上下文窗口),但对于需要处理的法律文件篇幅极其巨大的情况(例如,分析一份包含数百个附件、总页数过万的并购交易尽职调查报告;审阅一个包含数百万份邮件和文档的电子证据开示数据集;或者对一部包含上千条款的复杂法律及其所有配套法规、司法解释进行综合梳理),即使是最先进的模型也可能面临性能下降(如“大海捞针”问题)、成本过高或超出极限的问题。因此,掌握将长文本“化整为零”进行分块处理,然后再将处理结果“聚沙成塔”进行整合的策略仍然非常重要。

  • 实践技巧:

    • 智能分块 (Meaningful Chunking): 核心是将原始的长文本分割成若干个有意义的、长度可控(通常要显著小于模型上下文窗口的极限,以留足处理空间)的文本块(Chunks)。分割点应尽可能选择在自然的语义或结构边界上,例如:
      • 段落分割。
      • 文档的章节、条款编号分割。
      • 特定的主题句或关键词分割。
      • 目标是尽量保持每个块内部的语义连贯性和完整性。可以使用一些智能分块的算法库(如LangChain, LlamaIndex中提供的)。
    • 重叠块 (Overlapping Chunks): 为了确保相邻块之间的上下文信息能够平滑过渡,避免关键信息在分割点被切断,可以在分割时让相邻的块之间保留一部分重叠的内容(例如,后一个块的开头包含前一个块结尾的几十或几百个词)。
    • 滑动窗口 (Sliding Window): 也是一种处理长序列的常用方法,模型像一个移动的窗口在文本上滑动,每次处理窗口内的内容。
    • 分步处理与结果整合策略:
      1. 设计针对单个块的任务提示: 首先需要设计一个能够应用于每一个文本块的、目标明确的提示。例如,“请总结本块的核心内容”、“请识别本块中所有提及‘违约责任’的句子,并列出”、“请判断本块内容是否与‘知识产权许可’相关,如果是,请提取关键许可条款”。
      2. 迭代处理所有块: 自动化地(通常需要编写简单的脚本或使用框架)将这个“单块提示”应用于原始长文本分割出的每一个块,并收集和存储模型对每个块的处理结果(例如,存储每个块的摘要、提取出的条款列表或相关性判断结果)。
      3. 最终汇总与整合: 在处理完所有块之后,设计另一个(或多个)单独的提示,让模型基于从所有块中收集到的中间处理结果进行最终的汇总、提炼、分析、比较或整合。例如,“我将提供从一份长篇判决书各部分提取出的要点摘要列表。请你根据这些要点,撰写一份完整的、连贯的判决书摘要报告,全面反映案件争议焦点、法院认定的事实、核心判决理由和最终结果,总字数控制在1000字以内。要点列表如下:[粘贴所有块的摘要]”。
    • 利用长上下文模型的优势与注意事项: 如果条件允许且成本可控,优先选择那些原生支持超长上下文窗口的模型。它们可以直接处理非常长的文档(或至少是其核心部分),极大地简化甚至避免了复杂的分块处理流程。但是,即使是长上下文模型,也需要警惕其在处理极长文本时可能出现的 “迷失在中间”(Lost in the Middle) 问题,即模型可能对输入文本开头和结尾部分的信息给予更多关注,而对处于中间位置的信息有所忽略或记忆不清。因此,即使使用长上下文模型,对于分布在文档中间部分的极其关键的信息,也可能需要通过在提示中特别强调、或者将其复制到提示的开头或结尾附近等方式来引导模型给予足够关注。
  • 示例 (处理一份包含多个证人证言笔录的案卷,找出关于某个关键事件的所有相关描述并进行比对):

    1. 分块: 将每一份独立的证人证言笔录视为一个“块”(假设单份笔录长度在模型窗口内)。
    2. 单块处理提示: 设计提示:“请仔细阅读以下这份[证人姓名]的证言笔录。找出其中所有关于[某个关键事件,例如‘2024年3月15日下午在XX会议室发生的讨论’]的描述。如果找到了,请将相关的完整句子或段落提取出来,并注明其在笔录中的页码或大致位置。如果没有找到相关描述,请回答‘未提及’。”
    3. 迭代处理: 将此提示应用于每一份证人笔录,收集所有提取出的关于该事件的描述片段及来源。
    4. 最终整合与比对提示: “我将提供从多份证人证言中提取出的关于[关键事件]的所有描述片段。请你扮演一位细致的刑事侦查员或诉讼律师,完成以下任务: a. 汇总列表: 将所有描述片段按照证人姓名和来源清晰地列出。 b. 识别一致性: 找出不同证人描述中相互印证或基本一致的内容要点。 c. 识别矛盾点: 找出不同证人描述之间存在的明显矛盾或不一致之处。 d. 提出疑点: 基于比对结果,提出可能需要进一步核实或在庭审中重点关注的疑点或问题。 描述片段列表如下:[粘贴所有收集到的描述片段]”

10. 反向提示法 / 负面提示 (Negative Prompting):明确“不做什么”,划定边界

Section titled “10. 反向提示法 / 负面提示 (Negative Prompting):明确“不做什么”,划定边界”
  • 原则阐释: 在很多情况下,仅仅通过正面指令告诉模型要做什么可能还不够精确,或者模型在完成任务的同时容易产生一些我们不希望看到的副作用(例如,生成了我们不需要的信息类型、使用了我们想避免的某种风格、或者触及了某些敏感话题)。此时,在提示中明确地告诉模型“不要做什么”、“要避免哪些内容”、“需要排除哪些可能性”、或者“确保输出结果不是某种特定类型”,即使用负面指令(Negative Prompting),可以作为对正面指令的一种有益补充,帮助进一步约束模型的行为边界,使其输出更符合我们的精细化要求。

  • 实践技巧:

    • 在提示中使用明确的否定性或排除性的词语和句式。例如:“不要包含任何关于价格的讨论”、“避免使用过于口语化或非正式的词汇”、“在分析风险时,请排除那些仅为理论可能但无实际证据支持的风险”、“请确保生成的摘要不是对原文的简单复制粘贴,而是用你自己的话进行概括”、“禁止在回答中提供任何具体的投资建议”。
    • 在一些专门的图像生成AI工具(如Stable Diffusion的Web UI界面)中,通常会提供一个独立的“负面提示(Negative Prompt)”输入框。用户可以在这里专门列出所有不希望在最终生成的图像中出现的元素、属性、风格或质量问题(例如,可以输入“低质量, 模糊, 多余的手指, 扭曲的脸, 文字, 签名, 水印, 卡通风格, 恐怖”等),以引导模型生成更符合期望的、更高质量的图像。
  • 示例:

    • “请根据以下提供的双方邮件往来记录(邮件内容附后),客观地总结双方就合同履行争议的主要沟通焦点和各自立场。在总结时,请严格遵守以下要求:1. 不要对任何一方的对错做出任何主观性评价或暗示;2. 不要包含任何超出邮件内容本身的推测或假设;3. 避免使用任何带有强烈感情色彩或煽动性的词语;4. 仅呈现双方明确表达的观点和诉求。”
    • “请为初创公司起草一份员工保密协议的核心条款。在定义‘保密信息’时,请确保其范围既要足够广泛以保护公司的核心利益,但又要避免将其定义得过于宽泛以至于可能因显失公平而被认定无效。特别注意,不要将员工在加入公司前已掌握的通用知识和技能、以及行业内已公开的信息包含在保密信息的定义内。”
    • (假设用AI分析合同风险)“请识别这份租赁合同中所有可能对‘承租人’不利的条款。在列出风险时,请排除那些仅仅是法律强制性规定(如必须按时交租)或者属于行业标准、公平合理的条款,只关注那些明显加重承租人责任、限制承租人权利、或者存在重大不确定性的特殊或不寻常约定。”

11. 调整解码参数:温度与Top-p/Top-k的妙用 (Temperature & Sampling Parameters):控制“创意”与“严谨”的平衡

Section titled “11. 调整解码参数:温度与Top-p/Top-k的妙用 (Temperature & Sampling Parameters):控制“创意”与“严谨”的平衡”

(注意:此项技巧通常只适用于通过API调用模型,或者在一些允许高级设置的本地部署界面或特定应用中,大多数公开的网页聊天界面不提供这些参数的直接调整)

  • 原则阐释: 大型语言模型在生成文本时,并不是像查字典一样找到唯一正确的下一个词。而是在每一步,它都会根据前面的文本(上下文)计算出词汇表中所有可能词语出现的概率分布。然后,它并不是总是选择概率最高的那个词(这被称为“贪心采样” Greedy Sampling,会导致输出非常单调重复),而是根据这个概率分布进行随机采样(Sampling)来选择下一个词。温度(Temperature)Top-p(Nucleus Sampling)/ Top-k Sampling这些就是用来控制这个采样过程的随机性程度,或者说“创造性”与“确定性”之间平衡的关键“解码参数”(Decoding Parameters)。理解并恰当调整这些参数,可以让你在不同任务中对模型的输出风格和内容进行更精细的控制。

    • 温度 (Temperature):
      • 作用: 它像一个调节器,用来调整原始概率分布的“形状”。
      • 低温度值(例如,设置在0.1到0.5之间,接近0):会“锐化”概率分布,使得那些原本概率就比较高的词语的概率变得更高,而低概率词语的概率被进一步压低。结果是,模型在采样时更倾向于选择那些最常见、最符合模式、最“安全”的词语。输出会显得更确定性强、一致性高、更保守、更聚焦于核心主题,但也可能更平淡、缺乏变化、甚至显得有些重复和死板
      • 高温度值(例如,设置在0.8到1.5甚至更高,大于1时概率分布会变得更平缓):会“平滑”概率分布,减小不同词语之间的概率差异,使得即使是那些原本概率较低的词语也有更大的机会被选中。结果是,模型在采样时更可能跳出常规模式,选择一些不那么常见、甚至有些意外的词语。输出会显得更随机、更多样化、更具“创造性”、更“有趣”或“出人意料”,但也可能更难以预测、更容易偏离主题、逻辑性减弱、甚至开始“胡言乱语”
      • 温度为0: 理论上对应于贪心采样,总是选择概率最高的词。
    • Top-p (Nucleus Sampling):
      • 作用: 它设定一个累积概率阈值p(例如,p=0.9)。模型在采样前,先将所有可能的下一个词按概率从高到低排序,然后选择概率最高的若干个词,直到这些词的累积概率刚好大于或等于p。这个被选中的最小词语集合被称为“核(Nucleus)”。模型只在这个“核”内部按照它们的相对概率进行采样,所有“核”之外的词语(即使概率不是最低)都被完全排除。
      • 效果: p值越小(例如0.5),“核”就越小,候选词非常有限,输出就越保守、越聚焦;p值越大(例如0.95),“核”就越大,候选词越多,输出就越多樣化。Top-p被认为是一种比较好的平衡策略,它能在允许一定随机性的同时,通过排除掉大量低概率的“长尾”词语,比单纯调高温度更能有效地避免生成完全不相关或荒谬的内容
    • Top-k Sampling:
      • 作用: 思路更简单,直接设定一个整数k(例如,k=50)。模型在采样下一个词时,只考虑当前概率最高的k个词语,然后在这k个词中按它们的相对概率进行采样,所有排名在k之外的词语都被忽略。
      • 效果: k值越小,候选词越少,输出越保守、确定性越高;k值越大,候选词越多,输出就越多樣化
  • 在法律场景中的应用策略:

    • 追求严谨与准确性: 当任务需要高度的事实准确性、逻辑严谨性、严格遵循特定格式、或者精确使用法律术语时,例如进行法律条款的解释、案例事实的摘要、生成需要提交给法院的文书片段(在严格审核前提下)、或者进行基于规则的合规性检查,建议使用较低的温度值(例如,尝试 0.2 - 0.5 范围)并可能结合较小的Top-p值(例如 0.7 - 0.9)或适中的Top-k值(例如 40-60),以获得更稳定、更可靠、更贴近事实和规则的输出,减少“创意性”带来的风险。
    • 需要创意与多样性: 当任务目的是激发思考、进行头脑风暴、探索不同可能性、或者生成需要一定变化和吸引力的内容时,例如为某个辩论点构思多种不同的论证角度、起草几种不同风格的客户沟通邮件草稿、生成用于内部培训或普法的虚构案例场景、或者进行初步的法律研究方向探索,可以适当提高温度值(例如,尝试 0.7 - 1.0 范围),并可能结合较大的Top-p值(例如 0.92 - 0.98)或较大的Top-k值,以鼓励模型产生更多样化、更具启发性的想法或文本。但同时要更加警惕输出结果可能偏离主题或出现逻辑问题。
  • 实践建议:

    • 理解默认值: 了解你所使用的平台或API对于这些参数的默认设置是什么,这通常是厂商认为在通用场景下比较平衡的取值。
    • 小幅调整与实验: 在调整这些参数时,建议从默认值开始,进行小幅度的调整(例如,温度每次增减0.1或0.2),并观察输出结果的变化。没有绝对的“最佳”参数组合,需要通过针对具体任务和模型的反复实验来找到最适合你需求的设置。
    • 记录有效组合: 对于某些特定任务,一旦通过实验找到了效果很好的参数组合,记得将其与对应的提示一起记录下来,方便日后复用。

结论:实践出真知,迭代是关键,经验需积累

Section titled “结论:实践出真知,迭代是关键,经验需积累”

掌握提示工程的各种技巧,绝非一蹴而就的理论学习,更像是在学习一门需要在实践中不断摸索、领悟和精进的“手艺”。没有绝对“正确”或“万能”的提示模板,只有在特定的应用场景下、针对特定的AI模型、为了达成特定的目标而相对更有效、更精准、更可靠的提示策略。要真正提升你的提示工程能力,成为一名能够高效驾驭LLM的“AI指挥家”,以下几点至关重要:

  • 从模仿优秀范例开始: 对于初学者而言,最有效的起点是学习和模仿那些由经验丰富的用户或在可靠来源(如本百科后续章节、官方文档、高质量社区分享)中提供的优秀提示模板。仔细分析这些模板的设计思路:它们是如何运用基础技巧(清晰指令、充足上下文、明确格式)的?在什么情况下会引入高级技巧(如角色扮演、少样本、思维链)?通过模仿和理解,可以快速建立起对有效提示结构的感觉。
  • 在实践中反复试错与迭代: 理论学习是基础,但真正的掌握来自于大量的实践。在你的日常工作中,有意识地将学到的提示技巧应用到与AI的交互中去。更重要的是,要养成评估和反思的习惯:对于同一个任务,尝试用不同的提示方式(例如,改变指令的措辞、增加或减少上下文、使用不同的格式要求、加入示例或思维链引导),然后仔细观察、比较不同提示所产生的输出结果在质量、相关性、准确性、逻辑性、完整性等方面的差异。主动思考为什么某个提示会比另一个效果更好或更差?是指令不够精确?上下文提供了干扰信息?还是模型对某种表达方式更“敏感”?从错误和不理想的结果中学习,并不断调整优化你的提示,是提升技能的核心途径。
  • 系统整理与共享你的“提示资产”: 对于那些在你的实践中被反复验证是行之有效、能够稳定产生高质量结果的提示——特别是那些针对你经常需要处理的、具有特定模式的法律任务(例如,特定类型合同的风险审查提示模板、生成某种格式的法律备忘录摘要的提示模板、进行特定法律问题研究的CoT提示框架等)——务必将其系统地整理、标注(说明其适用场景、关键变量、注意事项)并保存下来。建立起你个人或者团队的**“提示资产库”(Prompt Library)或“最佳实践案例集”。这不仅能够极大地提高你未来处理类似任务的效率**(可以直接调用或稍作修改),也是进行团队内部知识共享、经验传承和能力建设的宝贵资源。
  • 深入理解你所使用的模型特性: 不同的LLM(无论是来自OpenAI, Anthropic, Google, Meta,还是国内的百度、阿里、智谱、月之暗面等)其底层的训练数据构成、模型架构细节、经过的对齐(Alignment)训练方式都可能存在显著差异。这导致它们在能力侧重(例如,有些模型可能更擅长创意写作,有些更擅长逻辑推理,有些对中文的理解更深入)、对同一种提示语气的“敏感度”、遵循复杂指令的能力、产生“幻觉”的倾向性、以及对特定领域知识的掌握程度等方面,都可能表现出不同的“性格”和“偏好”。因此,除了掌握通用的提示技巧外,还需要在使用中逐渐摸索和适应你所主要使用的那个(或那几个)模型的具体特性,了解它的“长处”和“短板”,才能更有效地“扬长避短”。
  • 保持耐心,拥抱迭代过程: 几乎没有人能够一次就写出完美的提示,尤其对于复杂的任务。提示工程本质上就是一个**“设计-测试-评估-优化”的循环迭代(Iterative)过程。当你第一次尝试的提示没有得到满意的结果时,不要气馁。仔细分析问题所在,然后尝试调整提示的某个方面(指令更明确?上下文更相关?格式更具体?加个例子?引导思考步骤?),再次运行,观察改进效果。有时可能需要经过多轮甚至十几轮的修改和实验**,才能逐步逼近你真正想要的目标输出。保持耐心,将每一次不完美的输出都视为一次学习和改进的机会,享受这个不断优化、逐渐精通的过程。

通过系统学习理论、积极投入实践、持续反思总结、并结合对所用模型特性的深入了解,你将能够逐步掌握提示工程这门“与AI共舞”的艺术与科学。熟练运用这些基础和高级的提示技巧,将使您这位“AI指挥家”能够更精准、更高效、更安全地挥动“指挥棒”,引导大型语言模型这个强大的“智能乐团”,为您在复杂的法律工作中奏响提升质量、效率与创造力的华美乐章。下一章节,我们将聚焦于如何为一些常见的、具体的法律任务量身定制实用、高效的提示模板,将这些技巧真正落地到您的日常实践中去。