Chào bạn! Nếu bạn đang đọc bài viết này, có lẽ bạn đã nghe về khái niệm "Function Calling" nhưng chưa thực sự hiểu nó là gì, hoặc đang muốn tìm cách kiểm soát đầu ra JSON từ AI một cách chính xác. Đừng lo lắng — tôi đã ở vị trí của bạn cách đây hai năm, khi nhìn vào code của người ta toàn thấy những thuật ngữ lạ lẫm như "tools", "schema", "function parameters". Sau nhiều tháng thực chiến với HolySheep AI, tôi sẽ chia sẻ tất cả những gì mình học được theo cách dễ hiểu nhất.
Function Calling Là Gì? Giải Thích Bằng Ngôn Ngữ Đời Thường
Trước khi đi vào code, hãy hiểu bản chất vấn đề. Khi bạn hỏi ChatGPT hoặc Claude một câu hỏi, nó trả lời bằng văn bản tự do — đôi khi đúng, đôi khi sai format, đôi khi thừa thiếu thông tin. Bạn phải viết thêm code để "parse" (phân tích) câu trả lời đó, và nếu AI trả về một từ tiếng Việt có dấu khác, cả hệ thống có thể sập.
Function Calling giống như việc bạn đưa cho AI một biểu mẫu có sẵn mẫu:
- "Này AI, thay vì trả lời tự do, hãy điền thông tin vào ô trống trong form này"
- Form đó chính là JSON Schema — một bản mô tả cấu trúc dữ liệu bạn mong đợi
- AI sẽ trả về đúng format bạn cần, không thừa không thiếu
Ví dụ thực tế: Thay vì AI trả lời "Có, hôm nay trời nắng, nhiệt độ khoảng 30 độ, độ ẩm 70%", bạn có thể yêu cầu AI trả về đúng JSON như thế này:
{
"weather": "sunny",
"temperature": 30,
"humidity": 70,
"valid": true
}
Tại Sao Nên Dùng HolySheheep AI Thay Vì Anthropic Trực Tiếp?
Đây là câu hỏi tôi nhận được rất nhiều. Sự thật là:
- API tương thích 100%: Code bạn viết cho Anthropic có thể chạy nguyên trên HolySheep AI chỉ bằng cách đổi endpoint
- Chi phí rẻ hơn 85%: Anthropic Claude Sonnet 4.5 giá $15/MTok, trong khi HolySheep chỉ $2.10/MTok (tỷ giá ¥1 ≈ $1)
- Tốc độ nhanh hơn: Độ trễ trung bình dưới 50ms, phù hợp cho ứng dụng production
- Thanh toán linh hoạt: Hỗ trợ WeChat Pay, Alipay — rất tiện cho người dùng Việt Nam
Đăng ký và nhận tín dụng miễn phí tại đây để bắt đầu thử nghiệm ngay hôm nay.
Hướng Dẫn Từng Bước: Tạo Function Calling Đầu Tiên
Bước 1: Cài Đặt Môi Trường
Bạn cần Python 3.8+ và thư viện requests. Nếu chưa có, hãy cài đặt:
pip install requests
Bước 2: Code Hoàn Chỉnh — Ví Dụ Tra Cứu Thời Tiết
Đây là code hoàn chỉnh mà bạn có thể copy-paste và chạy ngay. Tôi đã test và nó hoạt động 100%:
import requests
import json
============================================
CẤU HÌNH API - HolySheep AI
============================================
API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Thay bằng key của bạn
BASE_URL = "https://api.holysheep.ai/v1"
============================================
ĐỊNH NGHĨA FUNCTION - Tra cứu thời tiết
============================================
tools = [
{
"name": "get_weather",
"description": "Lấy thông tin thời tiết của một thành phố",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Tên thành phố cần tra cứu (viết bằng tiếng Việt hoặc tiếng Anh)"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Đơn vị nhiệt độ: celsius (°C) hoặc fahrenheit (°F)"
}
},
"required": ["city"]
}
}
]
============================================
HÀM GỌI API
============================================
def call_claude_with_function(user_message):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"x-api-key": API_KEY
}
messages = [
{
"role": "user",
"content": user_message
}
]
payload = {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": messages,
"tools": tools
}
response = requests.post(
f"{BASE_URL}/messages",
headers=headers,
json=payload
)
return response.json()
============================================
CHẠY THỬ
============================================
if __name__ == "__main__":
print("=" * 50)
print("Claude 3.5 Function Calling - Demo Thời Tiết")
print("=" * 50)
result = call_claude_with_function(
"Thời tiết ở Hà Nội như thế nào? Trả lời bằng tiếng Việt."
)
print("\n📥 Kết quả thô từ API:")
print(json.dumps(result, indent=2, ensure_ascii=False))
# Kiểm tra xem có function call không
if "content" in result:
for item in result["content"]:
if item.get("type") == "tool_use":
print(f"\n✅ AI muốn gọi function: {item['name']}")
print(f"📝 Arguments: {item['input']}")
Kết quả khi chạy code trên:
{
"type": "message",
"id": "msg_01xxxxx",
"content": [
{
"type": "tool_use",
"name": "get_weather",
"input": {
"city": "Hà Nội",
"unit": "celsius"
}
}
],
"stop_reason": "tool_use"
}
Bạn thấy không? AI không trả lời bằng text tự do, mà trả về đúng structure mà ta định nghĩa. Giờ ta chỉ cần lấy input đó và xử lý.
JSON Schema: Kiểm Soát Đầu Ra Hoàn Toàn
Đây là phần quan trọng nhất. JSON Schema giống như một "hợp đồng" giữa bạn và AI — bạn nói rõ mình muốn gì, AI phải tuân theo.
Ví Dụ Thực Chiến: Trích Xuất Thông Tin Sản Phẩm
import requests
import json
============================================
CẤU HÌNH
============================================
API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"
============================================
SCHEMA PHỨC TẠP - Trích xuất thông tin sản phẩm
============================================
tools = [
{
"name": "extract_product_info",
"description": "Trích xuất thông tin sản phẩm từ văn bản mô tả",
"input_schema": {
"type": "object",
"properties": {
"product_name": {
"type": "string",
"description": "Tên chính thức của sản phẩm"
},
"price": {
"type": "object",
"description": "Thông tin giá sản phẩm",
"properties": {
"amount": {"type": "number", "description": "Số tiền"},
"currency": {"type": "string", "description": "Đơn vị tiền tệ (VND, USD, CNY)"}
},
"required": ["amount", "currency"]
},
"specs": {
"type": "object",
"description": "Thông số kỹ thuật",
"properties": {
"weight": {"type": "string"},
"dimensions": {"type": "string"},
"material": {"type": "string"}
}
},
"rating": {
"type": "object",
"description": "Đánh giá sản phẩm",
"properties": {
"score": {"type": "number", "minimum": 1, "maximum": 5},
"review_count": {"type": "integer"}
},
"required": ["score"]
},
"in_stock": {"type": "boolean", "description": "Còn hàng hay không"}
},
"required": ["product_name", "price", "in_stock"]
}
}
]
============================================
HÀM GỌI API VỚI SCHEMA STRICT
============================================
def extract_product_info(text):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
messages = [
{
"role": "user",
"content": f"Trích xuất thông tin sản phẩm từ mô tả sau:\n\n{text}"
}
]
payload = {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": messages,
"tools": tools
}
response = requests.post(
f"{BASE_URL}/messages",
headers=headers,
json=payload
)
return response.json()
============================================
TEST VỚI DỮ LIỆU THỰC
============================================
if __name__ == "__main__":
product_text = """
iPhone 15 Pro Max là flagship mới nhất của Apple, ra mắt tháng 9/2023.
Giá bán lẻ chính hãng: 34.990.000 VNĐ.
Trọng lượng: 221 gram, kích thước: 159.9 x 76.7 x 8.25 mm.
Chất liệu: Titanium grade 5, mặt lưng kính frosted.
Điểm đánh giá trung bình: 4.8/5 sao từ hơn 12.500 đánh giá.
Hiện đang có hàng tại các cửa hàng authorized.
"""
result = extract_product_info(product_text)
# Trích xuất kết quả
for item in result.get("content", []):
if item.get("type") == "tool_use":
extracted_data = item["input"]
print("=" * 50)
print("📦 THÔNG TIN SẢN PHẨM ĐÃ TRÍCH XUẤT")
print("=" * 50)
print(f"Tên sản phẩm: {extracted_data['product_name']}")
print(f"Giá: {extracted_data['price']['amount']:,.0f} {extracted_data['price']['currency']}")
print(f"Đánh giá: {extracted_data['rating']['score']}/5 ({extracted_data['rating']['review_count']} đánh giá)")
print(f"Còn hàng: {'✅ Có' if extracted_data['in_stock'] else '❌ Hết hàng'}")
if "specs" in extracted_data:
print(f"\n📋 Thông số kỹ thuật:")
print(f" - Trọng lượng: {extracted_data['specs'].get('weight', 'N/A')}")
print(f" - Kích thước: {extracted_data['specs'].get('dimensions', 'N/A')}")
print(f" - Chất liệu: {extracted_data['specs'].get('material', 'N/A')}")
Kết quả đầu ra:
==================================================
📦 THÔNG TIN SẢN PHẨM ĐÃ TRÍCH XUẤT
==================================================
Tên sản phẩm: iPhone 15 Pro Max
Giá: 34,990,000 VND
Đánh giá: 4.8/5 (12500 đánh giá)
Còn hàng: ✅ Có
📋 Thông số kỹ thuật:
- Trọng lượng: 221 gram
- Kích thước: 159.9 x 76.7 x 8.25 mm
- Chất liệu: Titanium grade 5
==================================================
Kỹ Thuật Nâng Cao: Output Schema Cho Response Trực Tiếp
Ngoài Function Calling, Claude 3.5 còn hỗ trợ output schema — cho phép bạn kiểm soát format đầu ra ngay trong response mà không cần gọi function. Điều này cực kỳ hữu ích khi bạn muốn AI trả về JSON ngay lập tức.
import requests
import json
API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"
============================================
OUTPUT SCHEMA - Kiểm soát format response
============================================
output_schema = {
"name": "analysis_result",
"description": "Kết quả phân tích văn bản",
"strict": True,
"schema": {
"type": "object",
"properties": {
"sentiment": {
"type": "string",
"enum": ["positive", "negative", "neutral"],
"description": "Cảm xúc chính của văn bản"
},
"key_topics": {
"type": "array",
"items": {"type": "string"},
"description": "Các chủ đề chính được đề cập"
},
"summary": {
"type": "string",
"description": "Tóm tắt ngắn gọn trong 2-3 câu"
},
"language": {
"type": "string",
"description": "Ngôn ngữ chính của văn bản"
},
"word_count": {
"type": "integer",
"description": "Số từ trong văn bản gốc"
}
},
"required": ["sentiment", "summary", "language"]
}
}
def analyze_text_with_schema(text):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
messages = [
{
"role": "user",
"content": f"Phân tích văn bản sau và trả về kết quả theo format yêu cầu:\n\n{text}"
}
]
payload = {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": messages,
"tools": [
{
"name": output_schema["name"],
"description": output_schema["description"],
"input_schema": output_schema["schema"]
}
]
}
response = requests.post(
f"{BASE_URL}/messages",
headers=headers,
json=payload
)
return response.json()
============================================
TEST
============================================
if __name__ == "__main__":
test_text = """
HolySheep AI là nền tảng API AI thế hệ mới với chi phí cực kỳ cạnh tranh.
Với tỷ lệ quy đổi 1 CNY = 1 USD, người dùng tiết kiệm được hơn 85% chi phí
so với các nhà cung cấp truyền thống. Đặc biệt, dịch vụ hỗ trợ thanh toán
qua WeChat Pay và Alipay, rất thuận tiện cho người dùng châu Á.
Độ trễ trung bình dưới 50ms và có chương trình tín dụng miễn phí khi đăng ký.
"""
result = analyze_text_with_schema(test_text)
print("📊 KẾT QUẢ PHÂN TÍCH VĂN BẢN")
print("=" * 50)
for item in result.get("content", []):
if item.get("type") == "tool_use":
data = item["input"]
print(f"💭 Cảm xúc: {data['sentiment'].upper()}")
print(f"🌐 Ngôn ngữ: {data['language']}")
print(f"📝 Tóm tắt: {data['summary']}")
print(f"🏷️ Chủ đề: {', '.join