Product Management
Đăng nhập
ESC

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

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

Bài 1 — Tool Use là gì và tại sao agent cần nó

Đã đọc 0/7 mục · còn khoảng 4 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.

Một LLM đơn thuần chỉ biết sinh chữ. Nó không biết tỷ giá USD/VND hôm nay, không đọc được database của bạn, không gửi được email. Tool use (hay function calling) là cơ chế cho phép model yêu cầu hệ thống của bạn chạy một hàm cụ thể với tham số cụ thể, rồi nhận kết quả về để suy luận tiếp. Đây là thứ biến một chatbot thành một agent làm được việc.

Vòng lặp cốt lõi (bạn phải thuộc)

Hãy nhớ vòng lặp này — mọi agent tool-use đều chạy theo nó:

  • Bạn gửi cho model: câu hỏi người dùng + danh sách tool (kèm schema).
  • Model trả về một trong hai: (a) câu trả lời chữ, hoặc (b) một tool call — tên hàm + tham số dạng JSON.
  • Nếu là tool call: code của bạn (không phải model) thực thi hàm đó thật sự.
  • Bạn gửi kết quả của hàm trở lại model.
  • Model đọc kết quả, rồi lặp lại bước 2 — hoặc chốt câu trả lời cuối.
Điểm mấu chốt mà người mới hay hiểu sai: model KHÔNG tự chạy code. Nó chỉ đề nghị gọi hàm nào với tham số gì. Việc thực thi hoàn toàn nằm ở phía bạn. Điều này vừa là gánh nặng (bạn phải viết code thực thi) vừa là điểm kiểm soát an toàn quan trọng nhất.

Ví dụ cụ thể

Người dùng hỏi: "Thời tiết Đà Nẵng hôm nay thế nào?"

Bạn khai báo một tool get_weather(city). Model không biết thời tiết, nên nó trả về:

{
  "tool": "get_weather",
  "arguments": { "city": "Da Nang" }
}

Code của bạn nhận cái này, gọi API thời tiết thật, được { "temp_c": 31, "cond": "nắng" }, gửi lại cho model. Model kết luận: "Đà Nẵng hôm nay 31°C, trời nắng."

Khung tư duy: khi nào cần tool?

Dùng checklist này để quyết định một tác vụ có cần tool hay không:

  • [ ] Cần dữ liệu thời gian thực hoặc riêng tư (giá, tồn kho, hồ sơ khách)? → Cần tool.
  • [ ] Cần thực hiện hành động thay đổi trạng thái (đặt hàng, gửi mail, ghi DB)? → Cần tool.
  • [ ] Cần tính toán chính xác (LLM tính toán hay sai)? → Cần tool (máy tính/SQL).
  • [ ] Chỉ cần diễn giải, tóm tắt, viết lại từ thông tin đã có? → Không cần tool.
Nguyên tắc: mỗi tool là một cầu nối tới thế giới thật. Đừng thêm tool cho việc model tự làm tốt.

Ba loại tool thường gặp

  • Read tool (chỉ đọc): tra cứu, tìm kiếm, đọc DB. Rủi ro thấp.
  • Write/Action tool (thay đổi trạng thái): gửi mail, tạo đơn, xóa record. Rủi ro cao — cần xác nhận và phân quyền.
  • Compute tool: chạy code, tính toán, gọi công cụ chuyên dụng.
Phân loại này quyết định mức độ kiểm soát bạn đặt lên từng tool ở các bài sau (retry, xác nhận, giới hạn quyền).

Pseudocode vòng lặp tối giản

messages = [user_question]
while True:
    resp = model.generate(messages, tools=TOOLS)
    if resp.type == "text":
        return resp.text            # xong
    call = resp.tool_call
    result = execute(call.name, call.args)   # code CỦA BẠN chạy
    messages.append(resp)           # ghi lại lời gọi
    messages.append(result)         # ghi lại kết quả

Toàn bộ khóa học sẽ đào sâu từng dòng: cách khai báo TOOLS, cách viết execute, và cách sống sót khi mọi thứ hỏng.

Sai lầm thường gặp

  • Tưởng model tự chạy hàm. Nó chỉ đề nghị; bạn phải viết bộ thực thi và kết nối kết quả trở lại.
  • Nhét mọi thứ thành tool. Cho model 40 tool sẽ khiến nó chọn sai và tốn token. Chỉ khai báo tool thực sự cần cho tác vụ.
  • Quên gửi kết quả tool trở lại. Nếu bạn chạy hàm nhưng không append kết quả vào messages, model "mù" và bịa ra câu trả lời.
  • Không phân biệt read vs write. Đối xử với một tool delete_user giống như search là công thức của thảm họa.
  • Kỳ vọng model luôn gọi đúng. Nó sẽ chọn sai, thiếu tham số, gọi lặp. Các bài sau dạy bạn xử lý những tình huống này.
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