0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Hướng Dẫn Cài Đặt AI Agents Với Amazon Bedrock

Đăng vào 1 ngày trước

• 9 phút đọc

Hướng Dẫn Cài Đặt AI Agents Với Amazon Bedrock AgentCore Runtime

Amazon Bedrock AgentCore Runtime là bước tiến lớn trong việc triển khai AI agents ở quy mô lớn. Nền tảng serverless này cho phép các nhà phát triển chạy AI agents với thời gian thực thi kéo dài, cách ly phiên và khả năng giám sát tích hợp. Trong bài viết này, chúng ta sẽ đi qua một hướng dẫn cài đặt hoàn chỉnh cho ứng dụng mẫu Bedrock AgentCore, thể hiện khả năng của nền tảng này.

Bedrock AgentCore Runtime Là Gì?

Bedrock AgentCore Runtime là nền tảng container serverless của AWS được thiết kế đặc biệt cho AI agents. Khác với các hàm serverless truyền thống có giới hạn thời gian nghiêm ngặt, AgentCore hỗ trợ khối lượng công việc lên đến 8 giờ, rất phù hợp cho các quy trình AI phức tạp cần thời gian xử lý kéo dài.

Các Tính Năng Chính

  • Thời Gian Thực Thi Kéo Dài: Hỗ trợ khối lượng công việc lên đến 8 giờ cho các tác vụ AI phức tạp.
  • Cách Ly Phiên: Mỗi phiên người dùng chạy trong một microVM riêng biệt.
  • Khung Không Phụ Thuộc: Tương thích với LangGraph, Strands, CrewAI hoặc các khung tùy chỉnh.
  • Linh Hoạt Mô Hình: Hoạt động với bất kỳ LLM nào (Bedrock, OpenAI, v.v.)
  • Khả Năng Giám Sát Tích Hợp: Theo dõi CloudWatch tích hợp sẵn.

Tổng Quan Kiến Trúc

Ứng dụng mẫu bao gồm ba thành phần chính:

  1. CDK Infrastructure Stack: Tạo kho ECR và vai trò thực thi IAM.
  2. AI Agent Runtime: Agent được container hóa sử dụng khung Strands.
  3. Tích Hợp Bộ Nhớ: Bedrock Memory cho sự liên tục trong cuộc trò chuyện.
Copy
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   CDK Stack     │    │  AgentCore       │    │  Bedrock        │
│                 │    │  Runtime         │    │  Memory         │
│ • ECR Repo      │───▶│                  │───▶│                 │
│ • IAM Roles     │    │ • Agent Container│    │ • Session Store │
│ • Permissions   │    │ • Strands Agent  │    │ • Context       │
└─────────────────┘    └──────────────────┘    └─────────────────┘

Các Điều Kiện Tiên Quyết

Trước khi bắt đầu, hãy đảm bảo bạn đã có:

  • AWS CLI được cấu hình với thông tin xác thực phù hợp.
  • Node.js 18+ và npm.
  • Python 3.10+.
  • AWS CDK v2 được cài đặt toàn cục: npm install -g aws-cdk.
  • Docker (tùy chọn, để kiểm tra cục bộ).

Quyền AWS Cần Thiết

Thông tin xác thực AWS của bạn cần có các quyền sau:

  • bedrock-agentcore:*
  • iam:CreateRole, iam:AttachRolePolicy
  • ecr:CreateRepository
  • cloudformation:*
  • logs:*

Ngoài ra, bạn cũng cần kích hoạt mô hình Claude 4 tại khu vực của bạn:

Thiết Lập Hạ Tầng Với CDK

CDK stack tạo ra các tài nguyên AWS cần thiết:

Kho ECR

Copy
const agentRepository = new ecr.Repository(this, 'AgentRepository', {
  repositoryName: 'bedrock-agentcore-sample',
  removalPolicy: cdk.RemovalPolicy.DESTROY,
});

Vai Trò Thực Thi IAM

Copy
const executionRole = new iam.Role(this, 'AgentCoreExecutionRole', {
  assumedBy: new iam.ServicePrincipal('bedrock-agentcore.amazonaws.com'),
  inlinePolicies: {
    AgentCorePolicy: new iam.PolicyDocument({
      statements: [
        new iam.PolicyStatement({
          actions: [
            'bedrock:InvokeModel',
            'bedrock-agent:CreateEvent',
            'bedrock-agent:GetMemory',
            'logs:CreateLogGroup',
            // ... các quyền bổ sung
          ],
          resources: ['*'],
        }),
      ],
    }),
  },
});

Triển Khai Agent

Agent cốt lõi sử dụng khung Strands với tích hợp Bộ Nhớ Bedrock:

Copy
from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent
import boto3

app = BedrockAgentCoreApp()
agent = Agent()

@app.entrypoint
def invoke(payload):
    user_message = payload.get("prompt", "Xin chào!")
    session_id = "custom-session-12345678901234567890123"

    # Tích hợp bộ nhớ cho tính liên tục trong cuộc trò chuyện
    memory_client = boto3.client('bedrock-agent', region_name='eu-central-1')

    # Lưu trữ tin nhắn người dùng và lấy ngữ cảnh
    # Nhận phản hồi của agent với ngữ cảnh được cải thiện
    # Lưu trữ phản hồi của agent cho ngữ cảnh tương lai

    return {"result": result.message, "sessionId": session_id}

Quy Trình Triển Khai

Quá trình triển khai được tự động hóa thông qua một kịch bản Python xử lý cả việc triển khai hạ tầng và agent:

