SELECTOOLS: Framework Python toàn diện cho hệ thống AI Agent với Multi-agent, RAG và Đánh giá tích hợp
Selectools v0.20.1 là framework Python mã nguồn mở giúp xây dựng hệ thống AI Agent mạnh mẽ, hỗ trợ multi-agent, RAG và 50 bộ đánh giá tích hợp. Điểm nổi bật là giải quyết vấn đề ngắt quãng của LangGraph bằng Python generators và quy trình kiểm toán bảo mật nghiêm ngặt.

Selectools v0.20.1 đã chính thức ra mắt, mang đến một framework Python mã nguồn mở (giấy phép Apache-2.0) dành cho các hệ thống AI Agent. Công cụ này hỗ trợ đa dạng các nhà cung cấp mô hình ngôn ngữ lớn (LLM) như OpenAI, Anthropic, Gemini và Ollama, tất cả đều có thể cài đặt nhanh chóng thông qua một câu lệnh pip đơn giản.
Điểm nhấn kỹ thuật: Cách xử lý ngắt quãng sau khi dừng của con người
Một trong những vấn đề lớn khi xây dựng các hệ thống AI tương tác với con người (Human-in-the-Loop) là cách xử lý việc tiếp tục quy trình sau một lần ngắt quãng. Cơ chế interrupt() của LangGraph được thiết kế để thực thi lại toàn bộ nội dung của node khi tiếp tục (resume). Điều này xuất phát từ mô hình checkpoint-replay của LangGraph. Mặc dù hoạt động được, nhưng nó tạo ra một sự trừu tượng bị rò rỉ (leaky abstraction), buộc các nhà phát triển phải cấu trúc lại mọi node cần đầu vào của con người để đảm bảo các tác vụ tốn kém không bị chạy lại lặp thừa.
Selectools giải quyết vấn đề này bằng cách sử dụng Python generators. Node sẽ yield một InterruptRequest. Đồ thị sẽ tiếp tục chính xác tại điểm yield đó thông qua generator.send(). Nhờ đó, các tác vụ tốn kém chỉ chạy đúng một lần mà không cần các thao tác xử lý phức tạp để đảm bảo tính định thức (idempotency).
async def review_node(state):
analysis = await expensive_llm_analysis(state.data["draft"]) # chạy một lần
decision = yield InterruptRequest(prompt="Approve?", payload=analysis)
state.data["approved"] = (decision == "yes") # tiếp tục tại đây
Như ghi chú trong changelog v0.18.0: "Tiếp tục tại chính điểm yield (LangGraph khởi động lại toàn bộ node)."
Điều phối Multi-Agent (Multi-Agent Orchestration)
AgentGraph là một trình thực thi đồ thị có hướng dành cho các node agent. Việc định tuyến (routing) được thực hiện thông qua các hàm Python thuần túy, không sử dụng router học máy hay DSL (Domain Specific Language) nào. Đây là một lựa chọn có chủ đích: trong các hệ thống agent sản xuất thực tế, chúng ta thường muốn luồng điều khiển xác định (deterministic control flow), để LLM tập trung vào suy luận trong các node thay vì quyết định cấu trúc đồ thị.
Một số lựa chọn thiết kế chính bao gồm:
- ContextMode: Kiểm soát lịch sử trao đổi giữa các node:
LAST_MESSAGE(mặc định),LAST_N,FULL,SUMMARY,CUSTOM. Điều này giúp ngăn chặn việc bùng nổ ngữ cảnh (context explosion) khi các agent hạ du bị ngập trong các cuộc hội thoại không liên quan từ thượng lưu. - Thực thi song song: Hỗ trợ các mẫu fan-out/fan-in với
MergePolicy(LAST_WINS, FIRST_WINS, APPEND). - Phát hiện vòng lặp và tắc nghẽn: Theo dõi trạng thái thông qua băm (hashing) để xem trạng thái có thực sự thay đổi hay không.
SupervisorAgent
Selectools cung cấp bốn chiến lược điều phối khác nhau:
| Chiến lược | Mô tả | Phù hợp nhất cho |
|---|---|---|
plan_and_execute | LLM tạo ra kế hoạch JSON, các agent thực hiện tuần tự | Tác vụ có cấu trúc |
round_robin | Các agent luân phiên nhau, giám sát viên kiểm tra hoàn thành mỗi vòng | Tinh chỉnh lặp đi lặp lại |
dynamic | Router LLM chọn agent tốt nhất cho từng bước | Tác vụ đa dạng |
magentic | Magentic-One: Sổ cái Task/Progress + lập kế hoạch tự động | Nghiên cứu tự chủ |
Chiến lược magentic triển khai mẫu Magentic-One từ Microsoft Research. Ngoài ra, ModelSplit cho phép sử dụng các mô hình đắt tiền cho việc lập kế hoạch và các mô hình rẻ hơn cho việc thực thi, giúp giảm chi phí từ 70-90%.
Khung đánh giá tích hợp (Built-in Eval Framework)
Selectools đi kèm với 50 bộ đánh giá (evaluators) tích hợp sẵn mà không yêu cầu dịch vụ trả phí nào, bao gồm 30 bộ đánh giá xác định và 20 bộ sử dụng LLM làm giám khảo. Hệ thống cũng hỗ trợ so sánh cặp A/B, phát hiện hồi quy (regression detection), xuất XML JUnit cho CI và tạo báo cáo HTML.
Nghiêm ngặt về kỹ thuật: Săn lỗi tự động và Kiểm toán bảo mật
Tác giả đặc biệt tự hào về câu chuyện săn lỗi (bug-hunting) của dự án này, với tất cả các khẳng định đều được ghi công khai trong CHANGELOG.md.
- v0.19.1 Ralph Loop Bug Hunt: Hệ thống hội tụ tự động chạy 8 lượt qua tất cả 7 module cho đến khi có 3 lượt sạch liên tiếp. Kết quả là khoảng 90 lỗi được sửa và 254 bài kiểm tra hồi quy mới được thêm vào. Các sửa lỗi bao gồm ngăn chặn deadlock trong ThreadPoolExecutor, xử lý sự kiện async trên cache hit của LLM, và ngăn chặn việc chèn prompt injection.
- v0.19.1 RAG Adversarial Bug Hunt: Tám sửa lỗi trường hợp cạnh, bao gồm xử lý
n_resultscho ChromaVectorStore khi bộ sưu tập trống, và xác thực mẫu prompt cho ContextualChunker. - Kiểm toán bảo mật song song (v0.20.0): 5 subagent Claude đã chạy song song trên toàn bộ mã nguồn, tập trung vào các hệ thống con như đồng thời hóa, bảo vệ None, chèn mã, duyệt đường dẫn và an toàn sự cố. Tổng cộng có 56 phát hiện, với 9 sửa lỗi bảo mật quan trọng được triển khai, bao gồm sửa lỗi chèn điểm số, ReDoS trong regex tùy chỉnh và duyệt đường dẫn trong
ToolLoader.
Các mẫu Agent nâng cao
Bốn mẫu cấp cao được tích hợp trong selectools.patterns:
PlanAndExecuteAgent: LLM tạo kế hoạch, thực hiện các tác vụ con tuần tự.ReflectiveAgent: Vòng lặp tự phê bình với ngưỡng chất lượng có thể cấu hình.DebateAgent: Tranh luận đối kháng giữa hai agent + tổng hợp.TeamLeadAgent: Agent chính điều phối các chuyên gia với cân bằng tải.
Tăng cường cho doanh nghiệp (Enterprise Hardening)
- Các điểm đánh dấu ổn định: Các decorator
@stable,@beta,@deprecated(since, replacement)để tín hiệu hóa API công khai. - Trình xem Trace HTML:
trace_to_html(trace)hiển thị bất kỳAgentTracenào dưới dạng dòng thác thời gian HTML độc lập, không cần framework JS hay phụ thuộc bên ngoài. - SBOM: Cung cấp tệp
sbom.json(CycloneDX 1.6) với tất cả các phụ thuộc sản xuất cốt lõi. - Ma trận tương thích: Hỗ trợ Python 3.9-3.13 với các SDK nhà cung cấp và phụ thuộc tùy chọn.
Triển khai và Phục vụ (Serve & Deploy)
Lệnh selectools serve agent.yaml sẽ khởi động máy chủ ASGI Starlette kèm giao diện người dùng playground. Bạn có thể định nghĩa các agent trong YAML, chọn từ 5 mẫu có sẵn (hỗ trợ khách hàng, phân tích dữ liệu, trợ lý nghiên cứu, reviewer mã, chatbot RAG). Các tính năng sản xuất bao gồm PostgresCheckpointStore, TraceStore (3 backend), compose() để xích chuỗi công cụ, và các bao bọc đường ống retry() / cache_step().
Kiểm thử và Phủ mã
Dự án hiện có 4.612 bài kiểm thử (độ phủ 95%) trên Python 3.9-3.13, bao gồm các đánh giá API thực tế chống lại OpenAI, Anthropic và Gemini. Nó cũng bao gồm 28 bài kiểm tra dựa trên thuộc tính Hypothesis, 15 bài kiểm tra an toàn luồng và 16 mô phỏng tích hợp sản xuất.
Có gì mới trong v0.20.x
Một công cụ xây dựng đồ thị agent trực quan sớm đã có sẵn tại https://selectools.dev/builder/ (tệp HTML 49KB độc lập, xuất sang YAML hoặc Python). Tuy nhiên, tác giả vẫn đang hoàn thiện các chi tiết, nên pip install vẫn là đường dẫn được khuyến nghị tại thời điểm này.
Các liên kết:
- GitHub: https://github.com/johnnichev/selectools
- Quickstart: https://selectools.dev/QUICKSTART/
- Changelog: https://github.com/johnnichev/selectools/blob/main/CHANGELOG.md
- PyPI:
pip install selectools
Bài viết liên quan

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
