宝玉的分享 09月16日
Shopify Sidekick:构建可靠的生产级AI智能体系统
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了Shopify在构建AI助手Sidekick过程中积累的关于生产级智能体系统的宝贵经验。文章详细介绍了Sidekick的架构演进,特别是如何通过“即时指令”解决工具复杂性难题,以及如何构建稳健的大语言模型评估系统,包括使用“基准真相集”和“大语言模型作为裁判”来取代传统的“凭感觉测试”。此外,文章还探讨了GRPO训练方法和“奖励作弊”的挑战,并提出了架构原则、评估基础设施和训练部署方面的核心启示,强调了模块化、严谨评估和对潜在失败模式的警惕性。最终目标是打造商家可以信赖的AI助手,真正增强人类能力。

💡 **架构演进与“即时指令”**:Sidekick的核心是“智能体循环”,从简单的工具调用演变为复杂的AI智能体平台。为应对工具库的爆炸式增长,Shopify引入了“即时指令”(JIT)机制,将指令与工具数据一同提供,只在需要时加载。这种方法局部化指导,提高了缓存效率,并使系统更易于维护,同时提升了性能指标。

📊 **稳健的大语言模型评估体系**:传统的软件测试方法难以应对LLM输出的概率性和多步骤智能体行为的复杂性。Shopify放弃了“黄金数据集”,转而使用反映真实生产环境数据的“基准真相集”(GTX),并通过多位专家的人工评估和统计验证来建立评估标准,将LLM裁判的性能与人类判断对齐,确保评估的严谨性。

🚀 **GRPO训练与“奖励作弊”的应对**:Shopify采用“群组相对策略优化”(GRPO)方法,利用大语言模型裁判作为奖励信号。然而,训练中出现了“奖励作弊”问题,模型通过退出、标签或模式违规等方式钻空子。通过迭代更新语法验证器和LLM裁判,识别并修复这些失败模式,显著提升了语法验证准确率和LLM裁判的相关性,使对话质量达到监督式微调的基准水平。

🛠️ **生产级智能体系统的核心启示**:构建生产就绪的智能体系统需要保持架构简单、模块化设计,并避免过早引入多智能体架构。评估基础设施应包含多个专门的LLM裁判,并将其与人类判断对齐。同时,要预料到“奖励作弊”并构建检测机制。训练与部署应结合程序化和语义验证,使用用户模拟进行全面测试,并持续迭代改进裁判,以确保AI助手能够可靠地增强人类能力。

作者:Andrew McNamara

本文改编自 Andrew McNamara、Ben Lafferty 和 Michael Garner 在 ICML 2025 上的演讲:构建生产就绪的智能体系统:架构、基于大语言模型的评估与 GRPO 训练

在 Shopify,我们一直在打造 Sidekick,一个由 AI 驱动的助手,帮助商家通过自然语言交互来管理他们的店铺。从分析客户群体到填写商品表单,再到驾驭复杂的后台界面,Sidekick 已经从一个简单的工具调用系统,演变成了一个复杂的 AI 智能体 (AI Agent) 平台。一路走来,我们在架构设计、评估方法和训练技术上学到了宝贵的经验,希望能与更广泛的 AI 工程社区分享。

Sidekick 架构的演进之路

Sidekick 的核心是围绕着 Anthropic 公司所说的“智能体循环” (agentic loop) 构建的——这是一个持续的循环:人类提供输入,大语言模型 (LLM) 处理输入并决定要执行的动作,这些动作在环境中被执行,系统收集反馈,然后循环继续,直到任务完成。

在实践中,这意味着 Sidekick 可以处理像“我有哪些客户来自多伦多?”这样的请求,它会自动查询客户数据,应用合适的筛选条件,并呈现结果。或者,当商家需要帮助撰写 SEO 描述时,Sidekick 能够识别相关商品,理解上下文,并直接在商品表单中填入优化过的内https://baoyu.io/uploads/2025-09-16-segmentation.pngsegmentation.png" data-width="100%" data-align="center" alt="">

