View a markdown version of this page

Guida introduttiva ai pacchetti di configurazione - Amazon Bedrock AgentCore

Guida introduttiva ai pacchetti di configurazione

Questa procedura dettagliata consente di passare da zero a un pacchetto di configurazione con versioni diverse che l'agente legge in fase di esecuzione. Creerai un pacchetto, lo aggiornerai per produrre una nuova versione, leggerai la configurazione e visualizzerai la cronologia delle versioni.

Prima di iniziare

Assicurati di:

Le seguenti costanti vengono utilizzate negli esempi di boto3. Sostituiscili con i tuoi valori:

REGION = "us-west-2" BUNDLE_ID = "myAgentConfig-a1b2c3d4e5" # from create response COMPONENT_ARN = "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/MyAgent-abc123"

Fase 1: Creare un pacchetto di configurazione

Crea un pacchetto con la configurazione iniziale del tuo agente. Il pacchetto memorizza le coppie chiave-valore (prompt di sistema, ID modello, temperatura, descrizioni degli strumenti) codificate dall'ARN del componente.

Esempio
AgentCore CLI
agentcore add config-bundle \ --name myAgentConfig \ --components '{"arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/MyAgent-abc123": {"configuration": {"system_prompt": "You are a helpful customer support assistant for Acme Store.", "model_id": "global.anthropic.claude-sonnet-4-5-20250929-v1:0"}}}' agentcore deploy

Dopo la distribuzione, la CLI stampa l'ID del pacchetto e l'ID della versione iniziale.

AWS SDK (boto3)
import boto3 import uuid client = boto3.client("bedrock-agentcore-control", region_name=REGION) response = client.create_configuration_bundle( bundleName="myAgentConfig", components={ COMPONENT_ARN: { "configuration": { "system_prompt": "You are a helpful customer support assistant for Acme Store.", "model_id": "global.anthropic.claude-sonnet-4-5-20250929-v1:0", "temperature": 0.7, } } }, description="Acme Store agent configuration", commitMessage="Initial configuration", clientToken=str(uuid.uuid4()), ) bundle_id = response["bundleId"] version_id = response["versionId"] print(f"Created bundle: {bundle_id}") print(f"Initial version: {version_id}")

Passaggio 2: aggiorna il pacchetto

Dopo aver eseguito una valutazione in batch e aver rilevato che le risposte dell'agente sono troppo dettagliate, aggiorna il prompt di sistema. Ogni aggiornamento crea una nuova versione immutabile.

Esempio
AgentCore CLI

Modifica la configurazione del pacchetto inagentcore.json, quindi ridistribuisci:

# Edit the system_prompt in agentcore.json, then: agentcore deploy

La CLI rileva il pacchetto esistente e crea automaticamente una nuova versione.

AWS SDK (boto3)
response = client.update_configuration_bundle( bundleId=bundle_id, components={ COMPONENT_ARN: { "configuration": { "system_prompt": ( "You are a helpful customer support assistant for Acme Store. " "Be concise. Confirm actions taken in one sentence." ), "model_id": "global.anthropic.claude-sonnet-4-5-20250929-v1:0", "temperature": 0.5, } } }, parentVersionIds=[version_id], commitMessage="Reduce verbosity: shorter prompt, lower temperature", clientToken=str(uuid.uuid4()), ) new_version_id = response["versionId"] print(f"New version: {new_version_id}")

Fase 3: Leggi il pacchetto

Recupera la configurazione corrente per verificare che l'aggiornamento abbia avuto effetto.

Esempio
AgentCore CLI
agentcore config-bundle versions --name myAgentConfig

L'output mostra la cronologia delle versioni con i messaggi di commit:

Version                               Branch     Created              Message
────────────────────────────────────────────────────────────────────────────────
a1b2c3d4-...                          mainline   2026-04-28 03:00     Reduce verbosity: shorter prompt, lower temperature
e5f6a7b8-...                          mainline   2026-04-28 02:30     Initial configuration
AWS SDK (boto3)
response = client.get_configuration_bundle(bundleId=bundle_id) config = response["components"][COMPONENT_ARN]["configuration"] print(f"Version: {response['versionId']}") print(f"System prompt: {config['system_prompt']}") print(f"Model: {config['model_id']}") print(f"Temperature: {config.get('temperature')}")

Fase 4: Confronta le versioni

