Mục lục bài viết

Tổng Quan

Hiện nay các AI Agent đang phát triển với tốc độ rất nhanh.Với Strands Agents SDK, bạn có thể tạo ra một AI Agent hoàn chỉnh chỉ với vài dòng code đơn giản.

Tại sao chọn Strands Agents SDK?


Strands Agents SDK nổi bật với những ưu điểm sau:

  • Đơn giản: Chỉ cần vài dòng code để có một Agent hoạt động
  • Linh hoạt: Hỗ trợ nhiều model provider khác nhau (Amazon Bedrock, Anthropic, LiteLLM, Ollama…)
  • Mạnh mẽ: Tích hợp sẵn nhiều tools và khả năng mở rộng
  • Dễ debug: Hệ thống logging chi tiết giúp theo dõi hoạt động

Yêu cầu trước khi bắt đầu

Phần mềm cần thiết:

  • Python 3.10 trở lên
  • AWS Account với quyền truy cập Amazon Bedrock
  • Model access cho Claude 3.7 trong Amazon Bedrock
  • AWS credentials được cấu hình đúng


Kiểm tra AWS Credentials:
Nếu bạn chưa quen với việc cấu hình AWS credentials, hãy tham khảo AWS CLI configuration guide.

Bước 1: Thiết lập môi trường phát triển

Tạo Virtual Environment

#Tạo virtual environment

python -m venv .venv

#Kích hoạt environment

#Trên Windows:

.venv\Scripts\activate

#Trên macOS/Linux:

source .venv/bin/activate

Cài đặt các package cần thiết

#Cài đặt Strands Agents SDK và tools
pip install strands-agents strands-agents-tools


Giải thích:

  • strands-agents: Package chính cung cấp SDK core
  • strands-agents-tools: Bộ công cụ built-in để mở rộng khả năng cho agent

Bước 2: Tạo AI Agent đầu tiên

Code cơ bản – Subject Expert Agent

Tạo file subject_expert.py với nội dung sau:

from strands import Agent

#Tạo agent với system prompt chuyên biệt

subject_expert = Agent(
system_prompt="""Bạn là một Chuyên gia Khoa học Máy tính chuyên
giải thích các khái niệm kỹ thuật một cách rõ ràng và súc tích.
Chuyên môn của bạn bao gồm ngôn ngữ lập trình, cấu trúc dữ liệu,
thuật toán, kiến trúc máy tính và các nguyên lý kỹ thuật phần mềm.

Khi giải thích các khái niệm:
1. Bắt đầu với định nghĩa rõ ràng, súc tích
2. Cung cấp ví dụ ngắn gọn nhưng phù hợp để minh họa khái niệm
3. Giải thích ứng dụng thực tế khi có thể
4. Tránh thuật ngữ không cần thiết, nhưng giới thiệu terminology quan trọng
5. Xem xét góc độ người học và làm cho các chủ đề phức tạp dễ tiếp cận

Mục tiêu của bạn là giúp người học xây dựng hiểu biết vững chắc về
các nguyên lý cơ bản của khoa học máy tính.
"""

)

#Response sẽ được tự động in ra bởi Agent class

response = subject_expert("Giải thích khái niệm đệ quy trong lập trình.")


Chạy chương trình

python subject_expert.py


🎉Chúc mừng! Vừa tạo ra AI Agent đầu tiên chỉ với vài dòng code!

Hiểu rõ cách hoạt động

Phân tích Agent Object

subject_expert = Agent(
system_prompt="""Bạn là một Chuyên gia Khoa học Máy tính…"""
)


System Prompt là linh hồn của Agent:

  • Định nghĩa tính cách và chuyên môn của Agent
  • Thiết lập các nguyên tắc hoạt động
  • Tạo ra phong cách giao tiếp nhất quán


Agent Invocation (Gọi Agent)

response = subject_expert("Giải thích khái niệm đệ quy trong lập trình.")

Dòng code này thực hiện:

  • Gửi câu hỏi đến agent
  • Agent xử lý bằng AI model
  • Response được tự động in ra console
  • Response cũng được trả về dưới dạng string để sử dụng tiếp


Model mặc định


Strands Agents sử dụng Amazon Bedrock với Claude 3.7 làm mặc định, tự động xử lý:

  • Tạo kết nối bảo mật đến Amazon Bedrock
  • Format request và response cho Claude 3.7
  • Quản lý token limits và các yêu cầu đặc thù của model


Ưu điểm lớn: Strands hỗ trợ nhiều model provider, bạn có thể dễ dàng chuyển đổi giữa:

  • Amazon Bedrock
  • Anthropic
  • LiteLLM
  • Ollama
  • Llama API
  • Hoặc tự build custom provider

Bước 3: Kích hoạt Debug Logging

Để hiểu rõ Agent hoạt động như thế nào thêm logging như sau:

import logging
from strands import Agent

# Kích hoạt debug logging cho Strands

logging.getLogger("strands").setLevel(logging.DEBUG)
logging.basicConfig(
format="%(levelname)s | %(name)s | %(message)s",
handlers=[logging.StreamHandler()]
)

