AI Function Calling: Kỹ Thuật Để LLM Sử Dụng Công Cụ

AI Function Calling: Kỹ Thuật Để LLM Sử Dụng Công Cụ Thực Tế

Function calling (gọi hàm) là kỹ thuật cho phép mô hình ngôn ngữ lớn (LLM) tương tác với thế giới thực bằng cách gọi các API, truy xuất dữ liệu và thực thi mã lệnh. Thay vì chỉ trả lời văn bản, LLM giờ đây có thể tìm giá Bitcoin, gửi email, truy vấn database hay điều khiển IoT — tất cả thông qua một hệ thống function calling có cấu trúc.

Hình minh họa quy trình function calling của LLM

Kỹ thuật này là nền tảng của AI Agent — hệ thống AI tự chủ thực hiện tác vụ phức tạp thông qua nhiều bước gọi hàm liên tiếp. OpenAI giới thiệu function calling vào tháng 6/2023 và hiện nayhầu hết các nền tảng LLM lớn đều hỗ trợ.

Function Calling Hoạt Động Thế Nào?

Quy trình function calling gồm 4 bước chính:

  1. Định nghĩa hàm: Developer khai báo danh sách hàm với tên, mô tả tham số (JSON Schema) cho LLM.
  2. Gửi prompt: Người dùng nhập câu hỏi hoặc yêu cầu đến LLM kèm danh sách hàm.
  3. LLM quyết định: Mô hình phân tích yêu cầu, chọn hàm phù hợp, trích xuất tham số từ ngữ cảnh.
  4. Thực thi và phản hồi: Ứng dụng chạy hàm được gọi, trả kết quả về cho LLM để tổng hợp thành câu trả lời cuối cùng.

Ví dụ: Khi người dùng hỏi “Giá BTC hiện tại bao nhiêu?”, LLM không tự tạo số liệu mà trả về lệnh gọi get_bitcoin_price(currency: "USD"). Ứng dụng thực thi lệnh này qua API và LLM tổng hợp kết quả thành câu trả lời.

So Sánh Các Nền Tảng Hỗ Trợ

Nền tảng Cách khai báo Đặc điểm
OpenAI (GPT-4o, GPT-4.1) tools array trong API Pioneer, hỗ trợ parallel function calls, tool_choice
Anthropic Claude tools array, JSON schema Claude 3.5+ hỗ trợ native, thinking mode kết hợp tool use
Google Gemini function_declarations Hỗ trợ inline function, code execution tích hợp
Open Source (Llama, Mistral, Qwen) Tùy framework (llama.cpp, vLLM) Hỗ trợ qua template, cần fine-tune hoặc prompt engineering

Ví Dụ Thực Tế Với OpenAI API

Định nghĩa hàm tìm kiếm thời tiết:

{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "Lấy thông tin thời tiết hiện tại cho một thành phố",
    "parameters": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string",
          "description": "Tên thành phố, ví dụ: Ho Chi Minh"
        },
        "unit": {
          "type": "string",
          "enum": ["celsius", "fahrenheit"],
          "description": "Đơn vị nhiệt độ"
        }
      },
      "required": ["city"]
    }
  }
}
Giao diện IDE khi debug function calling

Gọi API với hàm trên:

import openai
import json

client = openai.OpenAI()

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Lấy thông tin thời tiết hiện tại cho một thành phố",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
            },
            "required": ["city"]
        }
    }
}]

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Thời tiết Hà Nội hôm nay thế nào?"}],
    tools=tools,
    tool_choice="auto"
)

# Kiểm tra xem model có gọi function không
msg = response.choices[0].message
if msg.tool_calls:
    for call in msg.tool_calls:
        func_name = call.function.name
        args = json.loads(call.function.arguments)
        print(f"Gọi: {func_name}({args})")
        # get_weather({'city': 'Hà Nội'})

Muilti-Step Agent: Gọi Hàm Liên Tục

