Skip to content
←返回博客
Uber 法律修订代理诞生记:四轮迭代磨出律师信任的 AI
LLM智能体Legal AIRAG

Uber 法律修订代理诞生记:四轮迭代磨出律师信任的 AI

Uber 把合同修订代理做进 Word:四轮迭代(RAG→反馈→语气→代理式修改)后审阅时间降 20%+、AI 决策准确率 91%,提示词归律师所有。

Austin Greco, Meghana Somasundara, Frank Tenente2026年10月8日3 分钟阅读226次阅读
EN

很少有领域像法律工作这样要求精确与审慎,这也让它成为检验 AI agent 能否进入日常专业工作的最硬考场之一。从 2024 年初到 2025 年,在今天这些 agent harness 尚未普及之前,Uber 构建了第一代法律修订代理(Legal Redlining Agent,LRA)。它帮助 Uber 法务团队处理大批量的合同谈判,既不牺牲信任与合规,也不取代律师的判断。

这段经历里最持久的教训,与模型或架构无关,而是如何把一个 agent 真正带进律师的日常工作。Uber 从业务问题出发:源源不断的合同谈判中存在大量可重复的修订(redline)工作。他们把工具做到律师原本就在工作的地方——Microsoft Word 里,让 LRA 在既有工作流中标记有风险的修订并给出修改建议;再与律师紧密迭代 agent 该做什么,2025 年在法务团队试点,把反馈持续折回产品。

本文记录 Uber 把第一代系统带进实践所学到的东西:如何界定问题、如何赢得律师的信任、如何借助他们的反馈改进 agent;最后交代第一代系统的实际工作方式,以及在 agent 技术已经演进的今天,团队会如何重新解决这个问题。

2026 年 3 月 9 日,LRA 作为 Uber 法务部门申报材料的一部分,获得 ALM Legalweek Leaders in Tech Law Awards 的「年度最具创新力法务部门」奖。

Microsoft Word 任务窗格中的法律修订代理实况:识别客户修订、对照政策评估、生成建议批注(图:Uber Engineering Blog)。

问题:高风险、高摩擦

Uber 每年要谈判数千份合同,每一份背后都有法务团队在审阅与磋商。这个过程耗时、重复,常常成为交易、入驻与发布的瓶颈。它是高风险、重细节的工作,精确性至关重要,而延误会向销售、入驻和发布各个环节扩散。

但在这个高风险流程内部,埋着一种出人意料的结构性:相似的条款、跨客户可重复的修订、稳定的法律推理模式。换句话说,那里存在一个清晰的系统。

由于法务工作对 Uber 属于任务关键型,团队看到了机会:把可重复的部分自动化,把律师的时间留给复杂的判断,同时不牺牲质量与一致性。

合同审阅生命周期:Uber 发出模板、客户审阅并修订、Uber 审阅并修订、最终定稿;企业级交易平均约五个回合
合同审阅生命周期。一个回合即交换一次修订,耗时 2–10 小时;企业级交易平均需要五个回合才能成交(图:Uber Engineering Blog)。

解法:AI 驱动的修订代理

法律修订代理是一个直接集成进 Microsoft Word 的 AI 助手插件,落在律师原本的工作位置上。它审阅客户编辑、理解意图、给出符合政策的响应建议、生成结构化批注、标记风险,并从反馈中持续学习。它组合了六项能力:

  • 文档审阅:识别修订,区分客户做的编辑与 Uber 律师做的编辑。
  • 意图检测:解释一处修改究竟想达到什么目的。
  • 符合政策的建议:接受、拒绝或修改条款。
  • 批注生成:向对方解释 Uber 的法律立场。
  • 风险标记:标出需要律师深入审阅的条款。
  • 自学习反馈闭环:持续改进后续建议。

在法务团队上线以来,Uber 观察到平均合同审阅时间下降超过 20%,AI 生成决策的准确率达到 91%。律师的反馈包括:「它真的为我省了时间,尤其是批注建议。」

法律修订代理是什么?

插件分析 Microsoft Word 文档,识别来自外部方的所有修订;再用 AI 处理这些变更,试图理解客户的意图与法律含义,并把拟议变更与团队的法律政策及指引做比对。

基于这一分析,插件生成一系列建议:推荐动作、给客户的拟议批注(用法律推理为建议辩护)、以及每处变更的风险等级评估。Uber 律师随后逐条审阅建议,决定接受、拒绝或修改,再最终并入给客户的回复。

高层工作流:带修订标记的 Word 文档进入 Word 插件,经过 AI、规则与反馈,产出建议、批注与风险评估
法律修订插件的高层工作流:修订标记流经 AI、规则与反馈,输出建议(接受/修改/拒绝)、起草的批注与风险等级(图:Uber Engineering Blog)。

