Integrazioni di framework per i pagamenti AgentCore
AgentCore payments si integra con i più diffusi framework di agenti per fornire un'elaborazione automatizzata dei pagamenti. Ogni framework utilizza un modello di integrazione diverso:
-
Strands Agents: Plugin-based integrazione tramite hook
-
LangGraph— Middleware-based integrazione che racchiude le chiamate agli strumenti
Agenti Strands
Il plug-in per AgentCore i pagamenti fornisce l'elaborazione automatizzata dei pagamenti per Strands Agents. Supporta il protocollo x402 Payment Required
Installazione
pip install 'bedrock-agentcore[strands-agents]'
Configura e usa il 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")
Gestione delle interruzioni di pagamento
Quando l'elaborazione del pagamento fallisce, il plugin memorizza l'errore e genera un'interruzione. L'applicazione dovrebbe gestire queste interruzioni:
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)
Disabilitazione del pagamento automatico
Per accedere solo agli strumenti di visibilità dei pagamenti senza esecuzione automatica dei pagamenti (ad esempio, per mantenere attiva una logica umana o personalizzata prima di qualsiasi transazione di pagamento), disattiva l'elaborazione automatica:
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 )
Preferenze di rete
Puoi specificare le reti blockchain preferite per l'elaborazione dei pagamenti:
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"], )
Se non specificato, il sistema utilizza un ordine di preferenza predefinito che dà la priorità alla mainnet e alla base di Solana (Ethereum L2) per commissioni di transazione basse.
Opzioni di configurazione
La tabella seguente elenca i parametri: AgentCorePaymentsPluginConfig
| Parametro | Tipo | Campo obbligatorio | Descrizione |
|---|---|---|---|
|
|
|
Sì |
ARN della risorsa Bedrock Payment Manager AgentCore |
|
|
|
Sì |
Identificatore univoco per l'utente |
|
|
|
No |
ID dello strumento di pagamento. Può essere impostato in un secondo momento tramite |
|
|
|
No |
ID della sessione di pagamento. Può essere impostato in un secondo momento tramite |
|
|
|
No |
AWS regione per il gestore dei pagamenti |
|
|
|
No |
Elenco degli CAIP-2 identificatori di rete in ordine di preferenza |
|
|
|
No (impostazione predefinita: |
Se elaborare automaticamente 402 requisiti di pagamento |
|
|
|
No (impostazione predefinita: |
Numero massimo di tentativi di interruzione per utilizzo dello strumento. Impostare su 0 per disabilitare le interruzioni |
|
|
|
No |
Nome dell'agente propagato tramite l'intestazione HTTP nelle chiamate API |
Built-in strumenti per agenti
Il plugin registra tre strumenti che gli agenti possono utilizzare per interrogare le informazioni di pagamento in fase di esecuzione:
| Strumento | Description |
|---|---|
|
|
Recupera i dettagli su uno strumento di pagamento specifico |
|
|
Elenca tutti gli strumenti di pagamento per un utente |
|
|
Recupera i dettagli su una sessione di pagamento (budget, stato, scadenza) |
Questi strumenti consentono agli agenti di prendere decisioni informate sui metodi di pagamento e sui limiti di pagamento durante le conversazioni. Per maggiori dettagli ed esempi completi, consulta la documentazione di Strands
LangGraph
Il middleware per AgentCore i pagamenti fornisce l'elaborazione automatizzata dei pagamenti per gli agenti. LangGraph Supporta il protocollo x402 Payment Required
Installazione
pip install 'bedrock-agentcore[langgraph]'
Configura e usa il 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)
Come funziona il middleware
Il middleware intercetta le chiamate allo strumento e gestisce il flusso di pagamento x402 in sei passaggi:
-
L'agente effettua una chiamata allo strumento che genera una richiesta HTTP a un endpoint a pagamento.
-
L'endpoint risponde con HTTP 402 Payment Required e un payload di pagamento x402.
-
Il middleware intercetta la risposta 402 ed estrae i requisiti di pagamento.
-
Il middleware chiama lo strumento di pagamento e la sessione per
ProcessPaymentgenerare una prova crittografica. -
Il middleware riprova la richiesta originale con l'intestazione della prova di pagamento allegata.
-
L'endpoint convalida la prova e restituisce il contenuto richiesto all'agente.
Gestione degli errori con i callback
Usa il on_payment_error callback per gestire con garbo gli errori di pagamento:
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 fornisce le seguenti opzioni:
| Valore | Comportamento |
|---|---|
|
|
Riprova il pagamento con la configurazione corrente |
|
|
Interrompi l'elaborazione e restituisci l'errore all'agente |
|
|
Salta il pagamento e continua senza i contenuti a pagamento |
Disabilitazione del pagamento automatico
Per disabilitare l'elaborazione automatica dei pagamenti e richiedere l'approvazione esplicita del pagamento:
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 )
In auto_payment tal casoFalse, il middleware invia 402 risposte all'agente senza elaborarle, consentendo una logica personalizzata o l'approvazione umana prima del pagamento.
Elenco degli strumenti di pagamento consentiti
Limita gli strumenti che possono attivare pagamenti automatici:
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 le chiamate agli strumenti dagli strumenti nella lista consentita attivano l'elaborazione automatica dei pagamenti. Le chiamate agli strumenti provenienti da altri strumenti passano senza intercettazione dei pagamenti.
Preferenze di rete
Puoi specificare le reti blockchain preferite per l'elaborazione dei pagamenti:
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"], )
Se non specificato, il sistema utilizza un ordine di preferenza predefinito che dà la priorità alla mainnet e alla base di Solana (Ethereum L2) per commissioni di transazione basse.
Opzioni di configurazione
La tabella seguente elenca i parametri: AgentCorePaymentsConfig
| Parametro | Tipo | Campo obbligatorio | Descrizione |
|---|---|---|---|
|
|
|
Sì |
ARN della risorsa Bedrock Payment Manager AgentCore |
|
|
|
Sì |
Identificatore univoco per l'utente |
|
|
|
No |
ID dello strumento di pagamento |
|
|
|
No |
ID della sessione di pagamento. Non richiesto quando |
|
|
|
No |
AWS regione per il gestore dei pagamenti |
|
|
|
No (impostazione predefinita: |
Crea o riutilizza automaticamente una sessione di pagamento |
|
|
|
No (impostazione predefinita: |
Tempo di scadenza per le sessioni create automaticamente in minuti |
|
|
|
No (impostazione predefinita:) |
Importo massimo di spesa per le sessioni create automaticamente |
|
|
|
No (impostazione predefinita: |
Valuta per i limiti di spesa delle sessioni creati automaticamente |
|
|
|
No (impostazione predefinita: |
Se elaborare automaticamente 402 requisiti di pagamento |
|
|
|
No |
Elenco degli CAIP-2 identificatori di rete in ordine di preferenza |
|
|
|
No |
Elenco dei nomi degli strumenti che possono attivare pagamenti automatici. Se non è impostato, tutti gli strumenti possono attivare i pagamenti |
|
|
|
No (impostazione predefinita: |
Numero massimo di nuovi tentativi di pagamento per chiamata allo strumento |
|
|
|
No |
Funzione di callback richiamata in caso di mancato pagamento |
|
|
|
No |
Funzione di callback richiamata in caso di pagamento riuscito |
|
|
|
No |
Funzione di callback richiamata prima dell'inizio dell'elaborazione del pagamento |
|
|
|
No |
Nome dell'agente propagato tramite l'intestazione HTTP nelle chiamate API |
|
|
|
No |
URL endpoint personalizzato per il servizio di pagamento AgentCore |
Built-in strumenti per agenti
Il middleware registra cinque strumenti che gli agenti possono utilizzare per interrogare e gestire le informazioni di pagamento in fase di esecuzione:
| Strumento | Description |
|---|---|
|
|
Recupera i dettagli su uno strumento di pagamento specifico |
|
|
Elenca tutti gli strumenti di pagamento per un utente |
|
|
Recupera i dettagli su una sessione di pagamento (budget, stato, scadenza) |
|
|
Recupera il saldo corrente di uno strumento di pagamento |
|
|
Elenca tutte le sessioni di pagamento per un utente |
Sincronizzazione vs asincrona
Il LangGraph middleware supporta l'esecuzione sia sincrona che asincrona:
Sincrono:
result = agent.invoke({"messages": [{"role": "user", "content": "access the paid endpoint"}]})
Asincrono:
result = await agent.ainvoke({"messages": [{"role": "user", "content": "access the paid endpoint"}]})
Entrambe le modalità supportano le stesse opzioni di configurazione e lo stesso comportamento di elaborazione dei pagamenti. Usa async durante l'integrazione con framework asincroni o quando gestisci più agenti simultanei.