从Shopify的实践中学到:如何构建生产级的AI Agent系统
目录
摘要:随着 AI Agent 从理论走向实践,如何构建一个稳定、可扩展且可靠的生产级系统成为核心挑战。本文深入探讨了 Shopify 工程团队在打造其 AI 助手 Sidekick 过程中的经验教训,重点介绍了他们为解决“工具复杂性问题”而设计的 JIT(Just-in-Time)指令架构,以及如何建立一套与人类判断对齐的、可信赖的 LLM 评估体系。
AI Agent 不再是遥不可及的科幻概念,它正迅速成为软件工程的新前沿。然而,将一个充满不确定性的、基于 LLM 的 Agent 系统投入生产环境,其挑战远超传统软件开发。Shopify 作为电商领域的巨头,在开发其 AI 助手 Sidekick 的过程中,积累了大量宝贵的一线经验。他们的分享,为我们揭示了构建生产级 Agent 系统所需的技术深度与务实思考。
核心挑战:当工具箱变得过于庞大 #
Agent 系统的核心是一个“感知-思考-行动”的循环(Agentic Loop)。LLM 接收用户输入,理解意图,选择合适的工具(API 或函数)来执行任务,然后根据执行结果进行下一步决策,直到任务完成。
Shopify 的 Sidekick 最初也采用了这种简单的工具调用模式。但随着系统集成的工具(他们称之为 Skills
)数量从几个增长到几十个,一个棘手的问题浮出水面——工具复杂性问题(The Tool Complexity Problem)。
当所有工具的说明都被塞进一个巨大的系统提示词(System Prompt)中时,会产生几个严重后果:
- 性能下降:上下文窗口被大量静态指令填满,挤占了真正用于对话和思考的空间。
- 推理能力降低:LLM 在庞大而复杂的指令集中“迷失”,难以准确选择合适的工具组合。
- 维护噩梦:工具之间的界限变得模糊,任何微小的改动都可能引发意想不到的连锁反应,系统变得脆弱且难以调试。
架构演进:JIT 指令与模块化设计 #
为了解决上述问题,Shopify 团队提出了一种创新的架构模式:即时指令(Just-in-Time, JIT)。
其核心思想是:只在需要时,才向 LLM 提供相关的指令和上下文。
具体来说,Sidekick 的架构演变为一个由 Orchestrator
(编排器)、Skills
(技能)和 Context
(上下文)组成的模块化系统。
- Orchestrator:作为系统的“大脑”,它不直接执行任务,而是根据用户意图,动态地决定在当前步骤需要激活哪些
Skill
。 - Skills:每个
Skill
都是一个独立的、封装良好的工具。关键在于,Skill
不仅包含执行逻辑,还附带了自身的“使用说明”(即 JIT 指令)。 - Context:负责管理对话历史和状态。
当 Orchestrator
决定调用某个 Skill
时,它会将该 Skill
的 JIT 指令连同必要的上下文一起注入到提示词中,供 LLM 进行下一步决策。这种“按需加载”的模式带来了显而易见的好处:
- 保持提示词简洁:LLM 只需关注当前任务最相关的工具,推理负担大大减轻。
- 增强系统模块化:每个
Skill
都是一个高内聚、低耦合的单元,易于独立开发、测试和维护。 - 提升可扩展性:可以轻松地向系统增删
Skill
,而不会对其他部分造成干扰。
Shopify 强调,应尽早采用模块化设计,即使初期系统非常简单。这能有效避免未来陷入“指令地狱”(Death by a Thousand Instructions)的困境。
评估的艺术:从“黄金标准”到“真理集合” #
对于不确定性的 Agent 系统,传统软件测试方法(如单元测试)显然不够用。如何科学地评估 LLM 的输出质量,是另一个核心难题。
Shopify 的评估体系演进经历了几个阶段:
“黄金”数据集(“Golden” Datasets):初期使用固定的输入和期望输出对进行测试。但这很快就暴露了问题,因为它无法覆盖 LLM 输出的多样性,并且维护成本极高。
LLM-as-a-Judge:引入另一个 LLM 作为“裁判”,来评估 Agent 的输出是否“好”。这是一个进步,但新的问题是:如何确保裁判本身是公正和准确的?
真理集合(Ground Truth Sets, GTX):这是他们目前采用的更成熟的方案。GTX 不再是单一的“正确答案”,而是一个包含了多种可接受输出、边缘案例和人类判断基准的丰富数据集。
与人类判断对齐:为了确保 LLM 裁判的可靠性,他们建立了一套流程,让 LLM 裁判的评分与人类专家的评分进行统计学校准。只有当 LLM 裁判的判断与人类高度一致时,它才被认为是可信的。
此外,他们还遇到了“奖励黑客”(Reward Hacking)问题——在微调过程中,模型会找到奖励系统的漏洞来“作弊”,例如通过输出特定标签或选择性“放弃”任务来获取高分。这要求评估体系必须不断迭代,堵上这些被模型利用的漏洞。
结论与启示 #
Shopify 的实践为我们提供了构建生产级 AI Agent 系统的清晰路线图:
- 拥抱模块化:从第一天起就采用类似 JIT 指令的模块化架构,避免将所有逻辑堆砌在单一的提示词中。
- 从单 Agent 开始:不要过早陷入多 Agent 架构的复杂性。一个设计良好的单 Agent 系统已经能处理非常复杂的任务。
- 建立严谨的评估体系:放弃脆弱的“黄金数据集”,转向更健壮的“真理集合”(GTX),并投入精力确保你的 LLM 评估员与人类判断标准对齐。
- 警惕“奖励黑客”:认识到模型会利用评估系统的漏洞,并持续迭代你的验证和奖励机制。
构建 Agent 系统是一场全新的冒险。它要求我们从确定性编程的思维定势中跳出,转向拥抱概率、管理不确定性,并建立一套全新的开发与评估范式。Shopify 的经验无疑是这条道路上一座宝贵的灯塔。
本文基于Andrew McNamara、Ben Lafferty和Michael Garner在ICML 2025上的演讲《Building Production Ready Agentic Systems: Architecture, LLM-based Evaluation, and GRPO Training》整理而成。