四轮迭代,走向律师信任的 agent

上面这套系统并非一次成型。走到这里经历了四次大迭代,每一次都教给他们「法律 AI 到底需要什么」的硬教训。过程中团队使用了 Uber 的 GenAI Gateway,得以把精力完全放在打磨产品逻辑上,并与领域专家紧密协作。

迭代重点硬教训
1. RAGplaybook 检索 + LLM 裁决语义相似、语气、泛化在真实谈判中全部失效
2. 反馈来自律师决策的自学习闭环细粒度反馈(期望动作、批注、最终文本)才让 agent 变准
3. 语气独立的语气调制环节塑造输出声音的提示词必须归领域专家所有
4. 代理式修改起草反提案、规则库起草妥协条款才是真正省时间的地方;硬政策需要确定性护栏

迭代 1:RAG

最初的方案是搭一个基础 RAG(检索增强生成)系统。法务团队提供既有 playbook 与谈判回合样例。假设是:摄入这些 playbook、检索语义相关段落,再把这些段落连同对方拟议变更一起喂给 LLM,系统就能给出合理决策。

三步 RAG 流程:意图→文档检索→裁决
第一代 RAG 流程:意图、文档检索、裁决(图:Uber Engineering Blog)。

三个问题很快出现:

  • 语义相似不准。用来做嵌入的「键」与要检索的内容性质差异很大,导致语义相似搜索不精确,应用决策不可靠。
  • 语气不当。谈判中回复的语气至关重要。应用经常生成要么过度防御、要么过分积极的回复,造成不自然、不可接受的沟通。
  • 缺乏泛化。遇到 playbook 未明确覆盖的谈判场景时,应用几乎随机应答,在新情境下没什么用。

迭代 2:反馈

认识到只用 playbook 的局限后,团队明白 agent 必须更具适应性、能从真实交互中持续学习,于是构建了由律师直接反馈驱动的自学习闭环。最初的反馈机制很简单:保存律师的决定(接受/拒绝/修改)、原文、修订和一个「踩」的信号。这提供了基本误差信号,但缺少关键细节。

为加深系统理解,反馈闭环演进为记录律师的期望动作与具体批注;当 AI 获得起草修改的能力后,又进一步收集律师实际使用的最终修改文本。这份细粒度数据成为转折点:它让系统能把对方的意图直接映射到律师精确、改进后的语言上。agent 开始明显变准,逐渐适应团队偏好的风格与谈判姿态。

反馈闭环:用户反馈存入 store,历史回复与反馈被法律修订服务与 Word 插件取回
第一版反馈迭代:决策流入存储,历史回复被检索回修订服务与 Word 插件(图:Uber Engineering Blog)。

团队还开始在建议界面里直接展示相关的历史反馈与规则。这让律师看到为什么会生成这条建议,建立信任,也让他们清楚看到是什么影响了 AI 的输出。

运行时,agent 查询已积累数千次历史交互的反馈库。系统先做带元数据过滤的相似搜索,把候选缩到约 20 篇相关文档;再经过第二层过滤,用最先进的 LLM 校验其与用户及对方意图的一致性;然后分析最相关的样例,决定接受还是拒绝拟议变更,并为对方生成批注。

为构造后续提示词的上下文,团队实现了指数衰减加权算法:优先近期决策,确保 agent 适应法律立场的漂移、缓解概念漂移,同时保持同意/不同意样例的均衡分布。这种动态、均衡的 few-shot 提示让修订工具近乎实时地学习用户偏好与政策细节,无需手动微调模型。

精炼后的反馈流水线:反馈库先过相似搜索与元数据过滤,再过 LLM 过滤,最后生成结果
反馈的进一步精炼:策略性数据剪枝 + 两阶段检索(相似搜索加 LLM 过滤)保证搜索精度,并沉淀出高质量标注数据集用于质量回归跟踪(图:Uber Engineering Blog)。

迭代 3:语气

为了解决语气这一顽疾,团队在处理流水线末端加了一次额外的 LLM 调用,专门调制输出的语言风格。但法律谈判中的语气比听起来难得多。早期输出在两种失败模式间摇摆:有时过度防御、对抗;有时又不当地迁就、讨好。两者都不符合律师在真实谈判中克制、专业的语气。

突破来自与内部法务团队的紧密协作。既然语气是法律沟通的关键成分,工程师就让律师直接拥有定义期望语气与对话风格的具体语言。工程团队管理三段式提示词的「骨架」,内部法务团队管理它的「内容」。

