Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 5 — Cho LLM dùng Tools: từ trích xuất sang hành động

Đã đọc 0/8 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

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 amount sai; 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.
Bài 6 sẽ ghép tất cả thành kiến trúc hybrid hoàn chỉnh: RPA và agent phân vai rõ ràng.

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