Nếu bạn từng xây dựng tác nhân AI bằng một “cỗ máy” if/else khổng lồ, bạn sẽ thấy hệ thống nhanh chóng khó mở rộng và dễ hỏng. Strands Agents chọn cách khác: để mô hình tự lập kế hoạch, còn bạn cung cấp prompt và danh sách công cụ. Đây là SDK mã nguồn mở từ AWS, phát hành tháng 5/2025 theo Giấy phép Apache 2.0, và được dùng cho các tác nhân production trong một số nhóm của Amazon như Amazon Q Developer và AWS Glue.
Strands Agents thực sự là gì
Strands Agents là SDK để xây dựng và chạy tác nhân AI với ít mã nhất có thể. Một tác nhân Strands thường gồm ba phần:
- Model: mô hình LLM xử lý suy luận và quyết định bước tiếp theo.
- System prompt: mô tả vai trò, ràng buộc và cách tác nhân nên hành xử.
- Tools: các hàm hoặc dịch vụ bên ngoài mà mô hình có thể gọi.
Vòng lặp hoạt động như sau:
User request
-> Model đọc prompt
-> Model quyết định có cần gọi tool không
-> Tool chạy và trả kết quả
-> Model đọc kết quả
-> Lặp lại cho đến khi hoàn thành
Strands hỗ trợ Python và TypeScript. AWS công bố mã nguồn mở sau khi đã sử dụng nội bộ, nên thiết kế của SDK này thiên về nhu cầu production hơn là demo đơn giản. Từ khi ra mắt bản preview, Strands đã vượt 150 nghìn lượt tải trên PyPI và đạt phiên bản 1.0, bổ sung các nền tảng đa tác nhân và hỗ trợ giao thức Agent-to-Agent (A2A).
Nếu bạn đã dùng các SDK tác nhân khác, mô hình này sẽ khá quen thuộc. Strands nằm cùng nhóm với LangGraph và Google ADK, nhưng Strands dựa nhiều hơn vào mô hình để điều khiển luồng thay vì bắt bạn tự vẽ graph ngay từ đầu.
Triết lý dựa trên mô hình thay vì điều phối mã cứng
Nhiều framework tác nhân yêu cầu bạn định nghĩa workflow trước: node, edge, điều kiện, router, trạng thái trung gian. Cách này kiểm soát tốt, nhưng mỗi tính năng mới thường kéo theo việc sửa graph và kiểm thử lại nhiều nhánh.
Strands đảo ngược trách nhiệm đó. Bạn mô tả mục tiêu, cung cấp công cụ, rồi để mô hình tự quyết định trình tự gọi công cụ.
| Phương pháp | Bạn định nghĩa | Luồng điều khiển nằm ở | Chi phí khi thêm khả năng mới |
|---|---|---|---|
| Điều phối mã cứng | Node, edge, điều kiện, routing | Mã graph của bạn | Sửa graph, kiểm thử lại các nhánh |
| Dựa trên mô hình với Strands | Prompt + danh sách tool | Vòng lặp suy luận của model | Thêm tool, cập nhật prompt |
Đánh đổi chính là tính xác định. Tác nhân dựa trên mô hình nhanh hơn để xây dựng và thích ứng, nhưng không luôn chạy theo cùng một đường đi. Với workflow cần kiểm toán nghiêm ngặt hoặc phải chạy y hệt mỗi lần, bạn vẫn có thể thêm cấu trúc bằng hook, multi-agent pattern hoặc dùng framework graph-first.
Tạo một tác nhân Strands tối thiểu
Một tác nhân Strands cơ bản chỉ cần import Agent, định nghĩa tool bằng @tool, rồi gọi agent như một hàm.
from strands import Agent, tool
@tool
def word_count(text: str) -> int:
"""Đếm số từ trong một đoạn văn bản."""
return len(text.split())
agent = Agent(
system_prompt="Bạn là một trợ lý viết ngắn gọn.",
tools=[word_count],
)
response = agent("Có bao nhiêu từ trong câu này?")
print(response)
Trong ví dụ này:
-
@toolbiến một hàm Python thành công cụ mà model có thể gọi. - Docstring mô tả công dụng của tool.
- Type hint tạo schema đầu vào để model biết cần truyền gì.
-
agent(...)chạy vòng lặp suy luận cho đến khi model quyết định hoàn tất.
Bạn không cần tạo registry riêng cho tool. Hàm Python thông thường là đủ.
Thiết kế tool cho Strands
Tool là điểm mà tác nhân tương tác với hệ thống bên ngoài: database, REST API, file, queue, dịch vụ nội bộ hoặc MCP server.
Một tool tốt nên có:
- Tên hàm rõ ràng.
- Docstring mô tả chính xác khi nào nên dùng.
- Type hint đầy đủ.
- Output ổn định, dễ parse.
- Xử lý lỗi rõ ràng.
Ví dụ tool gọi API nội bộ:
from strands import tool
import requests
@tool
def get_order_status(order_id: str) -> dict:
"""
Lấy trạng thái đơn hàng theo order_id.
Dùng khi người dùng hỏi về tình trạng giao hàng hoặc thanh toán.
"""
response = requests.get(
f"https://api.example.com/orders/{order_id}",
timeout=10,
)
response.raise_for_status()
return response.json()
Khi viết tool kiểu này, nên kiểm thử API độc lập trước khi đưa vào agent. Nếu endpoint trả sai schema, timeout hoặc lỗi xác thực, tác nhân có thể trông như “model suy luận sai” trong khi nguyên nhân thật là backend.
Nhà cung cấp mô hình
Strands linh hoạt về nhà cung cấp model. Mặc định là Amazon Bedrock. Một tác nhân mới sẽ dùng Claude Sonnet trong vùng us-west-2, nhưng ID model mặc định có thể thay đổi theo phiên bản SDK, vì vậy nên kiểm tra phiên bản đang cài thay vì hard-code.
Strands có thể dùng:
- Các model Amazon Bedrock hỗ trợ tool use và streaming.
- Claude qua Anthropic API.
- Llama qua Llama API.
- Ollama cho phát triển cục bộ.
- Các nhà cung cấp khác như OpenAI thông qua LiteLLM.
Điểm quan trọng: bạn thay đổi object model, không cần viết lại toàn bộ agent. Prompt, tool và vòng lặp agent vẫn giữ nguyên. Điều này hữu ích khi bạn muốn prototype bằng Ollama cục bộ, sau đó triển khai production trên Bedrock.
Hỗ trợ đa tác nhân và MCP
Một agent đơn lẻ đủ cho nhiều tác vụ, nhưng hệ thống thực tế thường cần nhiều agent chuyên trách.
Strands 1.0 bổ sung các nền tảng cho multi-agent, gồm:
- Agent-as-Tool: một agent được expose như tool để agent khác gọi.
- Swarm-style coordination: nhiều agent cùng phối hợp giải quyết vấn đề.
- A2A protocol: agent Strands có thể giao tiếp với agent xây bằng framework khác.
MCP cũng là một phần quan trọng. Model Context Protocol là tiêu chuẩn mở để kết nối model với tool và nguồn dữ liệu. Với Strands, bạn có thể kết nối MCP server đã có, lấy danh sách tool của server đó và truyền cho agent như các tool thông thường.
Cách tiếp cận này hữu ích nếu bạn đã có MCP server cho database, GitHub, file system hoặc dịch vụ nội bộ. Thay vì viết lại integration, bạn tái sử dụng tool MCP hiện có.
Điểm cần lưu ý: khi agent phụ thuộc vào MCP server, bạn cần giám sát và kiểm thử các endpoint đó giống như mọi dịch vụ production khác.
Triển khai tác nhân Strands
Strands được thiết kế để đi từ local đến production mà không đổi framework. Quy trình triển khai thường là:
- Chạy agent cục bộ với tool đơn giản hoặc mock API.
- Kiểm thử prompt và tool output.
- Thêm logging/observability.
- Đóng gói app Python hoặc TypeScript.
- Triển khai lên runtime phù hợp.
Một số đích triển khai phổ biến:
- Amazon Bedrock AgentCore cho runtime tác nhân được quản lý.
- AWS Lambda cho agent ngắn hạn, chạy theo sự kiện.
- AWS Fargate hoặc Amazon EKS cho dịch vụ container chạy dài hạn.
- Docker nếu bạn muốn tự quản lý môi trường chạy.
Vì agent là ứng dụng Python hoặc TypeScript thông thường, cách đóng gói cũng giống ứng dụng backend khác: dependency, biến môi trường, secret, logging và CI/CD.
AWS cũng tài liệu hóa các hook quan sát, giúp bạn theo dõi model đã quyết định gì, gọi tool nào và tool trả về gì.
Apidog phù hợp ở đâu
Strands xây dựng tác nhân. Nó không xây dựng các API mà tác nhân gọi.
Trong thực tế, tác nhân Strands thường phụ thuộc vào hai nhóm endpoint HTTP:
- API của nhà cung cấp LLM đứng sau model.
-
API backend hoặc tool API đứng sau các hàm
@toolvà MCP server.
Nếu các endpoint đó lỗi, agent có thể thất bại theo cách giống như lỗi model: trả lời sai, gọi tool lặp lại, dừng sớm hoặc không xử lý được kết quả.
Apidog là nơi bạn kiểm thử, mock và xác nhận các API bên dưới trước khi agent sử dụng chúng.
Một số cách dùng thực tế:
- Mock endpoint model hoặc tool trong khi bạn lặp lại logic agent, để không tốn token hoặc chạm rate limit mỗi lần chạy. Bài viết về cách xây dựng bộ kiểm thử tác nhân AI với Apidog minh họa mô hình này.
- Xác nhận cấu trúc response của tool để phát hiện payload sai trong test thay vì production. Xem hướng dẫn về API assertions để xác thực field, type và status code.
- Dựng mock API mô phỏng response thành công, lỗi, timeout hoặc dữ liệu thiếu mà agent cần xử lý.
- Quản lý API key theo môi trường để agent ở dev, staging và prod gọi đúng backend mà không hard-code secret vào mã nguồn.
Ví dụ, trước khi expose tool get_order_status cho Strands, bạn có thể:
- Tạo request trong Apidog cho endpoint
/orders/{order_id}. - Thêm assertion cho
status,order_id,estimated_delivery. - Tạo mock response cho đơn hàng đang giao, đã hủy và không tồn tại.
- Chạy agent với mock endpoint.
- Chỉ chuyển sang API thật khi schema đã ổn định.
Nói rõ hơn: Apidog không phải framework tác nhân và không điều phối agent. Strands vẫn là phần xử lý suy luận. Apidog là lớp kiểm thử và mock cho hệ thống API mà agent phụ thuộc vào. Bạn có thể tải xuống Apidog và kết nối mock cho tool endpoint trong vài phút.
Khi nào nên dùng Strands Agents
Dùng Strands khi:
- Bạn muốn phát triển agent nhanh.
- Bạn tin tưởng model tự lập kế hoạch và chọn tool.
- Bạn đang dùng AWS hoặc Amazon Bedrock.
- Bạn muốn bắt đầu với một agent rồi mở rộng sang multi-agent.
- Bạn muốn tận dụng MCP tool mà không viết integration từ đầu.
Cân nhắc framework khác nếu:
- Workflow phải hoàn toàn xác định.
- Mỗi nhánh cần được định nghĩa và kiểm toán trước.
- Bạn cần graph rõ ràng cho từng trạng thái.
- Quy trình nghiệp vụ không được phép phụ thuộc nhiều vào quyết định runtime của model.
Cách hiểu thực tế: model-driven agent và graph-driven agent giải quyết các vấn đề khác nhau. Strands nghiêng về hướng model-driven.
Câu hỏi thường gặp
Strands Agents có miễn phí và mã nguồn mở không?
Có. Strands Agents là mã nguồn mở theo Giấy phép Apache 2.0, với mã nguồn trên GitHub. SDK không có phí cấp phép. Bạn chỉ trả tiền cho model và tài nguyên hạ tầng như Bedrock inference, Lambda execution hoặc container runtime.
Tôi có bắt buộc phải dùng Amazon Bedrock với Strands không?
Không. Bedrock là provider mặc định, nhưng Strands cũng hỗ trợ Anthropic API, Llama API, Ollama cho local development và các provider khác thông qua LiteLLM. Bạn thay đổi object model, còn prompt và tool có thể giữ nguyên.
Strands khác gì framework dựa trên graph?
Strands được điều khiển bởi model: bạn cung cấp prompt và tool, model quyết định các bước. Framework dựa trên graph yêu cầu bạn định nghĩa luồng điều khiển bằng node và edge. Strands nhanh hơn để xây dựng và thích ứng; graph framework dễ dự đoán và kiểm soát hơn.
Làm sao kiểm thử các API mà tác nhân Strands phụ thuộc vào?
Hãy kiểm thử API độc lập với agent. Tạo mock endpoint, xác nhận schema response, kiểm tra status code, timeout và lỗi xác thực. Một công cụ như Apidog có thể xử lý mock và assertion. Hướng dẫn kiểm thử ChatGPT API với Apidog cũng bao gồm xác thực, streaming và kiểm thử tool-calling liên quan trực tiếp đến backend của agent.
Kết luận
Strands Agents cung cấp cách xây dựng tác nhân khá gọn: định nghĩa model, prompt và tool, rồi để model chạy vòng lặp. SDK hỗ trợ từ một agent đến multi-agent, có MCP và A2A, đồng thời triển khai tốt trong hệ sinh thái AWS.
Phần Strands xử lý suy luận. Phần bạn cần làm chắc là API bên dưới: endpoint của model provider, tool backend và MCP server. Mock, kiểm thử và xác nhận các endpoint đó trước khi đưa vào agent sẽ giúp lỗi xuất hiện trong test thay vì production.

Top comments (0)