提示词解剖:objective、style、conversation starters 三段,内容由律师撰写
提示词解剖:objective(目标)、style(风格)、conversation starters(开场句)。每段内容由 Uber 内部律师撰写并维护(图:Uber Engineering Blog)。

律师最先更新的是 objective 段。它定义语气调制 agent 的角色,并实现一种主动且悲观的反思技术:假定 agent 生成的批注已经带有此前遇到过的那些问题。其他反思技术往往靠复杂循环收敛到期望行为;团队发现,「假定质量差」不会影响正面样例,却能以很高的可靠性、仅一次就纠正负面样例。他们把这归因于复杂度下降:单条提示词里 LLM 少做一个决策;没有循环也限制了 token 用量与延迟。

语气转换:负面与正面语气样例进入 Tone 节点,输出均为正面语气
用反思改善语气:负面与正面草稿批注都经过语气节点,以「自家风格」输出(图:Uber Engineering Blog)。

接着,提示词规定律师偏好的风格:由于 agent 是代表律师给出第一轮回复,它必须直接、第一人称、不进行闲聊。最后一段是开场句,由 Uber 内部律师撰写作为 few-shot 样例。几天之内,律师就把它调校到与自己的声音精确一致。

这带来一个关键洞察:直接影响输出格式的提示词,应由应用的领域专家或最终用户撰写与管理,AI 团队负责引导以确保符合提示词最佳实践。

领域专家把反馈与语气改进折回流水线各环节
由领域专家驱动的反馈与语气改进,折回流水线各环节(图:Uber Engineering Blog)。

迭代 4:代理式修改

判断接受还是拒绝一处变更固然有价值,但对律师来说真正省时间的是起草反提案。简单的生成式文本经常幻觉出条款内容,或偏离合同的定义术语。为此团队从简单文本生成走向代理式工作流:当得出 MODIFY 决策时,引用历史反馈与规则来精炼条款。这让工具能帮律师起草高质量的妥协语言,既反映既往法律意见,也纳入公司对每一类问题的整体风险立场。

规则库

最后,团队意识到律师经常使用自己的模板,且模板常跨团队共享。这带来两个好处。其一,可重复的问题:律师收到的问题有大量共性,反复用一致语气表述 Uber 立场非常耗时。其二,一致的搜索键:原始文档始终使用相同语言,因此文档发生变更时可以生成可靠的搜索键。

为利用这些好处,Uber 为律师构建了规则库:律师可以在原始模板文档中选中重要或常被修改的文本,并为其关联一条规则。一条规则封装 Uber 的立场、任何退让位置、以及期望的应用响应示例。当应用检测到变更时,对修改后的句子在规则索引上做语义向量搜索;若某条规则高置信命中,就注入上下文窗口;为确保严格遵循,流水线末端再加一步 LLM 校验,确认最终输出与检索到的规格精确一致。

流水线:意图→文档检索与重排→裁决→语气调制→规则处理
规则处理在全局中的位置:意图、检索与重排、裁决、语气调制,最后过一道规则(图:Uber Engineering Blog)。

当工具扩展到更多业务线时,规则库还有第二个好处:帮助律师在全公司范围内保持法律立场的一致。

架构

架构遵循瘦客户端模式:Word 插件负责文档交互与用户输入,Python 后端编排所有 AI 操作。律师触发分析时,后端运行 LangGraph 工作流,并行执行意图检测、风险评估与政策查询;向量存储(OpenSearch)提供记忆层,检索相关规则与历史反馈来支撑每一个决策。

系统架构:Microsoft Word 客户端中的修订插件经 HTTPS 连接 FastAPI + LangGraph 后端(向量检索、LLM 调用、会话 agent),外部服务为 OpenSearch、Michelangelo 与 Redis
整体系统架构:瘦 Word 客户端经 HTTPS 接到 FastAPI + LangGraph 编排流水线,背后是 OpenSearch、Michelangelo 模型服务与 Redis(图:Uber Engineering Blog)。

Microsoft Word 插件:在律师工作的地方见面

一个关键设计决策是把它做成 Microsoft Word 插件,而不是独立 Web 应用。律师生活在 Word 里,要求他们在工具间复制粘贴会直接杀死采纳率。插件基于 React 与 TypeScript,以任务窗格形式与文档并排运行;通过 Office JavaScript API 与 Word 通信,读取修订标记、应用修改、高亮待审条款。

这次集成并非没有挑战。Office JavaScript API 天生慢,需要在应用层做激进缓存、尽量减少与 Word 的往返来优化;修订标记 API 存在边缘情况,某些文档结构会导致崩溃,需要防御式加载策略;修订中被删除的文本返回空字符串,迫使团队维护自己的文本状态以准确显示 diff。这些约束塑造了架构:瘦客户端小心地编排 Word 操作,后端承担全部 AI 重活。

