Function calling là gì? Cách AI gọi đúng hàm, đúng tham số bạn định nghĩa

Function calling là gì? Cách AI gọi đúng hàm, đúng tham số bạn định nghĩa

🔌 Function calling là gì? Cách AI gọi đúng hàm, đúng tham số bạn định nghĩa

Function calling (gọi hàm) là cách một AI, thay vì chỉ trả lời bằng chữ, trả về một gói dữ liệu có cấu trúc nói rõ nó muốn chạy hàm nào trong phần mềm của bạn, với những tham số gì. Phần mềm của bạn đọc gói dữ liệu đó, tự chạy hàm thật, rồi đưa kết quả ngược lại cho AI để nó trả lời tiếp. Đây chính là cây cầu nối giữa một AI chỉ biết "nói chuyện" và một AI agent thật sự làm được việc.

🧠 Hiểu nhanh bằng ví dụ đời thường

Hãy tưởng tượng bạn gọi lên tổng đài một công ty. Nhân viên trực tổng đài không tự mở kho hàng, không tự sửa đơn hàng trong hệ thống. Khi bạn nói "cho tôi kiểm tra đơn hàng mã ABC123", nhân viên đó ghi lại đúng yêu cầu theo một biểu mẫu nội bộ: tên thao tác là "tra cứu đơn hàng", mã đơn là "ABC123". Biểu mẫu này được chuyển cho bộ phận kỹ thuật, họ chạy đúng câu lệnh trong hệ thống, lấy kết quả, rồi gửi lại cho nhân viên tổng đài để trả lời bạn bằng lời nói bình thường.

AI khi dùng function calling cũng làm đúng như nhân viên tổng đài đó. Nó không tự ý "chạy" bất cứ thứ gì trong máy tính của bạn. Nó chỉ điền vào một biểu mẫu: tên hàm (ví dụ tra_cuu_don_hang) và tham số (ma_don: "ABC123"). Chương trình của bạn mới là người thật sự mở kho, chạy câu lệnh, rồi trả kết quả về cho AI nói lại bằng ngôn ngữ tự nhiên.

⚙️ Nó hoạt động thế nào

Quy trình function calling luôn đi qua mấy bước sau:

  1. Bạn khai báo trước danh sách hàm. Trước khi trò chuyện, nhà phát triển mô tả cho AI biết những hàm nào đang tồn tại: tên hàm, hàm đó dùng để làm gì, cần những tham số nào và tham số đó thuộc kiểu dữ liệu gì (chữ, số, ngày tháng...). AI không thấy code thật bên trong hàm, nó chỉ thấy bản mô tả này.
  2. Người dùng đặt câu hỏi hoặc ra yêu cầu. Ví dụ "thời tiết Hà Nội hôm nay thế nào" hoặc "đặt lịch họp lúc 3 giờ chiều thứ Sáu".
  3. AI quyết định có cần gọi hàm không, và gọi hàm nào. Nếu câu hỏi cần dữ liệu AI không tự biết (thời tiết thực tế, lịch trong hệ thống của bạn), nó sẽ chọn đúng hàm phù hợp trong danh sách đã khai báo.
  4. AI trả về một gói dữ liệu có cấu trúc, thường là JSON, kiểu như {"ham": "lay_thoi_tiet", "thanh_pho": "Ha Noi"}. Gói này rất giống với cách AI trả lời theo khuôn mẫu cố định mà bài đầu ra có cấu trúc đã nói tới, chỉ khác là lần này khuôn mẫu mô tả một lệnh gọi hàm.
  5. Chương trình của bạn chạy hàm thật với tham số đó, lấy kết quả (ví dụ "28 độ, có mưa nhẹ"), rồi gửi kết quả này trở lại cho AI.
  6. AI dùng kết quả để trả lời bằng câu chữ tự nhiên, ví dụ "Hà Nội hôm nay 28 độ, có mưa nhẹ, bạn nên mang theo áo mưa nhé."

Toàn bộ việc "gọi web, chạy code, đọc file" mà bài tool use nhắc tới đều cần một cơ chế để AI diễn đạt ý định của nó thành thứ máy tính hiểu được. Function calling chính là cơ chế đó, là lớp "ngữ pháp" giúp AI và phần mềm nói chuyện được với nhau.

🎯 Điều này có ý nghĩa gì với bạn

