Commencer à utiliser les ensembles de configuration
Cette procédure pas à pas vous permet de passer de zéro à un bundle 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.
Rubriques
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 des bundles de configuration)
-
AWS informations d'identification avec autorisations pour
bedrock-agentcoreetbedrock-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 bundle de configuration
Créez un bundle avec la configuration initiale de votre agent. Le bundle stocke les paires clé-valeur (invite système, ID du modèle, température, descriptions des outils) saisies par l'ARN du composant.
Exemple
É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
Étape 3 : lire le bundle
Récupérez la configuration actuelle pour vérifier que la mise à jour a pris effet.
Exemple
Étape 4 : comparer les versions
Différenciez deux versions pour voir exactement ce qui a changé :
Exemple
Étapes suivantes
-
Exécutez une évaluation par lots pour mesurer l'impact de votre modification de configuration. Voir Évaluation des lots.
-
Utilisez les recommandations pour permettre au service de générer automatiquement des instructions optimisées. Voir les recommandations.
-
Configurez A/B des tests pour comparer deux versions de bundle avec le trafic réel. Voir les A/B tests.
-
Branchez votre configuration pour les tests sans affecter la ligne principale. Voir Mettre à jour un bundle de configuration.
Annexe : Code de l'agent avec intégration du bundle de configuration
Le code d'agent suivant lit le bundle de configuration actif au moment 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 du modèle. Les modifications du bundle de configuration prennent effet immédiatement sans redémarrage.
-
Configuration requise du SDK : la
bedrock-agentcore-sdk-pythonversion 1.8 ou ultérieure est requise. Laget_config_bundle()méthodeBedrockAgentCoreContextest 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(payload.get("prompt", "Hello")) return {"response": str(result)} if __name__ == "__main__": app.run()