AI Hunter
Member
Bạn hỏi ChatGPT: "Thời tiết Hà Nội hôm nay thế nào?"
ChatGPT (phiên bản cũ) sẽ trả lời: "Xin lỗi, dữ liệu của tôi chỉ cập nhật đến năm 2023..."
Tại sao? Vì LLM là một bộ não bị cô lập trong phòng kín. Nó không có internet, không có đồng hồ, không có kết nối với thế giới bên ngoài.
Function Calling chính là cách chúng ta trao cho bộ não đó các công cụ: Một trình duyệt web, một ứng dụng email, hay một database. Thay vì trả lời bằng văn bản, AI sẽ trả lời bằng một "Lệnh" (JSON) để yêu cầu phần mềm của bạn thực thi một việc gì đó.
Bước 1: Định nghĩa hàm (Tools)
Đây là "bản menu" các chức năng mà bạn cho phép AI sử dụng.
Bước 2: Gửi yêu cầu cho AI
Chúng ta dùng OpenAI API (hoặc Ollama đều hỗ trợ chuẩn này).
Bước 3: Xử lý Lệnh từ AI
Kiểm tra xem AI có muốn gọi hàm không.
Ví dụ User hỏi: "Gửi email báo giá Bitcoin cho sếp."
AI sẽ tự động suy luận ra chuỗi hành động:
1. Gọi hàm `get_bitcoin_price()` -> Nhận về $95,000.
2. Gọi hàm `send_email(to="[email protected]", body="Giá BTC là $95k")`.
3. Báo cáo User: "Đã gửi xong".
Đây chính là tiền đề của các AI Agent tự động hóa doanh nghiệp.
ChatGPT (phiên bản cũ) sẽ trả lời: "Xin lỗi, dữ liệu của tôi chỉ cập nhật đến năm 2023..."
Tại sao? Vì LLM là một bộ não bị cô lập trong phòng kín. Nó không có internet, không có đồng hồ, không có kết nối với thế giới bên ngoài.
Function Calling chính là cách chúng ta trao cho bộ não đó các công cụ: Một trình duyệt web, một ứng dụng email, hay một database. Thay vì trả lời bằng văn bản, AI sẽ trả lời bằng một "Lệnh" (JSON) để yêu cầu phần mềm của bạn thực thi một việc gì đó.
1. Cơ chế hoạt động: Vòng lặp suy luận (Reasoning Loop)
Function Calling không phải là AI tự chạy code. Nó là quy trình 4 bước:- Bước 1 (User): Hỏi "Giá Bitcoin hiện tại là bao nhiêu?"
- Bước 2 (LLM): Suy nghĩ... "Mình không biết giá. Nhưng mình có công cụ `get_crypto_price`. Mình sẽ yêu cầu gọi công cụ này." -> Output: JSON { "function": "get_crypto_price", "args": "BTC" }
- Bước 3 (App): Code Python của bạn nhận JSON, gọi API sàn giao dịch, lấy giá về (ví dụ: $95,000).
- Bước 4 (LLM): Nhận con số $95,000 và trả lời user: "Giá Bitcoin hiện tại là 95,000 USD."
2. Thực hành: Xây dựng AI quản lý đèn thông minh
Chúng ta sẽ giả lập một con bot có khả năng Bật/Tắt đèn trong nhà.Bước 1: Định nghĩa hàm (Tools)
Đây là "bản menu" các chức năng mà bạn cho phép AI sử dụng.
Python:
# Giả lập hàm điều khiển đèn
def control_light(location, status):
# Trong thực tế, đoạn này sẽ gọi API của Smart Home (HomeAssistant, Xiaomi...)
print(f"🔌 ACTION: Đèn tại {location} đã được chuyển sang trạng thái {status}")
return {"status": "success", "location": location, "state": status}
# Định nghĩa Schema cho LLM hiểu
tools = [
{
"type": "function",
"function": {
"name": "control_light",
"description": "Bật hoặc tắt đèn tại một vị trí cụ thể trong nhà",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Vị trí đèn (ví dụ: phòng khách, bếp)",
},
"status": {
"type": "string",
"enum": ["on", "off"],
"description": "Trạng thái mong muốn",
},
},
"required": ["location", "status"],
},
},
}
]
Bước 2: Gửi yêu cầu cho AI
Chúng ta dùng OpenAI API (hoặc Ollama đều hỗ trợ chuẩn này).
Python:
from openai import OpenAI
import json
client = OpenAI() # Nhớ set API Key
messages = [{"role": "user", "content": "Trời tối quá, bật đèn phòng khách lên giúp tôi!"}]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
tool_choice="auto", # Để AI tự quyết định có dùng tool hay không
)
response_message = response.choices[0].message
tool_calls = response_message.tool_calls
Bước 3: Xử lý Lệnh từ AI
Kiểm tra xem AI có muốn gọi hàm không.
Python:
if tool_calls:
# AI quyết định gọi hàm
print("🤖 AI muốn thực hiện hành động:", tool_calls[0].function.name)
# Parse tham số từ JSON mà AI gửi
args = json.loads(tool_calls[0].function.arguments)
print("Chi tiết:", args)
# Output: {'location': 'phòng khách', 'status': 'on'}
# Thực thi hàm Python thật
if tool_calls[0].function.name == "control_light":
function_response = control_light(
location=args["location"],
status=args["status"]
)
# (Quan trọng) Gửi kết quả chạy hàm ngược lại cho AI để nó báo cáo user
messages.append(response_message)
messages.append({
"role": "tool",
"tool_call_id": tool_calls[0].id,
"content": json.dumps(function_response)
})
final_response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
)
print("💬 AI trả lời:", final_response.choices[0].message.content)
# Output: "Đã bật đèn phòng khách cho bạn rồi nhé!"
3. Ứng dụng nâng cao: Multi-step Reasoning
Sức mạnh thực sự nằm ở việc AI có thể gọi nhiều hàm liên tiếp.Ví dụ User hỏi: "Gửi email báo giá Bitcoin cho sếp."
AI sẽ tự động suy luận ra chuỗi hành động:
1. Gọi hàm `get_bitcoin_price()` -> Nhận về $95,000.
2. Gọi hàm `send_email(to="[email protected]", body="Giá BTC là $95k")`.
3. Báo cáo User: "Đã gửi xong".
Đây chính là tiền đề của các AI Agent tự động hóa doanh nghiệp.
Kết luận
Function Calling biến AI từ một "nhà thông thái" chỉ biết nói suông thành một "nhân viên mẫn cán" biết làm việc. Nếu bạn muốn xây dựng trợ lý ảo thực sự hữu dụng trong năm 2026, đây là kỹ năng bắt buộc phải có.Bài viết liên quan