Integraciones de marcos para pagos AgentCore
AgentCore payments se integra con los marcos de agentes más populares para proporcionar un procesamiento de pagos automatizado. Cada marco utiliza un patrón de integración diferente:
-
Strands Agents: Plugin-based integración mediante ganchos
-
LangGraph— Middleware-based integración que agrupa las llamadas a las herramientas
Strands Agents
El complemento de AgentCore pagos proporciona un procesamiento de pagos automatizado para los agentes de Strands. Es compatible con el protocolo x402 Payment Required
Instalación
pip install 'bedrock-agentcore[strands-agents]'
Configura y usa el complemento
from strands import Agent from strands_tools import http_request from bedrock_agentcore.payments.integrations.config import AgentCorePaymentsPluginConfig from bedrock_agentcore.payments.integrations.strands.plugin import AgentCorePaymentsPlugin # Configure the plugin config = AgentCorePaymentsPluginConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", payment_session_id="payment-session-xuzrnUCd7RT725G", region="us-west-2", ) # Create the plugin plugin = AgentCorePaymentsPlugin(config=config) # Create agent with the plugin agent = Agent( system_prompt="You are a helpful assistant that can access paid APIs.", tools=[http_request], plugins=[plugin], ) # Use the agent -- 402 responses are automatically handled agent("access https://drvd12nxpcyd5.cloudfront.net/market-recap")
Gestionar las interrupciones de pago
Cuando se produce un error en el procesamiento de pagos, el complemento guarda el error y provoca una interrupción. Tu aplicación debería gestionar estas interrupciones:
result = agent("Access the premium endpoint at https://api.example.com/premium") while result.stop_reason == "interrupt": responses = [] for interrupt in result.interrupts: if interrupt.name.startswith("payment-failure-"): reason = interrupt.reason exception_type = reason.get("exceptionType") if exception_type == "PaymentInstrumentConfigurationRequired": plugin.config.update_payment_instrument_id("payment-instrument-new123") responses.append({ "interruptResponse": { "interruptId": interrupt.id, "response": "Payment instrument configured. Please retry.", } }) elif exception_type == "PaymentSessionConfigurationRequired": plugin.config.update_payment_session_id("payment-session-new456") responses.append({ "interruptResponse": { "interruptId": interrupt.id, "response": "Payment session configured. Please retry.", } }) else: responses.append({ "interruptResponse": { "interruptId": interrupt.id, "response": f"Payment failed: {reason.get('exceptionMessage')}", } }) result = agent(responses)
Desactivar el pago automático
Para acceder únicamente a las herramientas de visibilidad de los pagos sin una ejecución automática de los pagos (por ejemplo, para mantener al día una lógica humana o personalizada antes de realizar cualquier transacción de pago), desactiva el procesamiento automático:
config = AgentCorePaymentsPluginConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-east-1:123456789012:payment-manager/pm-abc123", user_id="user-123", region="us-east-1", auto_payment=False, # Disable automatic 402 processing )
Preferencias de red
Puedes especificar las redes de cadena de bloques preferidas para el procesamiento de pagos:
config = AgentCorePaymentsPluginConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-east-1:123456789012:payment-manager/pm-abc123", user_id="user-123", payment_instrument_id="payment-instrument-xyz789", payment_session_id="payment-session-def456", region="us-east-1", network_preferences_config=["eip155:8453", "base-sepolia", "solana-mainnet"], )
Si no se especifica, el sistema utiliza un orden de preferencia predeterminado que da prioridad a la red principal de Solana y a Base (Ethereum L2) a cambio de tarifas de transacción bajas.
Opciones de configuración
En la siguiente tabla se muestran los parámetros: AgentCorePaymentsPluginConfig
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
|
|
|
Sí |
ARN del recurso Bedrock Payment Manager AgentCore |
|
|
|
Sí |
Identificador único del usuario |
|
|
|
No |
ID del instrumento de pago. Se puede configurar más adelante mediante |
|
|
|
No |
ID de sesión de pago. Se puede configurar más adelante mediante |
|
|
|
No |
AWS región para el administrador de pagos |
|
|
|
No |
Lista de CAIP-2 identificadores de red por orden de preferencia |
|
|
|
No (valor predeterminado: |
Si se deben procesar automáticamente 402 requisitos de pago |
|
|
|
No (valor predeterminado: |
Interrupción máxima de reintentos por uso de la herramienta. Configúrelo en 0 para deshabilitar las interrupciones |
|
|
|
No |
El nombre del agente se propaga mediante el encabezado HTTP en las llamadas a la API |
Built-in herramientas de agente
El complemento registra tres herramientas que los agentes pueden utilizar para consultar la información de pago en tiempo de ejecución:
| Herramienta | Description (Descripción) |
|---|---|
|
|
Recupera detalles sobre un instrumento de pago específico |
|
|
Enumere todos los instrumentos de pago de un usuario |
|
|
Recupera los detalles de una sesión de pago (presupuesto, estado, caducidad) |
Estas herramientas permiten a los agentes tomar decisiones informadas sobre los métodos de pago y los límites de pago durante las conversaciones. Para obtener más detalles y ejemplos integrales, consulta la documentación de Strands Agents
LangGraph
El middleware de AgentCore pagos proporciona un procesamiento de pagos automatizado para LangGraph los agentes. Es compatible con el protocolo x402 Payment Required
Instalación
pip install 'bedrock-agentcore[langgraph]'
Configure y utilice el middleware
from langchain.agents import create_agent from bedrock_agentcore.payments.integrations.langgraph import ( AgentCorePaymentsConfig, AgentCorePaymentsMiddleware, ) config = AgentCorePaymentsConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", region="us-west-2", auto_session=True, ) payments = AgentCorePaymentsMiddleware(config) agent = create_agent( model="us.anthropic.claude-sonnet-4-20250514-v1:0", tools=[], middleware=[payments], ) result = agent.invoke({"messages": [{"role": "user", "content": "access https://drvd12nxpcyd5.cloudfront.net/market-recap"}]}) print(result)
Cómo funciona el middleware
El middleware intercepta las llamadas a las herramientas y gestiona el flujo de pagos x402 en seis pasos:
-
El agente realiza una llamada a una herramienta que da como resultado una solicitud HTTP a un punto final de pago.
-
El terminal responde con el protocolo HTTP 402: Se requiere el pago y una carga útil de pago x402.
-
El middleware intercepta la respuesta 402 y extrae los requisitos de pago.
-
El middleware llama
ProcessPaymental instrumento de pago y a la sesión para generar una prueba criptográfica. -
El middleware vuelve a intentar la solicitud original con el encabezado del comprobante de pago adjunto.
-
El punto final valida la prueba y devuelve el contenido solicitado al agente.
Gestión de errores con devoluciones de llamada
Utiliza la función de on_payment_error devolución de llamada para gestionar los impagos sin problemas:
from bedrock_agentcore.payments.integrations.langgraph import ( AgentCorePaymentsConfig, AgentCorePaymentsMiddleware, ErrorResolution, ) def handle_payment_error(error, context): """Custom error handler for payment failures.""" if "InsufficientFunds" in str(error): return ErrorResolution.STOP # Stop the agent return ErrorResolution.RETRY # Retry with updated config config = AgentCorePaymentsConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", region="us-west-2", auto_session=True, on_payment_error=handle_payment_error, )
La ErrorResolution enumeración ofrece las siguientes opciones:
| Valor | Comportamiento |
|---|---|
|
|
Vuelva a intentar el pago con la configuración actual |
|
|
Detenga el procesamiento y devuelva el error al agente |
|
|
Omite el pago y continúa sin el contenido de pago |
Desactivar el pago automático
Para deshabilitar el procesamiento automático de pagos y solicitar la aprobación explícita del pago:
config = AgentCorePaymentsConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", region="us-west-2", auto_payment=False, # Disable automatic 402 processing )
Cuando auto_payment es asíFalse, el middleware envía 402 respuestas al agente sin procesarlas, lo que permite una lógica personalizada o la aprobación humana antes del pago.
Lista de herramientas de pago permitidas
Restrinja las herramientas que pueden activar los pagos automáticos:
config = AgentCorePaymentsConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", region="us-west-2", auto_session=True, tool_allowlist=["http_request", "web_fetch", "mcp_call"], )
Solo las llamadas a herramientas desde las herramientas de la lista de permitidos activan el procesamiento automático de los pagos. Las llamadas de herramientas desde otras herramientas se transmiten sin que se intercepte el pago.
Preferencias de red
Puedes especificar las redes de cadena de bloques preferidas para el procesamiento de pagos:
config = AgentCorePaymentsConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", region="us-west-2", auto_session=True, network_preferences_config=["eip155:8453", "base-sepolia", "solana-mainnet"], )
Si no se especifica, el sistema utiliza un orden de preferencia predeterminado que da prioridad a la red principal de Solana y a Base (Ethereum L2) a cambio de tarifas de transacción bajas.
Opciones de configuración
En la siguiente tabla se muestran los parámetros: AgentCorePaymentsConfig
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
|
|
|
Sí |
ARN del recurso Bedrock Payment Manager AgentCore |
|
|
|
Sí |
Identificador único del usuario |
|
|
|
No |
ID del instrumento de pago |
|
|
|
No |
ID de sesión de pago. No es obligatorio cuando |
|
|
|
No |
AWS región del administrador de pagos |
|
|
|
No (valor predeterminado: |
Crea o reutiliza automáticamente una sesión de pago |
|
|
|
No (valor predeterminado: |
Tiempo de caducidad de las sesiones creadas automáticamente en minutos |
|
|
|
No (valor predeterminado: |
Importe máximo de gasto para sesiones creadas automáticamente |
|
|
|
No (valor predeterminado: |
Moneda para los límites de gasto de sesión creados automáticamente |
|
|
|
No (valor predeterminado: |
Si se deben procesar automáticamente 402 requisitos de pago |
|
|
|
No |
Lista de CAIP-2 identificadores de red por orden de preferencia |
|
|
|
No |
Lista de nombres de herramientas que pueden activar pagos automáticos. Si no se establece, todas las herramientas pueden activar los pagos |
|
|
|
No (valor predeterminado: |
Número máximo de reintentos de pago por llamada a la herramienta |
|
|
|
No |
Se invoca la función de devolución de llamada en caso de impago |
|
|
|
No |
La función de devolución de llamada se invoca cuando el pago se realiza correctamente |
|
|
|
No |
La función de devolución de llamada se invoca antes de que comience el procesamiento del pago |
|
|
|
No |
El nombre del agente se propaga mediante un encabezado HTTP en las llamadas a la API |
|
|
|
No |
URL de punto final personalizada para el servicio de AgentCore pagos |
Built-in herramientas para agentes
El middleware registra cinco herramientas que los agentes pueden utilizar para consultar y gestionar la información de pago en tiempo de ejecución:
| Herramienta | Description (Descripción) |
|---|---|
|
|
Recupera detalles sobre un instrumento de pago específico |
|
|
Enumere todos los instrumentos de pago de un usuario |
|
|
Recupera los detalles de una sesión de pago (presupuesto, estado, caducidad) |
|
|
Recupera el saldo actual de un instrumento de pago |
|
|
Enumere todas las sesiones de pago de un usuario |
Sincronización frente a asíncrona
El LangGraph middleware admite la ejecución sincrónica y asíncrona:
Sincrónico:
result = agent.invoke({"messages": [{"role": "user", "content": "access the paid endpoint"}]})
Asincrónico:
result = await agent.ainvoke({"messages": [{"role": "user", "content": "access the paid endpoint"}]})
Ambos modos admiten las mismas opciones de configuración y el mismo comportamiento de procesamiento de pagos. Utilice async cuando se integre con marcos asíncronos o cuando gestione varios agentes simultáneos.