LangChain Blog · 2026/10/9 00:00:05
LangChain 联合 Stripe 推出 Restock 示例:基于 MPP 协议实现智能体自主支付与预算管控
LangChain 发布开源示例项目 Restock,展示智能体如何在 Slack 中通过 Managed Deep Agents 完成从选品到结账的全流程。该项目集成 Stripe Link 钱包与机器支付协议(MPP),确保智能体在用户设定的预算上限内执行真实交易且无法接触敏感卡号数据。开发者可基于此代码库构建具备安全支付能力的自主代理。
报道全文原始报道全文
本文目录11 个章节



Srimanth TangedipalliSydney RunkleNathan DreznerOctober 8, 20266min返回博客创建智能体创建智能体
核心要点
- Restock 是一个能够完成真实购买支付的示例智能体。 它运行在 Slack 上的 Managed Deep Agents 中,负责查找商品、构建购物车,并通过支持 Machine Payments Protocol (MPP) 的 API 完成结账。
- 支付安全且受预算限制。 Link(Stripe 的消费者钱包)处理支付流程,因此智能体永远不会接触到卡号。用户批准一笔不超过设定金额的支出请求,智能体无法超出该限额进行消费。
- 构建你自己的可支付智能体。 从 Restock 的示例代码开始,并告诉我们你构建了些什么。
智能体已经擅长寻找待购商品。但支付更难:它涉及真实资金流动,需要模型永远不应接触的凭证,且难以撤销。
为了展示如何构建一个具备支付能力的智能体,我们开发了 Restock,这是一个运行在 Managed Deep Agents 上、基于 Slack 的办公用品示例智能体。它能搜索真实产品、构建购物车,并通过 Stripe 的消费者钱包 Link 进行支付,为智能体提供最安全的支付方式。
本文跟随一个请求,从第一条消息到订单确认的全过程:
我们的笔快用完了。你能帮办公室找一套 12 支装的蓝色墨水笔吗?总价控制在 25 美元以内?
Restock 以 22.18 美元(含费用)订购了这些笔。本文中的价格仅为示意。
选择支付方式
智能体可以通过浏览器操作零售商的结账页面来支付,但这很脆弱。页面会变化,网站会阻止自动化结账,而且必须在不向模型暴露敏感信息的情况下输入支付详情。
支持 Machine Payments Protocol(MPP)的 API 避免了这一问题:它会明确告知智能体需要支付多少,并直接接受付款。其权衡之处在于覆盖范围,因为智能体只能通过支持 MPP 的 API 进行购买。这一列表正在不断扩大,Apify 和 Mercator 等工具聚合平台以及 Zinc 等垂直领域平台均已加入其中。Restock 使用 Zinc,但该模式并不依赖于它。
各组件如何协同工作
Restock 由四个部分组成:
- Link 存储用户的支付方式,并请求用户批准付款。
- MPP,即 Machine Payments Protocol,定义了基于 HTTP 的支付交换流程。商户响应
402 Payment Required及支付指令,客户端随后携带支付凭证重试。 - Zinc 通过其 MPP 订单 API 搜索商品并向零售商下单。
- Managed Deep Agents (MDA) 托管智能体,并处理 Slack 集成、人工审核、凭证管理及状态保存。

