JuniorAI Agent

Tool calling (function calling) là gì? Khi dùng tool calling, mô hình có tự chạy hàm của bạn không?

Tool calling là cách cho LLM dùng dữ liệu và hành động bên ngoài nó. Ý quan trọng nhất cần nói là mô hình không tự chạy hàm nào cả: nó chỉ viết ra một yêu cầu, còn code của bạn quyết định có chạy hay không.

Một lần gọi công cụ đi qua bốn bước:

  1. Ứng dụng gửi request kèm danh sách công cụ, mỗi công cụ có tên, mô tả (khi nào nên dùng) và JSON Schema cho đầu vào.
  2. Nếu cần, mô hình trả về khối tool_use (tên công cụ và đối số) với stop_reason là tool_use, thay vì câu trả lời.
  3. Ứng dụng chạy hàm thật, ví dụ đọc đơn 1041 trong database, rồi gửi kết quả lại trong khối tool_result có cùng id.
  4. Mô hình đọc kết quả và viết câu trả lời cuối.

Nên nói thêm vài ý để cho thấy bạn đã làm thật:

  • Đầu vào do mô hình viết là dữ liệu không đáng tin, phải kiểm tra như dữ liệu người dùng gửi lên (định dạng, quyền truy cập). Schema chỉ bảo đảm kiểu dữ liệu, không bảo đảm giá trị hợp lý.
  • Lỗi của công cụ nên trả về cho mô hình (ví dụ is_error: true, "không có đơn 1099") để nó hỏi lại khách, thay vì làm cả ứng dụng dừng.
  • Mỗi lần dùng công cụ tốn thêm một lượt gọi API, và định nghĩa công cụ được tính vào token đầu vào ở mọi request.
  • Khi câu hỏi cần nhiều bước (tìm mã đơn theo số điện thoại rồi mới xem trạng thái), ứng dụng phải lặp cho tới khi mô hình trả lời bằng chữ. Đó là vòng lặp agent.