TROISINH
Chuyên sâuKỹ thuật nâng cao

Function calling là gì?

Tìm hiểu Function calling - cơ chế giúp AI gọi API và tương tác với cơ sở dữ liệu thực. Hướng dẫn chi tiết JSON schema, xử lý song song và best practices cho developer.

Định nghĩa

Function calling là cơ chế cho phép Large Language Model (LLM) xác định thời điểm cần gọi một hàm (function) bên ngoài, tự động sinh ra tham số JSON chuẩn, và trả về kết quả để hệ thống thực thi, sau đó tiếp tục cuộc hội thoại dựa trên dữ liệu thu được từ thế giới thực.

Giải thích chi tiết

Cơ chế hoạt động từ A đến Z

Khi developer tích hợp Function calling, luồng xử lý không còn là "hỏi-đáp" đơn thuần mà trở thành vòng lặp tương tác:

  1. Khai báo: Developer cung cấp danh sách các hàm khả dụng kèm JSON schema mô tả tham số
  2. Phân tích: LLM đọc câu hỏi của user và quyết định có cần dùng hàm nào không
  3. Sinh JSON: Nếu cần, LLM trả về object JSON chứa function_namearguments (không tự chạy code)
  4. Thực thi: Code của developer nhận JSON, gọi API thật (truy vấn database, gọi VietQR, kiểm tra thời tiết...)
  5. Trả kết quả: Kết quả thô (raw data) được đưa lại vào context
  6. Tổng hợp: LLM dùng dữ liệu thực để viết câu trả lời tự nhiên

Điểm mấu chốt: LLM không tự chạy code hay truy cập internet. Nó chỉ "xin phép" gọi hàm và cung cấp đúng tham số. Việc thực thi vẫn do code của bạn kiểm soát hoàn toàn.

JSON Schema - Ngôn ngữ giao tiếp giữa AI và hệ thống

Để AI hiểu được hàm nào dùng để làm gì, bạn phải mô tả bằng JSON Schema theo chuẩn:

{
  "name": "get_bank_balance",
  "description": "Kiểm tra số dư tài khoản ngân hàng theo số tài khoản",
  "parameters": {
    "type": "object",
    "properties": {
      "account_number": {
        "type": "string",
        "description": "Số tài khoản Vietcombank 10-13 số"
      },
      "date": {
        "type": "string",
        "description": "Ngày cần kiểm tra định dạng YYYY-MM-DD"
      }
    },
    "required": ["account_number"]
  }
}

Mô tả càng chi tiết, AI càng ít hallucinate tham số. Ví dụ: ghi rõ "Số tài khoản Vietcombank" thay vì chỉ "account number" sẽ giúp AI nhận diện đúng chuỗi số trong câu hỏi lộn xộn của user.

Parallel Function Calling - Gọi song song đa nhiệm

Các LLM hiện đại (GPT-4, Claude 3.5, Gemini Pro) hỗ trợ gọi nhiều hàm đồng thời trong một lượt. Khi user hỏi: "So sánh giá iPhone 15 trên Shopee, Lazada và Tiki", AI có thể trả về 3 JSON object cùng lúc để hệ thống query song song 3 API, giảm thời gian chờ từ 6 giây xuống còn 2 giây.

Xử lý lỗi và Edge Cases

Trong thực tế production, bạn phải đề phòng:

  • Invalid arguments: AI sinh nhầm định dạng (số điện thoại thiếu số 0). Cần validate schema trước khi gọi API.
  • Timeout: API VietQR chậm. Nên set timeout và trả lỗi về cho AI để nó thông báo user thay vì treo máy.
  • Function hallucination: AI đôi khi đòi gọi hàm không tồn tại. Cần kiểm tra function_name có trong whitelist không.

Ví dụ thực tế

Đặt xe Grab qua chatbot

User hỏi: "Đặt xe từ tòa nhà Bitexco đến sân bay Tân Sơn Nhất đi"

Function calling xử lý:

  1. AI nhận diện cần hàm book_grab_ride
  2. Sinh JSON: {"pickup": "Bitexco Financial Tower", "destination": "Tan Son Nhat Airport", "service_type": "GrabCar"}
  3. Hệ thống gọi Grab API thật, trả về giá 89.000đ và biển số xe 51A-123.45
  4. AI trả lời: "Đã đặt GrabCar từ Bitexco đến sân bay Tân Sơn Nhất. Giá cước 89.000đ, tài xế Nguyễn Văn A sẽ đón bạn sau 5 phút."

Tra cứu đơn hàng Shopee

User hỏi: "Đơn hàng #SP12345 của tôi đang ở đâu?"

Thay vì AI đoán mò, nó gọi hàm track_shopee_order với order_id, nhận về status "Đang giao tại Hà Nội", rồi trả lời chính xác thay vì nói chung chung.

Tính toán lãi suất ngân hàng

User hỏi: "Gửi 500 triệu vào Vietcombank 12 tháng được bao nhiêu tiền lãi?"

AI gọi hàm calculate_interest với số tiền và kỳ hạn, nhận lãi suất thực tế từ API ngân hàng (thay đổi theo ngày), tính ra 75 triệu đồng lãi, và giải thích công thức cho user.

Ứng dụng

Sinh viên và Researcher

Học cách xây dựng AI Agent đầu tiên bằng cách kết nối ChatGPT với database SQLite cá nhân hoặc API thời tiết mở. Function calling là bước đệm để hiểu AI Agent phức tạp hơn.

Developer xây dựng sản phẩm

Xây dựng internal tool cho công ty: chatbot tự động tạo Jira ticket, query Grafana log, hoặc deploy code lên AWS thông qua các API được cấp quyền. Function calling biến LLM thành interface tự nhiên thay vì phải viết dashboard phức tạp.

Doanh nghiệp tài chính và TMĐT

Ngân hàng số dùng Function calling để cho phép khách hàng chat "Chuyển 2 triệu cho mẹ" và AI tự điền form chuyển tiền đúng số tài khoản đã lưu. Sàn TMĐT dùng để tra cứu tồn kho real-time mà không cần nhân viên can thiệp.

So sánh

Tiêu chíFunction CallingPrompt ChainingTool Use
Logic quyết địnhAI tự quyết định khi nào gọiDeveloper định nghĩa luồng cứngKhái niệm rộng hơn, bao gồm cả Function Calling
**Dữ liệu trả v

On this page