LangChain BlogActualizado el

Agentes que pueden pagar: cómo construimos Restock con Link y Managed Deep Agents de Stripe

Conclusiones clave Restock es un agente de ejemplo que paga por compras reales. Se ejecuta en Slack sobre Managed Deep Agents, encuentra productos, arma un carrito y realiza el pago a través de una AP

Restock payment flow from the Slack request to the confirmed order, with approvals in Slack and in Link
Fuente de la imagen · LangChain Blog

Conclusiones clave

  • Restock es un agente de ejemplo que paga por compras reales. Se ejecuta en Slack sobre Managed Deep Agents, encuentra productos, arma un carrito y realiza el pago a través de una API que admite el Machine Payments Protocol (MPP).
  • Los pagos se mantienen seguros y dentro del presupuesto. Link, la cartera de consumo de Stripe, procesa el pago, por lo que el agente nunca ve un número de tarjeta. El usuario aprueba una solicitud de gasto hasta un monto determinado, y el agente no puede gastar más de eso.
  • Crea tu propio agente que pueda pagar. Comienza a partir del código de ejemplo de Restocky cuéntanos qué construyes.

Los agentes ya son buenos para encontrar cosas que comprar. Pagar es más difícil: implica mover dinero real, requiere credenciales que el modelo nunca debería ver y es difícil de revertir.

Para mostrar cómo construir un agente que pague, creamos Restock, un agente de ejemplo de artículos de oficina que se ejecuta en Slack sobre Managed Deep Agents. Busca productos reales, arma un carrito y paga a través de Link, la cartera de consumo de Stripe, que ofrece a los agentes la forma más segura de pagar.

Esta publicación sigue una solicitud desde el primer mensaje hasta el pedido confirmado:

Nos estamos quedando sin bolígrafos. ¿Puedes encontrar un paquete de 12 bolígrafos de tinta azul para la oficina, por menos de $25 en total?

Restock ordena los bolígrafos por $22.18, tarifas incluidas. Los precios en esta publicación son ilustrativos.

Elegir cómo pagar

Un agente puede pagar controlando el proceso de pago del minorista en un navegador, pero eso es frágil. Las páginas cambian, los sitios bloquean los pagos automatizados y los datos de pago deben ingresarse sin exponerlos al modelo.

Una API que admite el Machine Payments Protocol (MPP) evita eso: le indica al agente exactamente cuánto pagar y acepta el pago directamente. La contrapartida es la cobertura, ya que el agente solo puede comprar a través de APIs habilitadas para MPP. Esa lista está creciendo, con agregadores de herramientas como Apify y Mercator que se unen a otros verticales como Zinc para el comercio minorista. Restock usa Zinc, pero el patrón no depende de ello.

Cómo encajan las piezas

Restock está construido a partir de cuatro piezas:

  • Link contiene los métodos de pago del usuario y les pide que aprueben los pagos.
  • MPP, el Machine Payments Protocol, define el intercambio de pagos sobre HTTP. El comerciante responde con 402 Payment Required y las instrucciones de pago, y el cliente reintenta con una credencial de pago.
  • Zinc busca productos y realiza pedidos a minoristas a través de su MPP order API.
  • Managed Deep Agents (MDA) aloja el agente y gestiona Slack, la revisión humana, las credenciales y el estado guardado.
Restock payment flow from the Slack request to the confirmed order, with approvals in Slack and in Link
La solicitud de bolígrafos pasa de ask a confirmed order. El usuario aprueba dos veces: la compra en Slack y el pago en Link.

Búsqueda y carrito

Escribimos custom tools para la búsqueda de Zinc, el carrito y el pago, además de las instrucciones que dan forma a la conversación. MDA se encarga del resto, incluido el guardado de conversaciones y pedidos, de modo que alguien pueda regresar días después y preguntar por los mismos bolígrafos. Aquí está la estructura y una definición recortada del agente:

restock-agent/
├── agent.py            # the agent: model + tools
├── instructions.md     # how Restock talks and when it uses each tool
├── tools/restock.py    # the tools the model can call
├── restock/            # Zinc, Link wallet, cart and order storage
└── sandbox/setup.sh    # installs the Link CLI in the sandbox

agent = define_deep_agent(
    name="restock",
    model=ChatOpenAI(model=os.environ.get("OPENAI_MODEL", "gpt-5.6-sol")),
    tools=[
        search_restock_products,     # Zinc search
        prepare_restock_order,       # save the cart
        set_restock_payment_amount,  # upfront amount, within the budget
        request_restock_payment,     # Slack review, then Link approval
        wait_for_restock_approval,
        check_restock_order,         # order status from Zinc
    ],
)

Para la solicitud de bolígrafos, Restock busca en Zinc con una clave de API de Zinc y una cuenta de búsqueda con fondos (la búsqueda no se paga a través de Link). El usuario elige un paquete de 12, y Restock guarda el carrito sin un monto de pago.

Configurar el monto por adelantado

