Tool Calling: Cách LLM Tương Tác Với Thế Giới Bên Ngoài

Karify98 & Amy 🌸·
Cover Image for Tool Calling: Cách LLM Tương Tác Với Thế Giới Bên Ngoài

LLM Không Chỉ Biết Nói

Một chatbot trả lời câu hỏi — bình thường. Nhưng khi LLM tự gọi API để tra cứu đơn hàng, query database để phân tích dữ liệu, hay gửi email khi có sự cố — đó là lúc tool calling phát huy tác dụng.

Không có tool calling, LLM chỉ là người nói giỏi. Có tool calling, nó thành người làm giỏi.

Tool Calling Hoạt Động Như Thế Nào?

Tool calling là cơ chế cho phép model AI chọn và gọi hàm bên ngoài dựa trên ngữ cảnh cuộc hội thoại. Quy trình gồm 3 bước:

  1. Định nghĩa tool — developer mô tả các hàm có sẵn (tên, tham số, mô tả) dưới dạng JSON Schema
  2. Model chọn tool — LLM phân tích câu hỏi, quyết định gọi hàm nào, với tham số gì
  3. Thực thi và trả kết quả — client chạy hàm, gửi kết quả ngược lại cho model để sinh câu trả lời cuối cùng

Điểm mấu chốt: model không tự chạy hàm. Nó chỉ quyết định "gọi gì, với gì". Việc thực thi nằm ở phía client — developer kiểm soát hoàn toàn.

Code Ví Dụ: OpenAI Tool Calling

import OpenAI from "openai";

const openai = new OpenAI();

// 1. Định nghĩa tool
const tools = [{
  type: "function" as const,
  function: {
    name: "get_weather",
    description: "Lấy thời tiết hiện tại theo thành phố",
    parameters: {
      type: "object",
      properties: {
        city: { type: "string", description: "Tên thành phố" }
      },
      required: ["city"]
    }
  }
}];

// 2. Gọi model — nó sẽ quyết định có cần gọi tool không
const response = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Thời tiết Hà Nội hôm nay thế nào?" }],
  tools,
  tool_choice: "auto"
});

const toolCall = response.choices[0].message.tool_calls?.[0];

// 3. Nếu model chọn gọi tool → thực thi
if (toolCall) {
  const result = await getWeather(JSON.parse(toolCall.function.arguments));

  // 4. Gửi kết quả ngược lại cho model
  const final = await openai.chat.completions.create({
    model: "gpt-4o",
    messages: [
      { role: "user", content: "Thời tiết Hà Nội hôm nay thế nào?" },
      response.choices[0].message,
      { role: "tool", tool_call_id: toolCall.id, content: JSON.stringify(result) }
    ]
  });

  console.log(final.choices[0].message.content);
}

Khi Nào Nên Dùng Tool Calling?

  • Tra cứu dữ liệu realtime — thời tiết, giá stock, trạng thái đơn hàng
  • Thao tác hệ thống — tạo issue, gửi notification, cập nhật database
  • Multi-step workflowAgent tự gọi nhiều tool liên tiếp để hoàn thành task phức tạp
  • Structured action — khi cần model output dạng action thay vì text

Lưu Ý Quan Trọng

  • Mô tả tool phải rõ ràng — model chọn tool dựa vào mô tả. Mơ hồ = chọn sai
  • Validate input — model có thể sinh tham số không hợp lệ. Luôn validate trước khi chạy
  • Hạn chế số tool — nhiều tool quá làm model "loãng", chọn kém. 5-10 tool là hợp lý
  • Kết hợp MCP — MCP chuẩn hóa cách định nghĩa và discover tool, giúp tool calling portable giữa các model

Tool calling là nền tảng của mọi Agent hiện đại. Hiểu cơ chế này, developer có thể biến LLM từ "trò chuyện" thành "hành động".


Bài viết là phần 8 của series AI For Developers — hướng dẫn thực tế cho developer muốn dùng AI trong công việc hàng ngày.

Bài viết được hỗ trợ bởi AI (Amy 🌸). Nội dung đã được kiểm duyệt bởi tác giả.