Intégrations de cadres pour les paiements AgentCore
AgentCore les paiements s'intègrent aux frameworks d'agents populaires pour fournir un traitement automatisé des paiements. Chaque framework utilise un modèle d'intégration différent :
-
Strands Agents — Plugin-based intégration à l'aide de crochets
-
LangGraph— Middleware-based intégration qui permet de terminer les appels aux outils
Agents à mèches
Le plugin de AgentCore paiement fournit un traitement automatique des paiements pour Strands Agents. Il prend en charge le protocole x402 Payment Required
Installation
pip install 'bedrock-agentcore[strands-agents]'
Configurer et utiliser le plugin
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")
Gestion des interruptions de paiement
Lorsque le traitement du paiement échoue, le plugin enregistre l'échec et déclenche une interruption. Votre application doit gérer les interruptions suivantes :
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)
Désactiver le paiement automatique
Pour accéder uniquement aux outils de visibilité des paiements sans exécution automatique des paiements (par exemple, pour suivre une logique humaine ou personnalisée avant toute transaction de paiement), désactivez le traitement automatique :
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 )
Préférences réseau
Vous pouvez spécifier les réseaux de blockchain préférés pour le traitement des paiements :
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 ce n'est pas spécifié, le système utilise un ordre de préférence par défaut donnant la priorité au réseau principal de Solana et à la base (Ethereum L2) pour des frais de transaction peu élevés.
Options de configuration
Le tableau suivant répertorie les AgentCorePaymentsPluginConfig paramètres :
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
|
|
|
Oui |
ARN de la ressource Bedrock AgentCore Payment Manager |
|
|
|
Oui |
Identifiant unique pour l'utilisateur |
|
|
|
Non |
Identifiant de l'instrument de paiement. Peut être réglé ultérieurement via |
|
|
|
Non |
ID de session de paiement. Peut être réglé ultérieurement via |
|
|
|
Non |
AWS région pour le gestionnaire de paiement |
|
|
|
Non |
Liste des CAIP-2 identifiants réseau par ordre de préférence |
|
|
|
Non (par défaut : |
S'il faut traiter automatiquement 402 exigences de paiement |
|
|
|
Non (par défaut : |
Nombre maximum de tentatives d'interruption par outil utilisé. Régler sur 0 pour désactiver les interruptions |
|
|
|
Non |
Nom de l'agent propagé via un en-tête HTTP lors des appels d'API |
Built-in outils d'agent
Le plugin enregistre trois outils que les agents peuvent utiliser pour demander des informations de paiement lors de l'exécution :
| Outil | Description |
|---|---|
|
|
Récupérer les informations relatives à un instrument de paiement spécifique |
|
|
Répertorier tous les instruments de paiement pour un utilisateur |
|
|
Récupérer les détails d'une session de paiement (budget, statut, expiration) |
Ces outils permettent aux agents de prendre des décisions éclairées concernant les méthodes de paiement et les limites de paiement au cours des conversations. Pour plus de détails et des exemples de bout en bout, consultez la documentation Strands Agents
LangGraph
L'intergiciel de AgentCore paiement fournit un traitement automatisé des paiements aux LangGraph agents. Il prend en charge le protocole x402 Payment Required
Installation
pip install 'bedrock-agentcore[langgraph]'
Configuration et utilisation du 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)
Comment fonctionne le middleware
Le middleware intercepte les appels des outils et gère le flux de paiement x402 en six étapes :
-
L'agent effectue un appel d'outil qui entraîne une requête HTTP vers un point de terminaison payant.
-
Le point de terminaison répond par HTTP 402 Payment Required et une charge utile de paiement x402.
-
Le middleware intercepte la réponse 402 et extrait les exigences de paiement.
-
Le middleware fait appel à l'instrument
ProcessPaymentde paiement et à la session pour générer des preuves cryptographiques. -
Le middleware réessaie la demande d'origine avec l'en-tête de preuve de paiement joint.
-
Le point de terminaison valide la preuve et renvoie le contenu demandé à l'agent.
Gestion des erreurs avec les rappels
Utilisez le on_payment_error rappel pour gérer les échecs de paiement avec élégance :
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, )
L'ErrorResolutionenum propose les options suivantes :
| Value | Comportement |
|---|---|
|
|
Réessayer le paiement avec la configuration actuelle |
|
|
Arrêter le traitement et renvoyer l'erreur à l'agent |
|
|
Ignorez le paiement et continuez sans le contenu payant |
Désactiver le paiement automatique
Pour désactiver le traitement automatique des paiements et demander une approbation explicite du paiement :
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 )
Dans auto_payment ce casFalse, le middleware affiche 402 réponses à l'agent sans les traiter, ce qui permet une logique personnalisée ou une approbation humaine avant le paiement.
Liste des outils de paiement autorisés
Limitez les outils qui peuvent déclencher des paiements automatiques :
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"], )
Seuls les appels d'outils provenant d'outils figurant dans la liste d'autorisation déclenchent le traitement automatique des paiements. Les appels d'outils provenant d'autres outils sont transmis sans interception des paiements.
Préférences réseau
Vous pouvez spécifier les réseaux de blockchain préférés pour le traitement des paiements :
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 ce n'est pas spécifié, le système utilise un ordre de préférence par défaut donnant la priorité au réseau principal de Solana et à la base (Ethereum L2) pour des frais de transaction peu élevés.
Options de configuration
Le tableau suivant répertorie les AgentCorePaymentsConfig paramètres :
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
|
|
|
Oui |
ARN de la ressource Bedrock AgentCore Payment Manager |
|
|
|
Oui |
Identifiant unique pour l'utilisateur |
|
|
|
Non |
Identifiant de l'instrument de paiement |
|
|
|
Non |
ID de session de paiement. Non requis quand |
|
|
|
Non |
AWS région pour le gestionnaire de paiement |
|
|
|
Non (par défaut : |
Création ou réutilisation automatique d'une session de paiement |
|
|
|
Non (par défaut : |
Délai d'expiration des sessions créées automatiquement en minutes |
|
|
|
Non (par défaut : |
Montant maximal des dépenses pour les sessions créées automatiquement |
|
|
|
Non (par défaut : |
Devise pour les limites de dépenses de session créées automatiquement |
|
|
|
Non (par défaut : |
S'il faut traiter automatiquement 402 exigences de paiement |
|
|
|
Non |
Liste des CAIP-2 identifiants réseau par ordre de préférence |
|
|
|
Non |
Liste des noms d'outils pouvant déclencher des paiements automatiques. S'ils ne sont pas définis, tous les outils peuvent déclencher des paiements |
|
|
|
Non (par défaut : |
Nombre maximum de tentatives de paiement par appel à l'outil |
|
|
|
Non |
Fonction de rappel invoquée en cas d'échec de paiement |
|
|
|
Non |
Fonction de rappel invoquée en cas de paiement réussi |
|
|
|
Non |
Fonction de rappel invoquée avant le début du traitement du paiement |
|
|
|
Non |
Nom de l'agent propagé via un en-tête HTTP lors des appels d'API |
|
|
|
Non |
URL de point de terminaison personnalisée pour le service de AgentCore paiement |
Built-in outils d'agent
Le middleware enregistre cinq outils que les agents peuvent utiliser pour interroger et gérer les informations de paiement lors de l'exécution :
| Outil | Description |
|---|---|
|
|
Récupérer les informations relatives à un instrument de paiement spécifique |
|
|
Répertorier tous les instruments de paiement pour un utilisateur |
|
|
Récupérer les détails d'une session de paiement (budget, statut, expiration) |
|
|
Récupérez le solde actuel d'un instrument de paiement |
|
|
Répertorier toutes les sessions de paiement d'un utilisateur |
Synchronisation ou asynchrone
Le LangGraph middleware prend en charge l'exécution synchrone et asynchrone :
Synchrone :
result = agent.invoke({"messages": [{"role": "user", "content": "access the paid endpoint"}]})
Asynchrone :
result = await agent.ainvoke({"messages": [{"role": "user", "content": "access the paid endpoint"}]})
Les deux modes prennent en charge les mêmes options de configuration et le même comportement de traitement des paiements. Utilisez l'async lors de l'intégration à des frameworks asynchrones ou lors de la gestion simultanée de plusieurs agents.