Restock trata el presupuesto de $25 como un límite máximo, no como un monto a cobrar. Los impuestos y el envío no se conocen a partir de la ficha de un producto, y el total solo se liquida una vez que se realiza el pedido al minorista. Así que Restock le pregunta al usuario cuánto pagar por adelantado, hasta un máximo de $25. Zinc toma ese monto cuando se ingresa el pedido, paga al minorista con él y reembolsa el resto.

Para los bolígrafos, el usuario elige $23. Zinc mantiene una tarifa base de $1, lo que deja una asignación de $22 para el comercio para el artículo, los impuestos y el envío. Las tarifas opcionales, como las actualizaciones del pedido por correo electrónico de Zinc, pueden reducirla aún más, así que antes de la revisión, Restock solicita el pedido sin pago y lee las tarifas reales del 402 Payment Required desafío de Zinc.

Mantener las credenciales fuera del modelo

El modelo nunca maneja los secretos que pagan el pedido. La sesión de Link vive en una propiedad del usuario MDA Connection, por lo que la cartera de cada persona sigue siendo suya. La dirección de entrega, el correo de notificación y la clave de la API de Zinc se encuentran en Connections propiedad del agente. La CLI de Link ejecuta el inicio de sesión dentro del sandbox administradode MDA. Un pequeño ayudante mantiene la sesión guardada en la Connection del usuario y la coloca en el sandbox solo mientras se ejecuta un comando. Conectar Link no aprueba una compra, y las conversaciones posteriores reutilizan la sesión.

Revisar la compra en Slack

Antes de pagar nada, el usuario revisa el carrito, la etiqueta de la oficina, las tarifas y el monto por adelantado en Slack. La dirección de entrega permanece privada. Restock genera una interrupción para esta revisión, de modo que la ejecución permanezca en pausa hasta que el usuario haga clic en Approve o Reject en Slack. Nada de lo que el modelo escriba en una llamada a una herramienta puede aprobarla.

Pagar con Link a través de MPP

A continuación, Restock publica un enlace de aprobación de Link en el hilo de Slack por exactamente el monto del desafío de Zinc, los mismos $23. El usuario lo aprueba en el sitio web de Link, que es el propio consentimiento de la cartera para pagar.

Una vez que Link aprueba, Restock envía la solicitud pagada a Zinc con un token de pago compartido de Link como credencial, y Zinc procesa el pago a través de Stripe. pympp se encarga del formato MPP.

La herramienta de pago lee el token desde un archivo privado del sandbox, lo elimina después de usarlo y devuelve solo un resumen público al modelo. El token por sí solo no impone los detalles del carrito, por lo que la herramienta también verifica el pedido contra lo que el usuario revisó y confirma que la aprobación sigue siendo reciente.

Confirmar el pedido

El pedido del comercio asciende a $21.18 ($14.99 por los bolígrafos, $1.20 de impuestos, $4.99 de envío), dentro de la asignación de $22. El usuario paga $22.18, incluida la tarifa de Zinc, y Zinc reembolsa los otros $0.82.

Budget breakdown for the pens order: $25 budget, $23 approved, $22.18 paid, $0.82 refunded
A dónde va el dinero en el pedido de los bolígrafos, con precios ilustrativos. El usuario aprueba $23 en Link contra un presupuesto de $25, paga $22.18 y recibe $0.82 de vuelta.

Restock confirma en Slack una vez que Zinc informa order_placed, y comparte el seguimiento cuando el comercio realiza el envío. Más allá de los precios ilustrativos, ejecutamos Restock de extremo a extremo en un despliegue alojado: un pedido en vivo llegó order_placed, y el reembolso esperado se procesó.

Para empezar

El código está en langchain-samples/restock-agent, y su README describe la configuración y el despliegue paso a paso. La guía de configuración de Slack de MDA cubre cómo conectar la aplicación de Slack.

Restock es una muestra: admite entregas en EE. UU. y solo en USD, una oficina por despliegue y pagos desde la propia cartera del solicitante.

Restock tiene tres modos. Configura RESTOCK_MODE para elegir uno, y pruébalos en orden:

  1. Ensayo (rehearsal): productos ficticios y una aprobación simulada. Requiere una clave de API de OpenAI y un espacio de trabajo de LangSmith con acceso a Managed Deep Agents.
  2. Aprobación de enlace de prueba (link-test): búsqueda real de Zinc y una aprobación real de Link, sin compra. Añade una cartera de Link, una clave de API de Zinc, una cuenta de búsqueda de Zinc con fondos y los datos de entrega.
  3. Compra en vivo (live): un pago real y un pedido real en un minorista.

El patrón se traslada a cualquier agente que gaste dinero. Deja que el agente busque y construya el carrito, mantén el límite de gasto y las aprobaciones en código que el modelo no pueda tocar, y cuenta un pedido como realizado solo cuando el minorista lo confirme.

Prueba Restock. Cuéntanos qué te parece y comparte lo que construyas sobre él.

Fuente original

LangChain Blog

Notas sobre el contenido

La publicación original y los derechos pertenecen a la fuente.

Traducción automática · Consulte el original