Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Intégrations de cadres pour les paiements AgentCore
AgentCore payments s'intègre aux frameworks d'agents les plus 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 enveloppe les appels d'outils
Strands Agents
Le plugin de AgentCore paiement fournit un traitement automatique des paiements pour Strands Agents. Il prend en charge le protocole
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 maintenir une logique humaine ou personnalisée au courant 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 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 cela 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 Solana et à 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 |
ID 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 des paiements |
|
|
|
Non |
Liste des CAIP-2 identifiants de 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 nouvelles tentatives d'interruption par outil utilisé. Réglez sur 0 pour désactiver les interruptions |
|
|
|
Non |
Nom de l'agent propagé via l'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 interroger les informations de paiement lors de l'exécution :
| Outil | Description |
|---|---|
|
|
Récupérez les informations relatives à un instrument de paiement spécifique |
|
|
Répertorier tous les instruments de paiement d'un utilisateur |
|
|
Récupérez 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 lors des conversations. Pour plus de détails et des exemples complets, consultez la documentation
LangGraph
L'intergiciel de AgentCore paiement permet le traitement automatique des paiements pour les LangGraph agents. Il prend en charge le protocole
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 aux 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 terminal répond avec le protocole HTTP 402 Payment Required et une charge utile de paiement x402.
-
Le middleware intercepte la réponse 402 et extrait les exigences de paiement.
-
L'intergiciel appelle l'instrument
ProcessPaymentde paiement et la session pour générer une preuve cryptographique. -
Le middleware réessaie la demande d'origine avec l'en-tête du justificatif de paiement en pièce jointe.
-
Le terminal valide la preuve et renvoie le contenu demandé à l'agent.
Gestion des erreurs avec les callbacks
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'ErrorResolutionénumération fournit les options suivantes :
| Value | Comportement |
|---|---|
|
|
Réessayez le paiement avec la configuration actuelle |
|
|
Arrêtez le traitement et renvoyez 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 des paiements, procédez comme suit :
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 )
Lorsque auto_payment c'est le casFalse, le middleware envoie 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
Restreignez 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 des outils de la liste autorisée déclenchent le traitement automatique des paiements. Les appels d'outils provenant d'autres outils sont transmis sans interception de paiement.
Préférences réseau
Vous pouvez spécifier les réseaux 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 cela 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 Solana et à 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 |
ID de l'instrument de paiement |
|
|
|
Non |
ID de session de paiement. Non obligatoire quand |
|
|
|
Non |
AWS région pour le gestionnaire des paiements |
|
|
|
Non (par défaut : |
Créer ou réutiliser automatiquement une session de paiement |
|
|
|
Non (par défaut : |
Délai d'expiration des sessions créées automatiquement en minutes |
|
|
|
Non (par défaut : |
Montant maximum 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 de 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 nouvelles 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 des paiements |
|
|
|
Non |
Nom de l'agent propagé via l'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
L'intergiciel enregistre cinq outils que les agents peuvent utiliser pour interroger et gérer les informations de paiement au moment de l'exécution :
| Outil | Description |
|---|---|
|
|
Récupérez les informations relatives à un instrument de paiement spécifique |
|
|
Répertorier tous les instruments de paiement d'un utilisateur |
|
|
Récupérez les détails d'une session de paiement (budget, statut, expiration) |
|
|
Récupérer le solde actuel d'un instrument de paiement |
|
|
Répertorier toutes les sessions de paiement pour un utilisateur |
Synchronisation ou asynchronisation
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 async lors de l'intégration à des frameworks asynchrones ou lors de la gestion de plusieurs agents simultanés.