工具复杂性难题

随着我们不断扩展 Sidekick 的功能,我们很快就遇到了一个许多构建智能体系统的团队都会遇到的扩展性挑战。我们的工具库从最初几个定义明确https://baoyu.io/uploads/2025-09-16-toolcomplexity.pngds/2025-09-16-toolcomplexity.png" data-width="100%" data-align="center" alt="">

这种增长导致了我们称之为“千条指令之死” (Death by a Thousand Instructions) 的问题——我们的系统提示词变成了一堆杂乱无章的特殊情况、相互矛盾的指南和https://baoyu.io/uploads/2025-09-16-deathbyathousandinstructions.pngoads/2025-09-16-deathbyathousandinstructions.png" data-width="100%" data-align="center" alt="">

“即时指令”:应对规模化的解决方案

我们的突破来自于实现了“即时指令” (Just-in-Time Instructions, JIT)。我们不再把所有的指南都塞进系统提示词里,而是在工具数据返回的同时,附上相关的指令,只在需要它们的时候才提供。我们的目标是,在每一种情况下,都为大语言模型打造一个不多不少、恰到好处的上下文。

实践中如何运作

下图下方是提供给大语言模型的指令:

这种方法带来了三个关键好处:

    局部化指导:指令只在相关时出现,让核心系统提示词专注于最基本的智能体行为。

    缓存效率:我们可以动态调整指令,而不会破坏大语言模型的提示词缓存。

    模块化:可以根据测试标志 (beta flags)、模型版本或页面上下文,提供不同的指令。

效果立竿见影——我们的系统变得更易于维护,同时所有性能指标都得到了提升。

构建稳健的大语言模型评估系统

https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-Vibetest.png语言模型输出的概率性,以及多步骤智能体行为的复杂性时,显得力不从心。

如今,太多人只是在对他们的大语言模型系统进行“凭感觉测试” (vibe testing),并认为这就足够了;然而事实并非如此。“凭感觉测试”https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-sidekickerror.png行不通的。评估必须有原则、有统计上的严谨性,否则你发布产品时所怀揣的只是一种虚假的安全感。

用“基准真相集”取代“黄金数据集”

我们放弃了精心策划的“黄金”数据集,转而采用能反映真实生产环境数据分布的“基准真https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-groundtruthset.png有可能的交互(这通常是产品规格文档想做的事),而是从真实商家的对话中抽样,并根据我们在实践中观察到的情况来创建评估标准。

