Nếu bạn đã xây dựng một tác nhân AI bằng cách kết nối một cỗ máy trạng thái if/else khổng lồ, bạn sẽ biết nó nhanh chóng trở nên dễ hỏng hóc như thế nào. Strands Agents đi theo hướng ngược lại: để mô hình tự lập kế hoạch, còn bạn chỉ cần cung cấp một prompt và danh sách các công cụ. Đây là một SDK mã nguồn mở từ AWS, được phát hành vào tháng 5 năm 2025 theo Giấy phép Apache 2.0, và nó cung cấp sức mạnh cho các tác nhân sản xuất bên trong các nhóm của Amazon như Amazon Q Developer và AWS Glue.
Strands Agents thực sự là gì
Strands Agents là một SDK để xây dựng và chạy các tác nhân AI chỉ với vài dòng mã. Bạn cung cấp cho một tác nhân ba thứ: một mô hình, một system prompt, và một bộ công cụ. Mô hình đọc prompt, quyết định gọi công cụ nào, chạy chúng, xem xét kết quả và tiếp tục cho đến khi tác vụ hoàn thành. Chu trình đó là toàn bộ sản phẩm.

Nó được cung cấp cho Python và TypeScript. Tên gọi này gợi nhớ đến hai thành phần chính tạo nên một tác nhân: mô hình và các công cụ. AWS đã công bố mã nguồn mở sau khi sử dụng nội bộ, vì vậy thiết kế của nó phản ánh nhu cầu sản xuất chứ không phải chỉ là bản demo. Kể từ khi ra mắt bản xem trước, nó đã vượt qua 150 nghìn lượt tải xuống trên PyPI và đạt phiên bản 1.0, bổ sung các nguyên tắc cơ bản đa tác nhân và hỗ trợ giao thức Agent-to-Agent (A2A).
Nếu bạn đã đọc về các SDK tác nhân khác, cấu trúc này sẽ cảm thấy quen thuộc. Strands nằm trong cùng danh mục với LangGraph và Google ADK, nhưng nó phụ thuộc nhiều hơn vào mô hình để điều khiển luồng thay vì yêu cầu bạn tự vẽ biểu đồ.
Triết lý dựa trên mô hình so với điều phối mã cứng
Hầu hết các framework tác nhân ban đầu yêu cầu bạn xác định quy trình làm việc ngay từ đầu. Bạn sẽ xây dựng các node, edge và điều kiện, sau đó định tuyến mô hình thông qua chúng. Điều đó hiệu quả, nhưng mỗi khả năng mới có nghĩa là phải duy trì nhiều biểu đồ hơn.
Strands đảo ngược trách nhiệm. Các mô hình hiện đại đã tự lên kế hoạch, chuỗi suy luận, gọi công cụ và phản ánh kết quả. Vì vậy, thay vì mã hóa logic đó bằng tay, bạn mô tả mục tiêu và giao các công cụ. Mô hình sẽ tự tìm ra các bước.
Dưới đây là sự đối lập một cách rõ ràng:
| Phương pháp | Bạn xác định | Luồng điều khiển nằm ở | Chi phí cho một khả năng mới |
|---|---|---|---|
| Điều phối mã cứng | Các node, edge, điều kiện, định tuyến | Mã biểu đồ của bạn | Chỉnh sửa biểu đồ, kiểm tra lại các đường dẫn |
| Dựa trên mô hình (Strands) | Prompt + danh sách công cụ | Vòng lặp suy luận của mô hình | Thêm một công cụ, cập nhật prompt |
Sự đánh đổi là có thật. Các tác nhân dựa trên mô hình nhanh hơn trong việc xây dựng và thích ứng, nhưng bạn phải từ bỏ một phần tính xác định. Đối với các quy trình làm việc phải chạy theo cùng một cách mọi lúc, bạn vẫn có thể thêm cấu trúc bằng các mẫu đa tác nhân và hook. Vấn đề không phải là biểu đồ sai; mà là bạn sử dụng chúng khi cần thay vì mặc định.
Một tác nhân tối thiểu
Chương trình Strands hữu ích nhỏ nhất rất ngắn gọn. Bạn nhập lớp Agent, tùy chọn định nghĩa một công cụ bằng decorator @tool, và gọi tác nhân 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)
Decorator @tool biến một hàm Python thông thường thành thứ mà mô hình có thể gọi. Docstring và các gợi ý kiểu của bạn trở thành mô tả và schema đầu vào của công cụ, để mô hình biết khi nào và cách sử dụng nó. Không có registry riêng biệt nào cần duy trì. Việc gọi agent(...) chạy vòng lặp cho đến khi mô hình quyết định hoàn thành.
Công cụ và nhà cung cấp mô hình
Công cụ là cách tác nhân tương tác với thế giới bên ngoài. Một công cụ có thể là một hàm Python do bạn viết, một công cụ được đóng gói từ cộng đồng hoặc toàn bộ máy chủ Giao thức Ngữ cảnh Mô hình (MCP) được tiếp xúc với tác nhân.
Về phía mô hình, Strands linh hoạt về nhà cung cấp. Nhà cung cấp mặc định là Amazon Bedrock, và ngay lập tức một tác nhân sử dụng mô hình Claude Sonnet trong khu vực us-west-2 (ID mô hình mặc định chính xác đã thay đổi giữa các phiên bản SDK, vì vậy hãy kiểm tra phiên bản đã cài đặt của bạn thay vì mã hóa cứng). Bạn có thể chỉ định nó ở nơi khác:
- Bất kỳ mô hình Amazon Bedrock nào hỗ trợ sử dụng công cụ và truyền trực tuyến
- Họ mô hình Claude của Anthropic thông qua Anthropic API
- Các mô hình Llama thông qua Llama API
- Ollama để phát triển cục bộ
- Các nhà cung cấp khác như OpenAI thông qua LiteLLM
Việc hoán đổi nhà cung cấp là thay đổi đối tượng mô hình, không phải viết lại. Vòng lặp tác nhân, các công cụ và prompt của bạn vẫn giữ nguyên. Điều đó giúp bạn dễ dàng phát triển với mô hình Ollama cục bộ và triển khai trên Bedrock.
Hỗ trợ đa tác nhân và MCP
Một tác nhân đơn lẻ có thể xử lý rất nhiều, nhưng các hệ thống thực tế thường cần nhiều tác nhân. Strands 1.0 đã bổ sung các nguyên tắc cơ bản cho ứng dụng đa tác nhân, bao gồm mẫu Agent-as-Tool (Tác nhân như một Công cụ) trong đó một tác nhân gọi một tác nhân khác theo cùng cách nó gọi bất kỳ công cụ nào, và sự phối hợp kiểu Swarm cho các nhóm tác nhân cùng giải quyết một vấn đề. Nó cũng hỗ trợ giao thức A2A, vì vậy các tác nhân Strands có thể giao tiếp với các tác nhân được xây dựng trên các framework khác.
MCP là một công dân hạng nhất. Giao thức Ngữ cảnh Mô hình (Model Context Protocol) là một tiêu chuẩn mở để kết nối các mô hình với các công cụ và nguồn dữ liệu. Với Strands, bạn có thể kết nối với các máy chủ MCP đã xuất bản và sử dụng trực tiếp các công cụ của chúng, điều này có nghĩa là hàng nghìn tích hợp hiện có trở nên khả dụng mà không cần mã kết nối tùy chỉnh. Bạn quản lý kết nối thông qua một client MCP và chuyển các công cụ của nó cho tác nhân giống như bất kỳ danh sách công cụ nào khác.
Nếu bạn đã chạy các máy chủ MCP, đây là cách rẻ nhất để cung cấp cho tác nhân các khả năng mới. Sự đánh đổi là bạn giờ đây phụ thuộc vào hoạt động của các máy chủ đó, đây là một lý do tại sao việc kiểm tra các endpoint cơ bản lại quan trọng.
Triển khai tác nhân Strands
Strands được xây dựng để chuyển từ máy tính xách tay của bạn sang môi trường sản xuất mà không cần thay đổi framework. Bạn kiểm tra cục bộ, sau đó triển khai đến đích phù hợp với stack của mình:
- Amazon Bedrock AgentCore cho một môi trường chạy tác nhân được quản lý
- AWS Lambda cho các tác nhân dựa trên sự kiện, có thời gian tồn tại ngắn
- AWS Fargate hoặc Amazon EKS cho các dịch vụ được đóng gói bằng container, chạy dài hạn
- Docker thuần túy ở bất cứ đâu bạn có thể chạy một container
Vì tác nhân là Python hoặc TypeScript thông thường, việc đóng gói nó tuân theo các quy tắc giống như bất kỳ ứng dụng nào khác. AWS cũng tài liệu hóa các hook khả năng quan sát, vì vậy bạn có thể theo dõi những gì mô hình đã quyết định và những công cụ nào nó đã gọi khi tác nhân đang hoạt động.
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 của bạn gọi, và đó là khoảng trống đáng để lập kế hoạch. Mọi tác nhân Strands đều dựa vào hai loại endpoint HTTP: API của nhà cung cấp LLM đằng sau mô hình, và các API REST hoặc công cụ đằng sau các hàm @tool và máy chủ MCP của bạn. Nếu các endpoint đó hoạt động sai, tác nhân sẽ thất bại theo những cách trông giống như vấn đề của mô hình nhưng thực ra không phải.