AI Agent sử dụng function calling theo vòng lặp: LLM gọi hàm → nhận kết quả → quyết định gọi tiếp hoặc dừng lại. Mô hình ReAct (Reason + Act) phổ biến nhất:

  1. Thought: LLM phân tích tình huống và lập kế hoạch.
  2. Action: Gọi hàm phù hợp.
  3. Observation: Nhận kết quả từ hàm.
  4. Lặp lại cho đến khi có đủ thông tin để trả lời.

Ví dụ Ask: “So sánh giá BTC và ETH, cho tôi biết nên mua cái nào?”

  • Bước 1: LLM gọi get_price("BTC") → $67,500
  • Bước 2: LLM gọi get_price("ETH") → $3,450
  • Bước 3: LLM gọi get_price_history("BTC", "7d") → +5.2%
  • Bước 4: LLM gọi get_price_history("ETH", "7d") → -1.8%
  • Bước 5: LLM tổng hợp phân tích từ cả 4 kết quả → câu trả lời cuối

MCP Protocol: Chuẩn Kết Nối Công Cụ

Model Context Protocol (MCP) là giao thức chuẩn hóa cách AI model kết nối với các công cụ bên ngoài. MCP định nghĩa cách server cung cấp tool và client gọi tool — giúp một function definition dùng được với nhiều LLM khác nhau.

So sánh function calling truyền thống với MCP:

  • Truyền thống: Mỗi LLM có format tools riêng, phải viết adapter.
  • MCP: Server một lần, nhiều client (Claude, GPT, Gemini) đều dùng được.

Pitfalls và Best Practices

  • Validation: Luôn validate tham số từ LLM trước khi thực thi — model có thể tạo tham số sai.
  • Rate limiting: Giới hạn số lần gọi hàm mỗi request để tránh vòng lặp vô hạn.
  • Error handling: Khi hàm lỗi, trả message rõ ràng cho LLM để model có thể retry hoặc báo người dùng.
  • Mô tả hàm: Viết description rõ ràng — LLM dùng mô tả để quyết định gọi hàm nào.
  • Parallel calls: Hỗ trợ gọi nhiều hàm cùng lúc để giảm latency (OpenAI, Claude).
  • Security: Không bao giờ cho LLM gọi hàm nguy hiểm (xóa DB, gửi tiền) mà không có human approval.

Kết Luận

Function calling là bước nhảy vọt lớn nhất cho LLM từ chatbot thuần túy sang AI Agent thực thụ. Bằng cách định nghĩa hàm rõ ràng, validate tham số và thiết kế vòng lặp ReAct hợp lý, developer có thể xây dựng hệ thống AI giải quyết tác vụ phức tạp — từ phân tích dữ liệu đến quản lý hệ thống. Kết hợp với MCP protocol, function calling đang trở thành chuẩn mực mới cho cách AI tương tác với thế giới thực.

Tham khảo thêm: OpenAI Function Calling Guide | Anthropic Tool Use | MCP Protocol

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

LoRA Fine-Tuning: Cách Tinh Chỉnh LLM Với Chi Phí Thấp

LoRA (Low-Rank Adaptation) đã trở thành kỹ thuật chuẩn để tinh chỉnh mô hình ngôn ngữ lớn (LLM) với chi phí phần cứng thấp hơn đáng kể so với fine-tuning…

Xem thêm

Ollama: Chạy LLM Local Miễn Phí Với Dòng Lệnh Đơn Giản

Ollama là công cụ mã nguồn mở giúp chạy các mô hình ngôn ngữ lớn (LLM) trên máy local một cách đơn giản, không cần cấu hình server hay GPU…

Xem thêm

Mistral Large 3 — Mô Hình AI Mã Nguồn Mở 675B Tham Số

Mistral Large 3 — Mô Hình AI Mã Nguồn Mở 675B Tham Số Mistral AI đã phát hành Mistral Large 3 vào tháng 12/2025 — mô hình lớn nhất và…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất