Bài 4, LLM chỉ đề xuất dữ liệu. Giờ ta cho nó gọi công cụ — tra cứu đơn hàng, kiểm tra tồn kho, tạo phiếu — để nó tự thu thập thông tin và hành động. Đây là bước thực sự bước vào agentic.
Tool là gì trong ngữ cảnh agent
Một "tool" là một hàm bạn khai báo cho LLM: tên, mô tả, tham số. LLM không chạy code — nó quyết định gọi tool nào với tham số gì, code của bạn thực thi rồi trả kết quả lại cho LLM. Vòng lặp: LLM nghĩ → gọi tool → nhận kết quả → nghĩ tiếp.
User goal → LLM chọn tool → [runtime chạy tool] → kết quả
↑___________________________________________|
lặp cho tới khi LLM nói "xong"
Các bước xây dựng agent có tool
- Chọn 2-3 tool tối thiểu đủ giải quyết use case (đừng cho quá nhiều).
- Khai báo tool schema rõ ràng: tên, mô tả "khi nào dùng", tham số bắt buộc.
- Bọc mỗi tool bằng lớp an toàn: validate tham số, phân quyền, giới hạn phạm vi.
- Tách read-tool và write-tool: tool ghi/hành động phải có kiểm soát chặt hơn.
- Đặt trần số vòng lặp để agent không chạy vô tận.
- Ghi log mọi lời gọi tool để audit.
Khai báo tool (ví dụ)
tools = [
{
"name": "lookup_order",
"description": "Tra cứu đơn hàng theo mã. Dùng khi cần trạng thái/tồn kho.",
"parameters": {"order_id": "string"}
},
{
"name": "create_refund_ticket", # WRITE tool - nhạy cảm
"description": "Tạo phiếu hoàn tiền. Chỉ gọi khi đã xác minh đủ điều kiện.",
"parameters": {"order_id": "string", "amount": "number", "reason": "string"}
}
]
Vòng lặp agent + guardrail
def run_agent(goal, max_steps=6):
messages = [system_prompt(), user(goal)]
for step in range(max_steps):
resp = llm(messages, tools=tools)
if resp.tool_call:
name, args = resp.tool_call.name, resp.tool_call.args
if not authorized(name, args): # phân quyền
return escalate_human(goal, name, args)
if name in WRITE_TOOLS and args["amount"] > LIMIT:
return escalate_human(goal, name, args) # trên hạn mức → người
result = execute_tool(name, args) # RPA có thể là 1 tool ở đây
log_tool(name, args, result)
messages.append(tool_result(result))
else:
return resp.final_answer
return escalate_human(goal, reason="max_steps")
Lưu ý: RPA bot cũ của bạn có thể trở thành một tool — ví dụ update_erp(order_id, status) gọi lại workflow RPA. Bạn tái sử dụng thay vì vứt bỏ.
Khung tư duy: "Least privilege cho tool"
- Mỗi tool chỉ làm đúng một việc, phạm vi hẹp nhất.
- Write-tool luôn có: hạn mức, phân quyền, và log.
- Việc rủi ro cao (chuyển tiền lớn) → agent chỉ chuẩn bị, con người duyệt.
Checklist trước khi bật write-tool
- [ ] Mỗi write-tool có hạn mức/ngưỡng escalate rõ ràng
- [ ] Có validate tham số trước khi thực thi (không tin mù LLM)
- [ ] Log đầy đủ: tool nào, tham số gì, ai/agent nào gọi
- [ ] Có trần số bước để tránh loop vô tận
- [ ] Read-tool và write-tool tách quyền rõ ràng
- [ ] Có nút "human-in-the-loop" cho case vượt ngưỡng
Sai lầm thường gặp
- Cho agent quá nhiều tool cùng lúc: nó chọn nhầm, khó debug. Bắt đầu tối thiểu.
- Tin tham số LLM mà không validate: LLM có thể truyền
amountsai; luôn kiểm tra trước khi thực thi. - Không tách read/write: agent lỡ ghi dữ liệu khi lẽ ra chỉ đọc.
- Quên trần số bước: agent lặp vô tận, đốt token.
- Để agent tự duyệt việc rủi ro cao: thao tác tiền bạc lớn phải có người duyệt.
Học xong bài này rồi?
Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu,
và học hết khóa thì có chứng chỉ.
Lưu tiến độ của tôi