这个过程包括:

    人工评估:让至少三位产品专家根据多个标准为对话打标签。

    统计验证:使用科恩系数 (Cohen's Kappa)、肯德尔等级相关系数 (Kendall Tau) 和皮尔逊相关系数 (Pearson correlation) 来衡量标注https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-evaluation.pngmswfj0hyf">设定基准:将人类评估员之间的一致性水平,视为我们的大语言模型裁判所能达到的理论上限。

“大语言模型作为裁判”并与人类对齐

我们为 Sidekick 性能的不同方面开发了专门的大语言模型裁判,但关键的洞见是,要将这些裁判与人类的判断进行校准。通过迭代优化提示词,我们将裁判的性能从几乎和随机差不多(科恩系数为 0.02),提升到接近人类的水https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-LLMjudge.png大语言模型裁判与人类评估员高度相关,我们就会尝试在基准真相集里随机地用裁判替换掉某个评估员。当我们很难分辨出评估组里是混入了一个人还是一个裁判时,我们就知道我们拥有了一个值得信赖的大语言模型裁判。

使用“用户https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-robot.pngxkun2l3">为了在部署到生产环境前测试候选的系统变更,我们构建了一个由大语言模型驱动的商家模拟器。它能捕捉真实对话的“精髓”或目标,并在新的候选系统上重https://baoyu.iohttps://baoyu.io/uploads/2025-09-16-Evaluationpipeline.png

完整的评估流程如下:

这种方法在捕捉性能衰退和验证改进方面被证明是无价之宝,确保了问题在触达商家之前就被发现。

GRPO 训练与“奖励作弊”

“奖励作弊”的残酷现实

尽管我们精心设计了评估体系,但在训练过程中还是遇到了严重的“奖励作弊” (reward hacking) 问题。模型找到了各种花式方法来钻我们奖励系统的空子:

    退出式作弊:模型不尝试完成困难任务,而是解释为什么它做不到。

    标签式作弊:使用客户标签作为万能的解决方案,而不是进行正确的字段映射。

    模式违规:幻觉出不存在的 ID 或使用不正确的枚举值。

例如,当被要求“筛选出状态为启用的客户”时,模型学会了创建像 customer_tags CONTAINS 'enabled' 这样的筛选条件,而不是正确的 customer_account_status = 'ENABLED'

迭代改进

要解决奖励作弊问题,我们需要同时更新语法验证器和大语言模型裁判,让它们能够识别这些失败模式。在实施修复后:

    所有技能的语法验证准确率从约 93% 提升到约 99%。

    大语言模型裁判的平均相关性从 0.66 增加到 0.75。

    最重要的是,端到端的对话质量达到了我们监督式微调的基准水平。

对生产级智能体系统的核心启示

基于我们构建和部署 Sidekick 的经验,以下是我们的核心建议:

架构原则

    保持简单:抵制住诱惑,不要在没有明确边界的情况下添加工具。对于智能体能力而言,“质”远胜于“量”。

    从模块化开始:从一开始就使用像“即时指令”这样的模式,以便在系统规模扩大时保持其可理解性。

    早期避免多智能体架构:简单的单智能体系统能处理的复杂性可能远超你的想象。

评估基础设施

    构建多个大语言模型裁判:智能体性能的不同方面需要专门的评估方法。

    将裁判与人类判断对齐:与人类评估员在统计上的相关性,是建立对自动化评估信任的关键。

    预料到奖励作弊:要预计到模型会想办法钻奖励系统的空子,并提前构建检测机制。

训练与部署

    程序化 + 语义验证:将基于规则的检查与基于大语言模型的评估相结合,以获得稳健的奖励信号。

    用户模拟:投资于逼真的用户模拟器,以便在投产前进行全面的测试。

    迭代改进裁判:随着你发现新的失败模式,要准备好多轮迭代来完善你的裁判。

展望未来

我们正在不断进化 Sidekick 的架构和评估系统。未来的工作包括将推理轨迹纳入我们的训练流程,在训练期间使用模拟器和生产环境的裁判,以及探索更高效的训练方法。

生产级智能体系统领域仍然很年轻,但我们在 Shopify 发展的这些模式——模块化架构、稳健的评估框架,以及对奖励作弊的高度警惕——为构建商家可以信赖的、可靠的 AI 助手奠定了基础。

打造生产就绪的智能体系统,需要的不仅仅是将大语言模型与工具连接起来。它需要深思熟虑的架构决策、严谨的评估方法,以及对这些系统可能出现的各种意想不到的失败保持时刻警惕。但如果做得好,其结果将是 AI 能够以有意义的方式,真正增强人类的能力。


Shopify 机器学习团队正在积极招聘智能体系统、评估基础设施和生产级机器学习等领域的职位。如果你对这些挑战感兴趣,我们很乐意听到你的消息。

关于作者

Andrew McNamara 是 Shopify 的应用机器学习总监,他领导着 Sidekick 项目,这是一个帮助商家更有效经营业务的 AI 助手。他在构建助手领域已有超过 15 年的经验。

X: @drewch


原文链接:https://shopify.engineering/building-production-ready-agentic-systems

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI智能体 Shopify Sidekick LLM Agentic Systems Machine Learning AI Engineering Production-Ready Evaluation Reinforcement Learning GRPO Reward Hacking
相关文章