本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置包入门
本演练将您从零变为代理在运行时读取的版本控制配置包。您将创建一个包,对其进行更新以生成新版本,读取配置并查看版本历史记录。
开始前的准备工作
请确保:
-
将代理部署到 AgentCore Runtime 的 AgentCore CLI 项目(或按照以下附录创建支持配置包的项目)
-
AWS 具有
bedrock-agentcore和权限的证书bedrock-agentcore-control(请参阅先决条件)
boto3 示例中使用了以下常量。用你自己的值替换它们:
REGION = "us-west-2" BUNDLE_ID = "myAgentConfig-a1b2c3d4e5" # from create response COMPONENT_ARN = "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/MyAgent-abc123"
步骤 1:创建配置包
使用代理的初始配置创建捆绑包。该套件存储由组件 ARN 键入的键值对(系统提示、型号、温度、工具描述)。
例
第 2 步:更新捆绑包
运行批量评估并发现代理的响应过于冗长后,更新系统提示符。每次更新都会创建一个新的不可变版本。
例
第 3 步:阅读捆绑包
检索当前配置以验证更新是否生效。
例
第 4 步:比较版本
比较两个版本,看看到底发生了什么变化:
例
后续步骤
附录:集成了配置包的代理代码
以下代理代码使用BeforeModelCallEvent挂钩模式在运行时读取活动配置包。代理在模块级别创建一次,挂接会在每次模型调用之前动态更新系统提示符。配置包更改无需重新启动即可立即生效。
-
SDK 要求:需要 1.8 或更高
bedrock-agentcore-sdk-python版本。该get_config_bundle()方法从此版本开始可用。BedrockAgentCoreContext
将其另存为您的代理的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()