1. Triển Khai Hạ Tầng

Copy
npm install
npx cdk bootstrap --region eu-central-1
npx cdk deploy

2. Triển Khai Agent

Copy
cd agent
pip install bedrock-agentcore strands-agents bedrock-agentcore-starter-toolkit
agentcore configure -e my_agent.py --region eu-central-1
agentcore launch

3. Sau khi triển khai, bạn sẽ thấy runtime trong giao diện AgentCore:

Chi Tiết Cấu Hình

Cấu hình agent được quản lý thông qua .bedrock_agentcore.yaml:

Copy
default_agent: my_agent
agents:
  my_agent:
    name: my_agent
    entrypoint: my_agent.py
    platform: linux/arm64
    aws:
      region: eu-central-1
      network_configuration:
        network_mode: PUBLIC
      observability:
        enabled: true

Tích Hợp Bộ Nhớ

Một trong những tính năng nổi bật là tích hợp với Bộ Nhớ Bedrock cho sự liên tục trong cuộc trò chuyện:

Copy
# Lưu trữ các sự kiện cuộc trò chuyện
memory_client.create_event(
    memoryId=MEMORY_ID,
    actorId=ACTOR_ID,
    sessionId=session_id,
    eventTimestamp=datetime.utcnow(),
    payload={"message": user_message, "role": "user"}
)

# Lấy ngữ cảnh cuộc trò chuyện
memory_response = memory_client.get_memory(
    memoryId=MEMORY_ID,
    actorId=ACTOR_ID,
    sessionId=session_id
)

Kiểm Tra Agent Của Bạn

Khi đã triển khai, hãy kiểm tra agent của bạn:

Copy
cd agent
agentcore invoke '{"prompt": "Bạn có thể giúp tôi điều gì?"}'

Triển Khai Bổ Sung

Hãy nhanh chóng thêm CloudFront và Api Gateway với Lambda sẽ gọi agent này:

Lambda sẽ trông như sau:

Copy
import json
import boto3
import uuid
from datetime import datetime

def handler(event, context):
    try:
        # Phân tích yêu cầu
        body = json.loads(event['body'])
        prompt = body.get('prompt', '')

        # Tạo client AgentCore (cùng khu vực)
        client = boto3.client('bedrock-agentcore', region_name='eu-central-1')

        # Tạo ID phiên nhất quán (giống như agent sử dụng)
        session_id = 'custom-session-12345678901234567890123'

        # Gọi AgentCore Runtime
        payload = json.dumps({"prompt": prompt})

        response = client.invoke_agent_runtime(
            agentRuntimeArn='arn:aws:bedrock-agentcore:eu-central-1:{accountId}:runtime/my_agent-{customString}',
            runtimeSessionId=session_id,
            payload=payload,
            qualifier="DEFAULT"
        )

        # Phân tích phản hồi
        response_body = b''.join(response['response']).decode('utf-8')
        response_data = json.loads(response_body)

        return {
            'statusCode': 200,
            'headers': {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'POST, OPTIONS',
                'Access-Control-Allow-Headers': 'Content-Type'
            },
            'body': json.dumps({
                'response': response_data['result']['content'][0]['text'],
                'sessionId': session_id
            })
        }

    except Exception as e:
        print(f"Error: {str(e)}")
        return {
            'statusCode': 500,
            'headers': {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*'
            },
            'body': json.dumps({'error': str(e)})
        }

Api Gateway định nghĩa:

Tôi cũng đã thêm CloudFront với S3 như OAC origin. Vì vậy, một khi truy cập URL CloudFront của chúng ta, chúng ta có thể thấy:

Thực Hành Tốt Nhất Cho Sản Xuất

Bảo Mật

  • Sử dụng các chính sách IAM theo nguyên tắc tối thiểu.
  • Thực hiện quản lý phiên đúng cách.
  • Kích hoạt ghi log CloudWatch để giám sát.

Hiệu Suất

  • Cấu hình giới hạn CPU và bộ nhớ phù hợp.
  • Sử dụng nền tảng ARM64 để tối ưu chi phí.
  • Thực hiện xử lý lỗi và thử lại đúng cách.

Giám Sát

  • Kích hoạt khả năng giám sát trong cấu hình agent.
  • Thiết lập cảnh báo CloudWatch cho tỷ lệ lỗi.
  • Giám sát thời gian thực thi và chi phí.

Dọn Dẹp

Để xóa tất cả tài nguyên:

Copy
npx cdk destroy
# Xóa AgentCore Runtime từ console hoặc CLI

Kết Luận

Bedrock AgentCore Runtime cung cấp một nền tảng mạnh mẽ cho việc triển khai AI agents với các tính năng cấp doanh nghiệp. Sự kết hợp giữa thời gian thực thi kéo dài, cách ly phiên và khả năng giám sát tích hợp làm cho nó lý tưởng cho các quy trình AI phức tạp.

Ứng dụng mẫu chứng minh cách:

  • Thiết lập hạ tầng với CDK.
  • Triển khai agents với tích hợp bộ nhớ.
  • Thực hiện tính liên tục trong cuộc trò chuyện.
  • Giám sát và quan sát hiệu suất của agent.

Cài đặt này cung cấp một nền tảng vững chắc cho việc xây dựng các AI agents sẵn sàng cho sản xuất có thể xử lý các tác vụ phức tạp, dài hạn trong khi duy trì ngữ cảnh cuộc trò chuyện qua các phiên.


Để biết thêm chi tiết, hãy tham khảo Tài Liệu AWS Bedrock AgentCore.

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