Smolagents: Thư Viện Xây Dựng AI Agent Siêu Nhẹ Từ Hugging Face
Trong thế giới phát triển Tác tử tự hành (AI Agents), các framework nổi tiếng như LangChain, CrewAI hay AutoGen đang ngày càng trở nên phức tạp. Với hàng chục tầng trừu tượng (layers of abstraction), tài liệu dày đặc và hàng ngàn dòng code bao bọc, lập trình viên thường mất hàng giờ chỉ để cấu hình một Agent đơn giản có khả năng tìm kiếm web và xử lý dữ liệu.
Đầu năm 2025, đội ngũ kỹ sư tại Hugging Face – trung tâm mã nguồn mở lớn nhất thế giới về AI – đã quyết định tái định nghĩa lại kiến trúc Agent bằng việc phát hành `smolagents`.
Với triết lý tối giản triệt để, toàn bộ phần lõi của smolagents chỉ gói gọn trong khoảng 1.000 dòng mã Python, nhưng lại sở hữu sức mạnh vượt trội nhờ một bước chuyển biến quan trọng: Thay thế các chuỗi JSON gọi công cụ cồng kềnh bằng chính mã nguồn Python thực thi (CodeAgent).
---
1. Triết Lý Đột Phá: CodeAgent vs. JSON Tool Calling
Trong hầu hết các hệ thống AI Agent truyền thống:
- LLM nhận yêu cầu từ người dùng.
- LLM phải suy nghĩ và đóng gói lời gọi hàm dưới dạng một chuỗi văn bản JSON (JSON-RPC hoặc Function Calling format).
- Hệ thống máy chủ phân tích chuỗi JSON đó, gọi hàm Python, lấy kết quả rồi lại chuyển đổi thành JSON để gửi ngược lại cho LLM.
Quy trình này bộc lộ nhiều điểm yếu cố hữu:
- Định dạng JSON rất tốn token và dễ bị lỗi cú pháp khi dữ liệu phức tạp.
- AI không thể thực hiện các thao tác cơ bản như vòng lặp, tính toán toán học trung gian hay lưu biến tạm thời nếu không có công cụ bổ trợ.
Cách tiếp cận của Hugging Face với CodeAgent:
Thay vì viết JSON, AI Agent viết trực tiếp một đoạn mã Python ngắn gọn để giải quyết bài toán. Đoạn mã này được thực thi ngay trong môi trường cách ly (Sandbox), cho phép Agent thực hiện vòng lặp for, tính toán số liệu và gọi liên tiếp nhiều công cụ trong cùng một lượt suy luận.
[Người Dùng] ──► [smolagents CodeAgent] ──► [Viết Code Python Trực Tiếp]
│
▼ (Thực thi trong Sandbox)
[Kết Quả Cuối Cùng] ◄── [Nhận Output & Dữ Liệu] ◄───┘---
2. Vì Sao Smolagents Lại Được Cộng Đồng Lập Trình Viên Đón Nhận Nồng Nhiệt?
- Gọn nhẹ đến kinh ngạc: Bạn có thể đọc hiểu toàn bộ mã nguồn của thư viện trong một buổi chiều. Không có các lớp trừu tượng ẩn giấu hay ma thuật ngầm.
- Hỗ trợ đa dạng mô hình: Kết nối dễ dàng với các mô hình trên Hugging Face Hub (Qwen 2.5 Coder, Llama 3.3), mô hình đám mây (OpenAI, Anthropic Claude) hoặc mô hình cục bộ chạy qua Ollama.
- An toàn khi thực thi code: Tích hợp sẵn môi trường thông dịch an toàn (Secure Local Python Interpreter) kiểm soát danh sách thư viện được phép import, ngăn chặn các hành vi đọc ghi tệp trái phép.
- Chia sẻ công cụ dễ dàng: Bạn có thể xuất bản và chia sẻ các công cụ (Tools) của mình lên Hugging Face Hub để cộng đồng tái sử dụng chỉ với 1 dòng lệnh.
---
3. Hướng Dẫn Cài Đặt Và Chạy Thử Smolagents Trong 5 Phút
Bước 1: Cài đặt thư viện qua pip
Mở Terminal và cài đặt gói smolagents:
pip install smolagents duckduckgo-searchBước 2: Viết AI Agent đầu tiên có khả năng tra cứu web
Tạo một tệp tin Python có tên app.py:
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
# Khởi tạo mô hình ngôn ngữ từ Hugging Face Hub (hoặc dùng OpenAI / Ollama)
model = HfApiModel(model_id="Qwen/Qwen2.5-Coder-32B-Instruct")
# Khởi tạo công cụ tìm kiếm web
search_tool = DuckDuckGoSearchTool()
# Tạo Agent với công cụ tìm kiếm
agent = CodeAgent(
tools=[search_tool],
model=model,
add_base_tools=True
)
# Chạy tác vụ thử nghiệm
prompt = "Tìm kiếm thông tin dân số hiện tại của Tokyo và tính xem nếu chia đều cho diện tích 2194 km2 thì mật độ dân số là bao nhiêu người/km2?"
response = agent.run(prompt)
print("Kết quả:", response)Khi chạy đoạn code trên, Agent sẽ tự động:
- Gọi công cụ
DuckDuckGoSearchToolđể tìm dân số Tokyo. - Trích xuất con số dân số từ kết quả tìm kiếm.
- Tự viết phép tính chia
danso / 2194bằng code Python để ra kết quả chính xác, thay vì tự đoán mò con số.
---
4. Tự Tạo Công Cụ Tùy Biến (Custom Tool) Cho Doanh Nghiệp
Bạn có thể dễ dàng biến bất kỳ hàm Python nào thành một công cụ cho Agent bằng decorator @tool:
from smolagents import tool, CodeAgent, HfApiModel
@tool
def calculate_vat(price: float, vat_rate: float = 0.1) -> float:
"""Tính toán số tiền thuế VAT và tổng tiền cần thanh toán.
Args:
price: Giá gốc của sản phẩm trước thuế (VND)
vat_rate: Tỷ lệ thuế VAT, mặc định là 0.1 (10%)
"""
vat_amount = price * vat_rate
total_price = price + vat_amount
return total_price
model = HfApiModel()
agent = CodeAgent(tools=[calculate_vat], model=model)
result = agent.run("Tôi mua một đơn hàng trị giá 2.500.000 VND với mức thuế VAT 8%. Tổng số tiền tôi phải trả là bao nhiêu?")
print(result)---
5. Kết Luận
Sự xuất hiện của smolagents đại diện cho một xu thế mới trong ngành công nghệ: Quay trở lại với sự tối giản, minh bạch và hiệu quả thực chất. Bằng cách trao cho AI khả năng tư duy và hành động thông qua mã nguồn Python tự nhiên, smolagents mở ra cánh cửa giúp các lập trình viên dễ dàng làm chủ công nghệ Tác tử tự hành mà không bị chìm trong sự phức tạp không cần thiết.
---
Bài Viết Liên Quan:
- Dify: Xây Dựng AI Agent Và Quy Trình RAG Trực Quan
- Ollama: Chạy Mô Hình AI Cục Bộ Miễn Phí Và Riêng Tư 100%
Nguồn tham khảo: Hugging Face (smolagents Open Source Project)
Dựa trên 26 lượt đánh giá từ cộng đồng AI
Đội ngũ Kỹ thuật AgentSkills
Tác giả đóng góp nội dung tại AgentSkills.vn — Chia sẻ kiến thức, hướng dẫn thực hành và đánh giá công cụ AI thực chiến cho cộng đồng người dùng Việt Nam.
Thảo luận cộng đồng (0)
Tham gia thảo luận cùng cộng đồng AI Việt Nam
Đăng nhập để bình luận, đặt câu hỏi cho tác giả và chia sẻ kinh nghiệm thực tế.