从发起请求到确认订单的钢笔采购流程。用户需进行两次批准:一次是在 Slack 中批准购买,另一次是在 Link 中批准支付。
搜索与购物车
我们为 Zinc 搜索、购物车和支付编写了自定义工具,并制定了用于塑造对话的指令。MDA 负责其余部分,包括保存对话和订单记录,因此用户可以在几天后返回并询问同一批钢笔的情况。以下是项目结构及精简后的智能体定义:
restock-agent/├── agent.py # 智能体:模型 + 工具├── instructions.md # Restock 的对话方式及各工具的使用时机├── tools/restock.py # 模型可调用的工具├── restock/ # Zinc、Link 钱包、购物车及订单存储└── sandbox/setup.sh # 在沙箱中安装 Link CLI
agent = define_deep_agent( name="restock", model=ChatOpenAI(model=os.environ.get("OPENAI_MODEL", "gpt-5.6-sol")), tools=[ search_restock_products, # Zinc 搜索 prepare_restock_order, # 保存购物车 set_restock_payment_amount, # 预付款金额,在预算范围内 request_restock_payment, # Slack 审核,然后 Link 批准 wait_for_restock_approval, # 等待补货审批 check_restock_order, # 从 Zinc 获取订单状态 ],)
对于笔的采购请求,Restock 使用 Zinc API 密钥和一个已充值的搜索账户在 Zinc 中进行搜索(搜索费用不通过 Link 支付)。用户选择了一个 12 支装的套装,Restock 在不设置付款金额的情况下保存了购物车。
设置预付款金额
Restock 将 25 美元的预算视为上限,而非直接扣款金额。由于商品列表无法提供税费和运费信息,只有当零售商订单下达后,总金额才会最终确定。因此,Restock 会询问用户希望预付多少金额,最高可达 25 美元。Zinc 会在下单时收取该金额,从中支付给零售商,并退还剩余部分。
对于这笔笔的订单,用户选择了 23 美元。Zinc 保留 1 美元的基础费用,从而为商品、税费和运费留出 22 美元的零售商额度。可选费用(如 Zinc 的邮件订单更新服务)可能会进一步缩减这一额度。因此,在审核之前,Restock 会先提交一个不含付款信息的订单请求,并从 Zinc 返回的 402 Payment Required 挑战中读取实际费用。
确保凭证不与模型交互
模型永远不会处理用于支付订单的敏感机密信息。Link 会话存储在 用户拥有 的 MDA Connection 中,因此每个人的钱包始终归其个人所有。配送地址、通知邮箱和 Zinc API 密钥则存储在由代理拥有的 Connections 中。Link CLI 在 MDA 的 托管沙箱 内执行登录操作。一个小助手程序会将保存的会话存储在用户的 Connection 中,并仅在命令运行期间将其放入沙箱。连接 Link 并不等同于批准购买,后续对话可以复用该会话。
在 Slack 中审核购买
在支付发生之前,用户会在 Slack 中查看购物车、办公标签、费用以及预付金额。配送地址保持私密。Restock 会为此审查触发一个 interrupt,因此运行将保持暂停状态,直到用户在 Slack 中点击“批准”或“拒绝”。模型写入工具调用中的任何内容都无法自行完成批准。
通过 MPP 使用 Link 进行支付
接下来,Restock 会在 Slack 线程中发布一个 Link 审批链接,金额与 Zinc 挑战中的金额完全一致,即相同的 $23。用户在 Link 网站上批准该请求,这代表了钱包自身的支付授权。
一旦 Link 批准,Restock 会将已支付的请求发送给 Zinc,并使用 Link 的 shared payment token 作为凭证,Zinc 随后通过 Stripe 处理支付。pympp 负责处理 MPP 格式化。
支付工具从私有沙箱文件中读取令牌,使用后将其删除,并仅向模型返回公开摘要。令牌本身并不强制校验购物车详情,因此工具还会根据用户审查过的内容进行订单核对,并确认审批仍然有效。
确认订单
零售商订单总额为 14.99,税 4.99),在 22.18,Zinc 退还剩余的 $0.82。

笔类订单的资金流向,价格为示例性质。用户在 23,实际支付 0.82 退款。
当 Zinc 报告 order_placed 后,Restock 会在 Slack 中进行确认,并在零售商发货时分享追踪信息。除了示例价格外,我们在托管部署环境中端到端运行了 Restock:一笔实时订单达到了 order_placed 状态,且预期的退款也已到账。
开始使用
代码位于 langchain-samples/restock-agent,其 README 逐步介绍了设置和部署流程。MDA 的 Slack 设置指南 涵盖了如何连接 Slack 应用。
Restock 是一个示例项目:它仅支持美国配送和美元支付,每次部署对应一个办公室,且付款需来自请求者自己的钱包。
Restock 提供三种模式。通过设置 RESTOCK_MODE 来选择其中一种,建议按以下顺序尝试:
- 演练模式 (
rehearsal):使用虚构商品和模拟审批流程。需要 OpenAI API key 以及具备 Managed Deep Agents 访问权限的 LangSmith workspace。 - 链接测试审批模式 (
link-test):执行真实的 Zinc 搜索和真实的 Link 审批,但不进行购买。此模式额外需要 Link wallet、Zinc API key、已充值的 Zinc 搜索账户以及配送详情。 - 实时购买模式 (
live):执行真实付款和真实的零售商订单。
这种模式适用于任何涉及资金支出的 agent。让 agent 负责搜索并构建购物车,将支出限额和审批逻辑保留在模型无法触及的代码中,并且仅在商户确认后才视为订单完成。
不妨试试 Restock。欢迎分享你的看法,以及你基于它构建的项目!
查看你的 agent 实际在做什么
LangSmith 是我们的 agent 工程平台,帮助开发者调试每一个 agent 决策、评估变更,并实现一键部署。