# Tạo Subject Expert agent

subject_expert = Agent(
system_prompt="""Bạn là một Chuyên gia Khoa học Máy tính…"""
)

# Đặt câu hỏi

response = subject_expert("Giải thích khái niệm đệ quy trong lập trình.")

Output logging mẫu:

DEBUG | strands.models.bedrock | config=<{'model_id': 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'}> | initializing
DEBUG | strands.tools.registry | tool_modules=<[]> | discovered
DEBUG | strands.event_loop.streaming | model= | streaming messages
DEBUG | strands.types.models | formatting request
DEBUG | strands.types.models | invoking model
DEBUG | strands.types.models | got response from model


Logging giúp bạn theo dõi:

  • Khởi tạo model
  • Khám phá và đăng ký tools
  • Xử lý event loop
  • Luồng request/response
  • Quản lý conversation
  • Lỗi và cảnh báo

Bước 4: Tạo phiên Interactive Session


Để có trải nghiệm tương tác tốt hơn, hãy nâng cấp script:

import logging
from strands import Agent

# Kích hoạt debug logging (tùy chọn)
# logging.getLogger("strands").setLevel(logging.DEBUG)
# logging.basicConfig(
#     format="%(levelname)s | %(name)s | %(message)s",
#     handlers=[logging.StreamHandler()]
# )

# Tạo Subject Expert agent
subject_expert = Agent(
    system_prompt="""Bạn là một Chuyên gia Khoa học Máy tính chuyên
    giải thích các khái niệm kỹ thuật một cách rõ ràng và súc tích. 
    Chuyên môn của bạn bao gồm ngôn ngữ lập trình, cấu trúc dữ liệu, 
    thuật toán, kiến trúc máy tính và các nguyên lý kỹ thuật phần mềm.
    
    Khi giải thích các khái niệm:
    1. Bắt đầu với định nghĩa rõ ràng, súc tích
    2. Cung cấp ví dụ phù hợp để minh họa khái niệm
    3. Giải thích ứng dụng thực tế khi có thể
    4. Tránh thuật ngữ không cần thiết, nhưng giới thiệu terminology quan trọng
    5. Xem xét góc độ người học và làm cho các chủ đề phức tạp dễ tiếp cận
    
    Mục tiêu của bạn là giúp người học xây dựng hiểu biết vững chắc về
    các nguyên lý cơ bản của khoa học máy tính.
    """
)

def interactive_session():
    print("🤖 Chuyên gia Khoa học Máy tính AI Agent")
    print("(gõ 'exit' để thoát)")
    print("-" * 50)
    
    while True:
        # Nhận input từ user
        user_input = input("\n🔹 Câu hỏi của bạn: ")
        
        if user_input.lower() in ["exit", "quit", "bye", "thoát"]:
            print("👋 Tạm biệt!")
            break
        
        # Gửi input đến agent, sẽ tự động in response
        print("\n🤔 Đang suy nghĩ...\n")
        subject_expert(user_input)

if __name__ == "__main__":
    interactive_session()


Chạy interactive session:

python subject_expert.py

Giờ bạn có thể trò chuyện liên tục với AI Agent, đặt các câu hỏi khác nhau về khoa học máy tính!

Xử lý lỗi Cross-Region Inference


⚠️ Lưu ý quan trọng: Nếu gặp lỗi permission dù đã cấu hình credentials đúng, có thể bạn cần enable model access ở nhiều AWS regions.


Giải pháp:

  • Với người dùng ở Mỹ: Enable Claude model access ở tất cả US regions (us-east-1, us-east-2, us-west-2)
  • Với người dùng ở EU: Enable ở các EU regions tương ứng
  • Strands sử dụng inference profiles để route request đến region có latency thấp nhất

Tổng kết những gì đã học


Qua việc tạo AI Agent đơn giản này, chúng ta đã học được:


✅ Điều đã hoàn thành:

  • Dễ dàng bắt đầu: Chỉ vài dòng code là có Agent hoạt động
  • System prompts mạnh mẽ: Định nghĩa hành vi và chuyên môn của agent
  • SDK tự động hóa: Xử lý nhiều phức tạp (authentication, request formatting…)
  • Debug logging hữu ích: Cung cấp cái nhìn sâu sắc về hoạt động của agent
  • Tương tác linh hoạt: Có thể tạo session chat liên tục

🚀 Khả năng mở rộng:

  • Tích hợp tools tùy chỉnh
  • Kết nối với databases
  • Xử lý files và documents
  • Tích hợp APIs bên ngoài
  • Multi-agent collaboration

Tài nguyên tham khảo

  • Strands Agents Documentation
  • Amazon Bedrock User Guide
  • AWS CLI Configuration
  • Model Providers Documentation

💡 Tip cuối: Hãy thử nghiệm với các system prompt khác nhau để tạo ra những AI Agent với tính cách và chuyên môn độc đáo. Đây chính là chìa khóa để tạo ra những ứng dụng AI thực sự hữu ích!