高性能编排

团队通过并行化独立图节点同时优化延迟与准确率。例如 Intention 节点分析对方的实质意图时,Risk Level 节点并发评估该条款的危险画像。

混合决策引擎:规则 vs 学习

为在灵活性与合规之间取得平衡,系统对「硬逻辑」与「软逻辑」区别对待。对不可谈判的政策,使用确定性规则引擎:与标准 RAG 不同,它只在目标句子的严格语义匹配时触发;规则一旦命中,就作为硬护栏覆盖模型。对可谈判的细节(语气、策略),依赖概率性的反馈闭环。这种双轨让系统从第一天起就靠规则给出高置信结果,同时让反馈闭环积累数据去处理更复杂、非结构化的场景。

基于反馈的自学习

自学习能力的核心是一个免除手动微调的反馈闭环。系统对每一次律师交互捕获完整快照:原始上下文(合同文本、对方修订)、AI 的分析(意图、风险等级),以及最关键的——律师的完整回应:最终决定、实际应用的文本修改、写下的理由。这份细粒度数据让系统不仅建模「决定了什么」,还建模「为什么」,从而在未来的相似场景中复现资深律师的分寸感。

时间加权自学习

为防止概念漂移(模型过度依赖过时的法律立场),团队实现了基于指数衰减的自定义反馈采样算法:为上下文窗口检索 few-shot 样例时,对每次历史交互计算权重:

weight = exp(-lambda * age_days)

指数衰减公式:weight 等于 exp 负 lambda 乘 age_days
自定义反馈采样算法(图:Uber Engineering Blog)。

其中 lambda 对应可配置的半衰期,目前设为 365 天。这确保模型适应法律立场的漂移,而不过度依赖过时先例。实际上,系统近乎实时地学习团队当前的偏好,就像人类同事感知新规范一样。

数据存储与向量检索

知识库依赖 OpenSearch,使用 nomic-embed-text-v15 嵌入做高维语义检索,维护两个主索引:

  • 规则索引:存储法律政策,按目标句子向量化。
  • 反馈索引:存储历史谈判数据,按对方意图(而非原始文本)向量化,从而捕获语义相同但措辞不同的变更。

检测到新修订时,系统对这两个索引做语义向量搜索,检索最相关的规则与历史决策,确保 AI 拥有给出建议所需的精确上下文。

提升规则与反馈的检索精度

这个问题空间的一个优势是:谈判总是从同一份源合同开始。因此学习与反馈可以锚定到同一文档多轮交互中的相同段落。系统先把法律合同按 ;、. 或换行符切成小块;每当遇到修订,就回查原始源句子,检索保证相关的历史出现或显式规则;每当用户提供反馈,也使用同一句逐字源句子入库。

合同、其简化版本,以及由逐字源句子构成的规则与反馈文档
利用 OpenSearch 提升规则与反馈检索精度:切分源合同,把规则与反馈锚定到逐字源句子(图:Uber Engineering Blog)。

查询与输入嵌入的对称性对搜索性能至关重要。在这里,存储的嵌入与查询的嵌入保证相似,因为它们都源自同一份合同。相似搜索仍然必要,因为文档可能随每轮律师批注发生细微变化。

会话记忆

对话式界面用 Redis 维护会话状态,允许律师就文档追问。幕后持续运行 LLM-as-a-judge 评估,监控检索上下文的质量(document_quality_metric)与模型对公司规则的遵循度(rule_adherence_metric)。

今天的做法:harness 工程

作为 Uber 全公司 Agentic AI 努力(含 Legal AI)的一部分,团队正在探索 Claude Code、OpenCode 等 agentic harness,结合 skills 来结构化并自动化工作流;同时将探索引入法律本体与知识图谱,为法律概念与关系提供语义基础,实现更一致的解释与更可靠的推理。

结语

从最初的 RAG 系统,到整合用户反馈、打磨语气、实现健壮的规则库,这段迭代历程说明:构建一个真正有效的 AI 法律助手,是一个由持续学习与领域专家紧密协作驱动的迭代过程。每一个遇到的挑战都成为加深理解、打磨系统的机会,最终得到一个更准确、更适应、更以用户为中心的工具,在复杂的法律谈判中真正增强人类的专业能力。


来源:Uber Engineering Blog《Building Uber's Redlining Agent》,作者 Austin Greco、Meghana Somasundara、Frank Tenente(uber.com/us/en/blog/building-ubers-redlining-agent,2026-10-08)。本文为全文翻译与改编,已删除原页商业推广段落;全部配图与演示视频来自原文。

相关文章

作为亚马逊联盟会员,我们可能从符合条件的购买中获得佣金。