Nếu bạn chỉ dùng AI để trò chuyện, chép văn bản, bạn sẽ ít khi thấy function calling lộ diện. Nhưng nó quyết định phần lớn trải nghiệm bạn thấy "ồ, AI này thông minh thật" ở những sản phẩm có AI tích hợp:

  • Khi bạn hỏi trợ lý AI trong app ngân hàng "số dư tài khoản của tôi bao nhiêu", AI không tự bịa ra con số. Nó gọi một hàm kiểu lay_so_du(so_tai_khoan), hệ thống ngân hàng trả về con số thật, AI mới đọc lại cho bạn. Đây là lý do những câu hỏi liên quan tới dữ liệu thật của bạn thường chính xác hơn nhiều so với AI "đoán".
  • Khi bạn xây dựng một trợ lý AI riêng (qua công cụ không cần biết code hoặc qua Claude API), bạn có thể định nghĩa hàm "gửi email", "tạo sự kiện lịch", "tìm sản phẩm trong kho". Bạn chỉ cần mô tả rõ hàm làm gì, AI sẽ tự biết khi nào nên gọi hàm nào, bạn không cần viết luật "nếu người dùng nói X thì làm Y" thủ công nữa.
  • Khi bạn thấy một AI agent tự động "đặt vé, kiểm tra tồn kho, cập nhật bảng tính", đằng sau đó gần như chắc chắn là một chuỗi các lệnh gọi hàm nối tiếp nhau, mỗi lệnh gọi lại trả kết quả cho AI để nó quyết định bước tiếp theo. Đây cũng là nền tảng để phân biệt một workflow cố định với một AI agent linh hoạt: agent linh hoạt vì nó tự chọn hàm nào, chọn thứ tự nào, dựa trên tình huống thực tế chứ không chạy theo kịch bản cứng.

⚠️ Hiểu lầm thường gặp

  • "AI tự chạy code trên máy tôi." Sai. AI chỉ đề nghị gọi hàm nào với tham số gì. Người viết phần mềm mới là người quyết định hàm đó thật sự làm gì, và hoàn toàn có thể từ chối hoặc kiểm tra lại trước khi chạy. Đây là lý do một ứng dụng AI an toàn luôn kiểm tra kỹ tham số trước khi thực thi, nhất là với những hàm nhạy cảm như chuyển tiền hay xóa dữ liệu.
  • "Function calling và tool use là hai thứ khác nhau." Thực ra function calling là cơ chế kỹ thuật cụ thể để hiện thực hóa tool use. Tool use là khái niệm rộng (AI dùng công cụ bên ngoài), còn function calling là cách phổ biến nhất để AI "gọi" công cụ đó một cách có cấu trúc, rõ ràng, máy tính đọc được ngay.
  • "AI luôn chọn đúng hàm, đúng tham số." Không hẳn. AI vẫn có thể hiểu sai ý người dùng, điền sai tham số, hoặc chọn nhầm hàm nếu mô tả hàm không rõ ràng. Vì vậy mô tả hàm càng chi tiết, càng có ví dụ cụ thể, AI càng ít gọi sai.

❓ Câu hỏi thường gặp

Function calling có phải chỉ dành cho lập trình viên không? Việc khai báo hàm và viết phần mềm nhận kết quả thì cần biết lập trình. Nhưng nhiều công cụ không cần biết code (no-code) đã đóng gói sẵn các hàm phổ biến như "gửi email", "tạo bảng tính", bạn chỉ cần bật chúng lên, không phải tự viết.

Function calling khác gì với việc AI tự viết code rồi chạy? Khác. Function calling là AI chọn một hàm có sẵn, đã được kiểm tra từ trước, trong danh sách bạn cung cấp. AI viết code để tự chạy là một khả năng khác, rủi ro cao hơn vì code đó chưa từng được kiểm tra trước, nên thường chỉ chạy trong môi trường cách ly an toàn.

Nếu AI gọi nhầm hàm thì sao? Phần mềm nhận lệnh gọi hàm vẫn nên tự kiểm tra tham số hợp lệ trước khi chạy, giống như không ai nhấc máy làm theo mọi yêu cầu qua điện thoại mà không xác minh. Với hàm có thể gây hậu quả lớn (xóa dữ liệu, thanh toán), nên có thêm bước xác nhận của con người trước khi thực thi.

Mọi mô hình AI đều hỗ trợ function calling chứ? Không phải mô hình nào cũng hỗ trợ, và cách khai báo hàm cũng khác nhau giữa các nhà cung cấp. Các model hiện đại dùng cho AI agent, như dòng Claude, đều có hỗ trợ function calling như một tính năng cốt lõi, vì nó là nền tảng để xây dựng agent thật sự làm được việc.

Tôi có cần học function calling nếu chỉ dùng ChatGPT, Claude để chat thường ngày không? Không bắt buộc. Nhưng hiểu khái niệm này giúp bạn đọc hiểu vì sao một số tính năng AI "tra cứu dữ liệu thật", "tự động hóa công việc lặp lại" lại hoạt động chính xác hơn nhiều so với AI chỉ đoán chữ, và giúp bạn đánh giá đúng một sản phẩm AI khi nó quảng cáo có "agent" tích hợp.

#AI #FunctionCalling #AIAgent #CongNgheAI #HocAICungVibeAICoder

Doanh nghiệp muốn giới thiệu sản phẩm AI tới bạn đọc Vibe AI Coder? Xem gói tài trợ

Bài viết liên quan