Differenzia due versioni per vedere esattamente cosa è cambiato:

Esempio
AgentCore CLI
agentcore config-bundle diff --name myAgentConfig --from <version-1> --to <version-2>
AWS SDK (boto3)
# Fetch both versions v1 = client.get_configuration_bundle_version(bundleId=bundle_id, versionId=version_id) v2 = client.get_configuration_bundle_version(bundleId=bundle_id, versionId=new_version_id) # Compare v1_config = v1["components"][COMPONENT_ARN]["configuration"] v2_config = v2["components"][COMPONENT_ARN]["configuration"] for key in set(list(v1_config.keys()) + list(v2_config.keys())): if v1_config.get(key) != v2_config.get(key): print(f"{key}:") print(f" before: {v1_config.get(key)}") print(f" after: {v2_config.get(key)}")

Fasi successive

  • Esegui una valutazione in batch per misurare l'impatto della modifica della configurazione. Vedi Valutazione Batch.

  • Utilizza i consigli per consentire al servizio di generare automaticamente prompt ottimizzati. Vedi Raccomandazioni.

  • Imposta A/B i test per confrontare due versioni del pacchetto con traffico in tempo reale. Vedi A/B test.

  • Espandi la tua configurazione per gli esperimenti senza influire sulla linea principale. Vedi Aggiornare un pacchetto di configurazione.

Appendice: Codice dell'agente con integrazione del pacchetto di configurazione

Il seguente codice dell'agente legge il pacchetto di configurazione attivo in fase di esecuzione utilizzando lo schema hook. BeforeModelCallEvent L'agente viene creato una sola volta a livello di modulo e l'hook aggiorna dinamicamente il prompt di sistema prima di ogni chiamata al modello. Le modifiche al pacchetto di configurazione hanno effetto immediato senza riavvio.

  • Requisiti SDK: è richiesta la bedrock-agentcore-sdk-python versione 1.8 o successiva. Il get_config_bundle() metodo on BedrockAgentCoreContext è disponibile a partire da questa versione.

Salva questo file come quello del tuo agente: main.py

"""Agent with Configuration Bundle integration — hooks pattern.""" from strands import Agent, tool from strands.models.bedrock import BedrockModel from strands.hooks.events import BeforeModelCallEvent from bedrock_agentcore.runtime import BedrockAgentCoreApp, BedrockAgentCoreContext app = BedrockAgentCoreApp() DEFAULT_MODEL_ID = "global.anthropic.claude-sonnet-4-5-20250929-v1:0" DEFAULT_SYSTEM_PROMPT = ( "You are a helpful customer support assistant for Acme Store. " "Help customers with their orders, returns, and shipping questions." ) @tool def lookup_order(order_id: str) -> str: """Look up an order by ID.""" orders = { "ORD-1001": {"status": "delivered", "item": "Blue T-Shirt (L)", "total": "$29.99"}, "ORD-1002": {"status": "in_transit", "item": "Running Shoes (10)", "total": "$89.99"}, "ORD-1003": {"status": "delayed", "item": "Wireless Headphones", "days_late": 5, "total": "$59.99"}, } return str(orders.get(order_id, {"error": f"Order {order_id} not found"})) @tool def check_shipping_status(order_id: str) -> str: """Check detailed shipping status for an order.""" statuses = { "ORD-1002": "Package is with carrier, on schedule for April 5.", "ORD-1003": "Package delayed 5 days. Policy: 3+ days late qualifies for 15% discount.", } return statuses.get(order_id, f"No active shipment found for {order_id}.") TOOLS = [lookup_order, check_shipping_status] def dynamic_config_hook(event: BeforeModelCallEvent): """Read config bundle and apply system prompt before every model call.""" config_bundle = BedrockAgentCoreContext.get_config_bundle() event.agent.system_prompt = config_bundle.get("system_prompt", DEFAULT_SYSTEM_PROMPT) agent = Agent( model=BedrockModel(model_id=DEFAULT_MODEL_ID), tools=TOOLS, system_prompt=DEFAULT_SYSTEM_PROMPT, ) agent.hooks.add_callback(BeforeModelCallEvent, dynamic_config_hook) @app.entrypoint def invoke(payload, context): result = agent(payload.get("prompt", "Hello")) return {"response": str(result)} if __name__ == "__main__": app.run()