View a markdown version of this page

Introducción a los paquetes de configuración - Amazon Bedrock AgentCore

Introducción a los paquetes de configuración

En este tutorial, se pasa de cero a un paquete de configuración versionado que el agente lee en tiempo de ejecución. Creará un paquete, lo actualizará para producir una nueva versión, leerá la configuración y verá el historial de versiones.

Antes de empezar

Asegúrese de que:

  • Un proyecto de AgentCore CLI con un agente implementado en AgentCore Runtime (o siga el siguiente apéndice para crear uno compatible con paquetes de configuración)

  • AWS credenciales con permisos para bedrock-agentcore y bedrock-agentcore-control (consulte los requisitos previos)

En los ejemplos de boto3 se utilizan las siguientes constantes. Sustitúyalas por sus propios valores:

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

Paso 1: Crear un paquete de configuración

Cree un paquete con la configuración inicial de su agente. El paquete almacena pares clave-valor (indicador del sistema, ID de modelo, temperatura, descripciones de herramientas) codificados por el ARN del componente.

ejemplo
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

Tras la implementación, la CLI imprime el ID del paquete y el ID de la versión inicial.

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}")

Paso 2: Actualizar el paquete

Tras realizar una evaluación por lotes e identificar que las respuestas de su agente son demasiado detalladas, actualice el indicador del sistema. Cada actualización crea una nueva versión inmutable.

ejemplo
AgentCore CLI

Edite la configuración del paquete en y, a continuaciónagentcore.json, vuelva a implementar:

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

La CLI detecta el paquete existente y crea una nueva versión automáticamente.

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}")

Paso 3: Lea el paquete

Recupera la configuración actual para comprobar que la actualización se ha realizado.

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

El resultado muestra el historial de versiones con los mensajes de confirmación:

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')}")

Paso 4: Compara las versiones

Divida dos versiones para ver exactamente qué ha cambiado:

ejemplo
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)}")

Siguientes pasos

  • Realice una evaluación por lotes para medir el impacto del cambio de configuración. Consulte Evaluación de lotes.

  • Utilice las recomendaciones para permitir que el servicio genere automáticamente mensajes optimizados. Consulte las recomendaciones.

  • Configura A/B las pruebas para comparar dos versiones de paquetes con el tráfico en directo. Consulte A/B las pruebas.

  • Ramifique su configuración para realizar experimentos sin afectar a la línea principal. Consulte Actualizar un paquete de configuración.

Apéndice: Código de agente con integración de paquete de configuración

El siguiente código de agente lee el paquete de configuración activo en tiempo de ejecución mediante el BeforeModelCallEvent patrón de enlaces. El agente se crea una vez a nivel de módulo y el enlace actualiza dinámicamente el indicador del sistema antes de cada llamada al modelo. Los cambios en el paquete de configuración se aplican inmediatamente sin necesidad de reiniciarse.

  • Requisito del SDK: se requiere la bedrock-agentcore-sdk-python versión 1.8 o posterior. El get_config_bundle() método on BedrockAgentCoreContext está disponible a partir de esta versión.

Guarda esto como el de tu 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()