Tự động hóa tài liệu AWS với Strands Agents, AgentCore Runtime và AgentCore Browser
Mùa hè vừa qua, tôi gần như không có thời gian hoặc năng lượng để khám phá công nghệ mới do những rắc rối nội bộ tại nơi làm việc và một thành viên trong gia đình phải nhập viện. Tuy nhiên, đến giữa tháng 9, tôi cuối cùng cũng có thời gian rảnh—vì vậy tôi quyết định tìm hiểu về Amazon Bedrock AgentCore, công nghệ đã thu hút được sự chú ý từ tháng 7.
AgentCore là bộ dịch vụ được thiết kế cho các hoạt động AI agent ở quy mô sản xuất. Nền tảng thực thi chính của nó, AgentCore Runtime, nhanh chóng thu hút sự chú ý nhờ tính dễ dàng khi triển khai.
Giới thiệu Amazon Bedrock AgentCore
Amazon Bedrock AgentCore cho phép bạn triển khai và vận hành các agent AI một cách an toàn ở bất kỳ quy mô nào. Tôi cũng đã thử kết hợp AgentCore Browser, một trình duyệt được quản lý cho các agent, để thực nghiệm với tự động hóa trình duyệt.
Dự án của tôi
Tôi đã tạo một agent với Strands Agents, triển khai nó trên AgentCore Runtime và kết nối nó với AgentCore Browser thông qua Browser Use.
Mục tiêu
Khi được hỏi như:
“Làm thế nào để tôi tạo một chính sách vòng đời cho một bucket S3?”,
agent này sẽ điều hướng qua các trang tài liệu chính thức của Amazon S3, trích xuất thông tin quan trọng và tạo ra một câu trả lời.
Yêu cầu trước khi thực hiện
- Python 3.11+
- Tài khoản AWS với thông tin xác thực đã được cấu hình
- Vùng:
us-west-2- Rất tiếc, AgentCore chưa có sẵn tại
ap-northeast-1
- Rất tiếc, AgentCore chưa có sẵn tại
- Truy cập vào mô hình cơ bản Claude Sonnet 4
- Tôi đã sử dụng
us.anthropic.claude-sonnet-4-20250514-v1:0
- Tôi đã sử dụng
Tổng quan về mã nguồn
Dưới đây là các điểm chính trong việc triển khai. Mã nguồn đầy đủ có sẵn trên GitHub:
Cấu trúc dự án
Vì chỉ có một công cụ trình duyệt, tôi đã giữ cho nó đơn giản:
src/
├── agents/
│ └── main_agent.py # Agent chính
├── runtime/
│ └── agentcore_app.py # Tích hợp với AgentCore Runtime
└── tools/
└── browser_tool.py # Logic tự động hóa trình duyệt
Triển khai Agent chính
Agent được xây dựng bằng Strands Agents. Nó sử dụng Claude Sonnet 4 làm mô hình và browse_url_tool cho tương tác trình duyệt.
python
def create_agent():
"""Tạo agent tìm kiếm tài liệu AWS"""
model = BedrockModel(
model_id='us.anthropic.claude-sonnet-4-20250514-v1:0',
params={
"max_tokens": 2048,
"temperature": 0.3,
"top_p": 0.8
},
region='us-west-2',
read_timeout=600,
)
agent = Agent(
name="aws_docs_agent",
model=model,
tools=[browse_url_tool],
system_prompt=SYSTEM_PROMPT
)
return agent
Kết nối với AgentCore Runtime
Tích hợp với AgentCore Runtime vô cùng đơn giản. Chỉ cần sử dụng @app.entrypoint decorator để hiện thực hóa một endpoint chấp nhận các yêu cầu.
python
app = BedrockAgentCoreApp()
@app.entrypoint
async def invoke(payload: Dict[str, Any], context) -> Dict[str, Any]:
try:
prompt = payload.get("prompt", "")
agent = create_agent()
result = agent(prompt)
return {
"result": str(result),
"status": "success"
}
except Exception as e:
return {
"error": f"Error: {str(e)}",
"status": "error"
}
Logic tự động hóa trình duyệt
Đây là phần quan trọng. Nó khởi động AgentCore Browser và điều khiển nó từ Browser Use thông qua Giao thức DevTools của Chrome (CDP).
- Khởi động một phiên AgentCore Browser
- Lấy URL WebSocket CDP
- Chuyển nó sang Browser Use
- Cung cấp các tiêu đề xác thực thích hợp
python
async def execute_browser_task(instruction: str, starting_url: str = "https://docs.aws.amazon.com") -> str:
client = BrowserClient(region=region)
try:
client.start()
ws_url, headers = client.generate_ws_headers()
browser_profile = BrowserProfile(
headers=headers,
timeout=180000,
)
browser_session = BrowserSession(
cdp_url=ws_url,
browser_profile=browser_profile,
keep_alive=True
)
await browser_session.start()
browser_use_agent = BrowserUseAgent(
task=instruction,
llm=bedrock_chat,
browser_session=browser_session,
)
result = await browser_use_agent.run()
return result
finally:
if browser_session:
await browser_session.close()
client.stop()
Lưu ý quan trọng
Nếu không chỉ định phiên bản củabrowser-use, tôi đã gặp phải lỗi WebSocket 403. Hãy chắc chắn chỉ định nó trongrequirements.txt:
browser-use<0.3.3
Triển khai lên AgentCore Runtime
Tạo một môi trường ảo:
python -m venv venv
source venv/bin/activate
Chạy thiết lập ban đầu (điều này tạo IAM roles, một kho Amazon Elastic Container Registry, v.v.):
agentcore configure --entrypoint src/runtime/agentcore_app.py --region us-west-2
Bạn sẽ cần phải gán thủ công chính sách này cho IAM role AmazonBedrockAgentCoreSDKRuntime-us-west-2-~ được tạo bởi agentcore configure để nó có thể sử dụng AgentCore Browser:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BrowserAccess",
"Effect": "Allow",
"Action": [
"bedrock-agentcore:StartBrowserSession",
"bedrock-agentcore:StopBrowserSession",
"bedrock-agentcore:ConnectBrowserAutomationStream",
"bedrock-agentcore:ConnectBrowserLiveViewStream",
"bedrock-agentcore:ListBrowserSessions",
"bedrock-agentcore:GetBrowserSession",
"bedrock-agentcore:ListBrowsers",
"bedrock-agentcore:GetBrowser"
],
"Resource": "*"
}
]
}
Sau đó triển khai:
agentcore launch
Đối với các lần triển khai lại:
agentcore launch --auto-update-on-conflict
Kết quả thực thi
Sau khi triển khai, tôi đã thử nghiệm tại địa phương:
agentcore invoke '{"prompt": "Làm thế nào để tôi tạo một chính sách vòng đời cho một bucket S3?"}'
Mất khoảng 10 phút (rất lâu), nhưng phản hồi là một giải thích chi tiết hoàn toàn về cách thiết lập các chính sách vòng đời Amazon S3—bao gồm cả CLI, Console, SDK, và các ví dụ XML/JSON.
Phản hồi:
{...}
Tôi cũng có thể thấy Live View của các hoạt động trình duyệt trong bảng điều khiển AgentCore Browser:
Tài liệu tham khảo
Các thực tiễn tốt nhất
-
Thay thế cấu hình: S3 thay thế toàn bộ cấu hình vòng đời khi bạn thêm một cái mới. Để cập nhật, hãy lấy cấu hình hiện tại trước, sửa đổi nó và sau đó áp dụng lại.
-
Độ trễ lan truyền: Mong đợi một vài phút độ trễ trước khi các cấu hình mới có hiệu lực hoàn toàn.
-
Kiểm tra: Luôn xác minh cấu hình của bạn sau khi áp dụng bằng cách kiểm tra số lượng quy tắc và thử nghiệm với các đối tượng mẫu.
-
Tối ưu hóa chi phí: Thiết kế các quy tắc để giảm thiểu chi phí.
-
Hỗ trợ phiên bản: Sử dụng
NoncurrentVersionTransitionvàNoncurrentVersionExpirationcho các bucket đã được kích hoạt phiên bản.
FAQ
1. Điều gì xảy ra nếu tôi không gán chính sách cho IAM role?
Nếu không gán chính sách phù hợp, agent của bạn sẽ không thể khởi động phiên bản trình duyệt và sẽ gặp lỗi.
2. Có thể sử dụng AgentCore tại các vùng khác không?
Hiện tại, AgentCore chỉ khả dụng tại một số vùng nhất định. Hãy kiểm tra trang tài liệu của Amazon để biết thêm thông tin.
3. Làm thế nào để tôi kiểm tra agent của mình?
Bạn có thể sử dụng lệnh agentcore invoke để kiểm tra agent của mình với các câu hỏi cụ thể.