View a markdown version of this page

Commencer à utiliser les packs de configuration - Base rocheuse de l'Amazonie AgentCore

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.

Commencer à utiliser les packs de configuration

Cette procédure pas à pas vous permet de passer de zéro à un ensemble de configuration versionné que votre agent lit au moment de l'exécution. Vous allez créer un bundle, le mettre à jour pour produire une nouvelle version, lire la configuration et consulter l'historique des versions.

Avant de commencer

Assurez-vous d’avoir :

  • Un projet AgentCore CLI avec un agent déployé sur AgentCore Runtime (ou suivez l'annexe ci-dessous pour en créer un avec prise en charge du bundle de configuration)

  • AWS informations d'identification avec autorisations pour bedrock-agentcore et bedrock-agentcore-control (voir Conditions préalables)

Les constantes suivantes sont utilisées dans les exemples boto3. Remplacez-les par vos propres valeurs :

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

Étape 1 : Création d'un ensemble de configuration

Créez un bundle avec la configuration initiale de votre agent. Le bundle stocke les paires clé-valeur (invite système, identifiant du modèle, température, descriptions des outils) saisies par l'ARN du composant.

Exemple
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

Après le déploiement, la CLI imprime l'ID du bundle et l'ID de version initiale.

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

Étape 2 : mettre à jour le bundle

Après avoir effectué une évaluation par lots et identifié que les réponses de votre agent sont trop détaillées, mettez à jour l'invite du système. Chaque mise à jour crée une nouvelle version immuable.

Exemple
AgentCore CLI

Modifiez la configuration du bundle dansagentcore.json, puis redéployez :

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

La CLI détecte le bundle existant et crée automatiquement une nouvelle version.

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

Étape 3 : Lisez le bundle

Récupérez la configuration actuelle pour vérifier que la mise à jour a pris effet.

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

La sortie affiche l'historique des versions avec des messages de validation :

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

Étape 4 : comparer les versions

Différenciez deux versions pour voir exactement ce qui a changé :

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

Étapes suivantes

  • Exécutez une évaluation par lots pour mesurer l'impact de votre modification de configuration. Voir Évaluation par lots.

  • Utilisez les recommandations pour permettre au service de générer automatiquement des invites optimisées. Voir les recommandations.

  • Configurez A/B des tests pour comparer deux versions du bundle avec le trafic réel. Voir A/B tests.

  • Branchez votre configuration à des fins d'expérimentation sans affecter la ligne principale. Voir Mettre à jour un ensemble de configuration.

Annexe : Code d'agent avec intégration du bundle de configuration

Le code d'agent suivant lit le bundle de configuration actif lors de l'exécution à l'aide du modèle BeforeModelCallEvent hook. L'agent est créé une fois au niveau du module et le hook met à jour dynamiquement l'invite du système avant chaque appel de modèle. Les modifications apportées au bundle de configuration prennent effet immédiatement sans redémarrage.

  • Configuration requise du SDK : la bedrock-agentcore-sdk-python version 1.8 ou ultérieure est requise. La get_config_bundle() méthode activée BedrockAgentCoreContext est disponible à partir de cette version.

Enregistrez ceci comme étant celui de votre agent 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(str(payload.get("prompt", "Hello"))) return {"response": str(result)} if __name__ == "__main__": app.run()