Apidog là nơi bạn kiểm tra và tạo mock cho các API cơ bản đó trước khi tác nhân chạm vào chúng. Một vài trường hợp sử dụng cụ thể:
- Tạo mock cho mô hình hoặc một endpoint công cụ trong khi bạn lặp lại trên vòng lặp, để bạn không tiêu tốn token hoặc đạt giới hạn tốc độ mỗi lần chạy. Bài viết về xây dựng một bộ kiểm thử tác nhân AI với Apidog cho thấy mô hình này.
- Xác nhận cấu trúc phản hồi của công cụ để một công cụ trả về payload bị lỗi được phát hiện trong kiểm thử, không phải trong môi trường sản xuất. Xem hướng dẫn về xác nhận API để biết cách xác thực các trường, kiểu và mã trạng thái.
- Dựng một API mock mô phỏng các phản hồi của một dịch vụ thực, bao gồm các trường hợp lỗi mà tác nhân của bạn cần xử lý một cách linh hoạt.
- Quản lý khóa API cho từng môi trường để các tác nhân dev, staging và prod của bạn xác thực với các backend phù hợp mà không làm rò rỉ thông tin đăng nhập vào mã.
Nói rõ hơn, Apidog không phải là một framework tác nhân và không điều phối bất cứ điều gì. Strands vẫn là bộ não. Apidog là bàn làm việc cho hệ thống đường ống bên dưới nó. Bạn có thể tải xuống Apidog và kết nối các mock cho các endpoint công cụ của bạn chỉ trong vài phút.
Khi nào nên sử dụng Strands Agents
Hãy sử dụng Strands khi bạn muốn phát triển nhanh và tin tưởng vào mô hình để lập kế hoạch. Nó rất phù hợp nếu bạn đang sử dụng AWS và Bedrock, nếu bạn muốn bắt đầu với một tác nhân và phát triển thành đa tác nhân sau này, hoặc nếu bạn muốn sử dụng các công cụ MCP mà không cần viết mã tích hợp.
Nó ít phù hợp hơn khi bạn cần các luồng nghiêm ngặt, có thể kiểm toán, mang tính xác định, nơi mỗi nhánh phải được định nghĩa trước. Bạn vẫn có thể đạt được điều đó với các hook và cấu trúc đa tác nhân, nhưng một framework ưu tiên đồ thị có thể phù hợp hơn. Cách diễn giải trung thực là các phương pháp dựa trên mô hình và dựa trên đồ thị giải quyết các vấn đề khác nhau, và Strands là phương pháp dựa trên mô hình.
Các 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. Không có phí cấp phép cho SDK này. Bạn chỉ trả tiền cho mô hình và bất kỳ tài nguyên đám mây nào bạn triển khai, như suy luận Bedrock hoặc thực thi Lambda, nhưng bản thân framework thì không tốn phí.
Tôi có phải sử dụng Amazon Bedrock với Strands không?
Không. Bedrock là nhà cung cấp mặc định, nhưng Strands hỗ trợ API của Anthropic, API của Llama, Ollama cho các lần chạy cục bộ và các nhà cung cấp khác thông qua LiteLLM. Bạn chỉ thay đổi đối tượng mô hình và giữ nguyên phần còn lại của mã. Điều này giúp dễ dàng tạo mẫu cục bộ và chuyển sang nhà cung cấp được quản lý cho môi trường sản xuất.
Sự khác biệt giữa Strands và một framework dựa trên đồ thị là gì?
Strands được điều khiển bởi mô hình: bạn cung cấp một prompt và các công cụ, và mô hình quyết định các bước. Các framework dựa trên đồ thị yêu cầu bạn xác định luồng điều khiển dưới dạng các node và edge. Strands nhanh hơn trong việc xây dựng và thích ứng; các framework đồ thị mang lại khả năng thực thi chặt chẽ hơn, dễ dự đoán hơn. Nhiều nhóm sử dụng cả hai cho các dịch vụ khác nhau.
Làm cách nào để tôi kiểm tra các API mà tác nhân Strands của tôi phụ thuộc vào?
Kiểm tra chúng độc lập với tác nhân, trước và trong quá trình phát triển. Tạo mock cho các endpoint LLM và công cụ, xác nhận cấu trúc phản hồi của chúng và chạy các kiểm tra đó trong CI. Một công cụ như Apidog xử lý việc tạo mock và xác nhận, và hướng dẫn về kiểm thử ChatGPT API với Apidog bao gồm xác thực, truyền trực tuyến và kiểm thử gọi công cụ liên kết trực tiếp với các backend tác nhân.
Kết luận
Strands Agents là một cách tiếp cận rõ ràng để xây dựng các tác nhân: định nghĩa một mô hình, một prompt và các công cụ, sau đó để mô hình chạy vòng lặp. Nó có khả năng mở rộng từ một tác nhân lên nhiều tác nhân, hỗ trợ MCP và A2A, và triển khai trên toàn bộ hệ sinh thái AWS mà không cần viết lại mã. Framework này xử lý phần suy luận. Công việc của bạn là đảm bảo các API bên dưới nó vững chắc, và đó chính xác là nơi Apidog phát huy giá trị của mình, tạo mock và kiểm thử các endpoint mà tác nhân của bạn gọi để các lỗi xuất hiện trong các bài kiểm thử của bạn thay vì trong môi trường sản xuất.
