0
0
Lập trình
Admin Team
Admin Teamtechmely

Tự động hóa tài liệu AWS với AgentCore và Strands Agents

Đăng vào 5 tháng trước

• 7 phút đọc

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
  • 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ổ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:

strands-agentcore-browseruse

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:

Copy
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 Copy
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 Copy
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).

  1. Khởi động một phiên AgentCore Browser
  2. Lấy URL WebSocket CDP
  3. Chuyển nó sang Browser Use
  4. Cung cấp các tiêu đề xác thực thích hợp
python Copy
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ủa browser-use, tôi đã gặp phải lỗi WebSocket 403. Hãy chắc chắn chỉ định nó trong requirements.txt:

Copy
browser-use<0.3.3

Triển khai lên AgentCore Runtime

Tạo một môi trường ảo:

Copy
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.):

Copy
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:

Copy
{
  "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:

Copy
agentcore launch

Đối với các lần triển khai lại:

Copy
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:

Copy
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

  1. 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.

  2. Độ 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.

  3. 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.

  4. Tối ưu hóa chi phí: Thiết kế các quy tắc để giảm thiểu chi phí.

  5. Hỗ trợ phiên bản: Sử dụng NoncurrentVersionTransitionNoncurrentVersionExpiration cho 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ể.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào