Kỹ năng và Công cụ AI là gì

Cách AI agents sử dụng các khả năng đóng gói — từ function calls đến MCP servers. Hướng dẫn thực tế cho nhà phát triển xây dựng với LLMs.

7 phút đọc Cập nhật: Tháng 4, 2026

🔧 Skill là gì?

Trong bối cảnh các AI agents, một skill (còn gọi là tool or function) là một khả năng đóng gói, tái sử dụng mà LLM có thể gọi để tương tác với thế giới bên ngoài cửa sổ ngữ cảnh của nó. Skills kết nối khoảng cách giữa hiểu ngôn ngữ và hành động thực tế.

Mỗi skill có bốn thành phần:

  • Name — một định danh duy nhất mà model dùng để tham chiếu skill (ví dụ, web_search)
  • Description — văn bản ngôn ngữ tự nhiên giải thích skill làm gì và khi nào dùng; LLM đọc điều này để quyết định khi nào gọi skill
  • Input schema — một định nghĩa có cấu trúc của các đối số (JSON Schema); model điền các giá trị này dựa trên nhiệm vụ
  • Implementation — code thực thi: một API call, truy vấn database, lệnh shell, hoặc bất kỳ thao tác nào khác

Ví dụ: A get_weather skill có mô tả "Fetches current weather for a city", chấp nhận { "city": "string" } làm đầu vào, và gọi một weather API. LLM không bao giờ thấy API key hay HTTP call — nó chỉ nhận kết quả trả về dưới dạng văn bản.

⚙️ Cách Gọi Tool Hoạt Động

Khi agent có quyền truy cập skills, LLM không gọi trực tiếp — nó requests một cuộc gọi bằng cách tạo một output có cấu trúc. Runtime (code ứng dụng của bạn) thực thi cuộc gọi thực tế và trả lại kết quả. Đây là vòng chu trình đầy đủ:

  1. Đăng ký Tool — Code của bạn gửi cho model danh sách skills khả dụng kèm mô tả và schema của chúng
  2. Suy luận của model — LLM đọc nhiệm vụ và các tools khả dụng, quyết định tool nào cần gọi và với đối số gì
  3. Yêu cầu gọi Tool — Model xuất một thông điệp "tool call" có cấu trúc (ví dụ, { "tool": "web_search", "args": { "query": "current Gemini models" } })
  4. Execution — Runtime của bạn gọi function, API, hoặc service thực tế
  5. Tiêm kết quả (Result injection) — Kết quả được thêm trở lại ngữ cảnh cuộc trò chuyện
  6. Suy luận tiếp tục — Model đọc kết quả và hoặc gọi tool khác, hỏi câu follow-up, hoặc tạo câu trả lời cuối cùng

Vòng lặp này có thể lặp nhiều lần trong một lượt. Một tác vụ agentic phức tạp có thể gọi 10–20 tools theo thứ tự trước khi tạo phản hồi cuối cùng.

📊 Skills vs Plugins vs MCP Servers

Thuật ngữ đã tiến hóa nhanh. Đây là mối quan hệ khái niệm theo lịch sử:

EraNameCách nó hoạt độngStatus
2023 ChatGPT Plugins Phần mở rộng người dùng cài đặt với OpenAPI spec; ChatGPT gọi chúng qua HTTP Deprecated (thay thế bằng GPTs + tools)
2023 OpenAI Function Calling Định nghĩa JSON Schema ở cấp API; model xuất một gọi function có cấu trúc, code của bạn thực thi nó Active — đổi tên thành "tool use"
2023– Tool Use / Skills Giống như function calling; Anthropic đặt thuật ngữ "tool use", người khác dùng "skills" hoặc "functions" Active — tiêu chuẩn hiện tại
2024– MCP Servers Giao thức chuẩn hóa (Anthropic, Dec 2024) để đóng gói và phân phối tool servers; bất kỳ MCP client nào có thể kết nối tới MCP server nào Active — hệ sinh thái đang phát triển

Phân biệt chính: Tool use truyền thống được định nghĩa trực tiếp trong code ứng dụng của bạn. MCP servers là các tiến trình độc lập phơi bày tools qua giao thức chuẩn — khiến chúng có thể tái sử dụng giữa các AI clients khác nhau (Claude Desktop, Cursor, VS Code, agents tùy chỉnh). Đọc thêm: What Is MCP.

🗂️ Danh mục Tool & Mức độ Rủi ro

Không phải tất cả tools đều có cùng mức rủi ro. Phân nhóm theo mức rủi ro giúp xác định action space và nơi cần thêm các checkpoint human-in-the-loop:

CategoryExamplesRiskRecommendation
Read-only web_search, read_file, get_weather, list_dir Low Cho phép tự động; ghi log mọi cuộc gọi
Write (local) write_file, create_dir, edit_code Medium Giới hạn trong thư mục workspace được sandboxed
Network / External send_email, post_to_slack, call_api Medium–High HITL approval cho các hành động không thể hoàn tác
OS / Shell run_command, execute_script, install_package High Hạn chế ở môi trường containerized; cần HITL
Destructive delete_file, drop_table, revoke_access Critical Luôn yêu cầu xác nhận rõ ràng từ con người

🏗️ Cấu trúc của một Skill tốt

Quyết định thiết kế quan trọng nhất cho một skill là description. LLM đọc mô tả để quyết định tool nào cần gọi — một mô tả kém dẫn đến chọn tool sai, bỏ sót cuộc gọi, hoặc đối số mơ hồ.

Điều gì làm cho mô tả hiệu quả

  • Rõ ràng khi nào cần dùng nó — "Use this tool when the user asks about real-time data or current events" tốt hơn "Searches the web"
  • Nêu rõ những gì nó KHÔNG làm — "Does not return historical data older than 30 days"
  • Mô tả định dạng output — "Returns a JSON array of search results with title, url, and snippet fields"
  • Giữ dưới 200 từ — mô tả dài hơn ~200 token có thể làm quá tải attention của model khi nhiều tools được đăng ký

Nguyên tắc thiết kế schema

  • Bắt buộc vs tùy chọn — Chỉ đánh dấu fields required nếu thực sự cần; fields tùy chọn có defaults giảm lỗi của model
  • Dùng enums cho các giá trị bị giới hạn"format": {"enum": ["json", "markdown", "text"]} ngăn giá trị ảo (hallucinated)
  • Ưu tiên tools idempotent — Các tools có thể thử lại an toàn (đọc, tra cứu) an toàn hơn so với hành động một lần (gửi, xóa)
  • Trả về dữ liệu có cấu trúc — JSON responses dễ để model suy luận hơn so với văn bản không cấu trúc

💡 Ví dụ Thực tế

Tên skillNó làm gìĐối số chínhRisk
web_search Truy vấn công cụ tìm kiếm và trả về kết quả hàng đầu query: string, num_results?: number Low
read_file Đọc một file từ thư mục workspace path: string, offset?: number, limit?: number Low
write_file Tạo hoặc ghi đè một file path: string, content: string Medium
run_tests Thực thi test suite của project và trả về kết quả filter?: string Medium
browser_screenshot Chuyển hướng đến một URL và trả về screenshot url: string Medium
send_email Gửi email cho một hoặc nhiều người nhận to: string[], subject: string, body: string High — luôn HITL
run_shell Thực thi một lệnh shell tùy ý command: string, cwd?: string High — cần sandbox

✅ Thực hành Tốt nhất

Quyền tối thiểu

Cấp cho mỗi agent chỉ những tools nó cần cho nhiệm vụ cụ thể. Một agent trả lời FAQ không cần write_file or send_email. Không gian hành động càng nhỏ, vùng ảnh hưởng nếu agent bị thao túng càng nhỏ. Xem: Excessive Agency.

Kiểm tra tất cả cuộc gọi tool

Ghi log mọi cuộc gọi tool với đối số và kết quả. Điều này hỗ trợ gỡ lỗi, phân bổ chi phí, và phát hiện hành vi bất thường (ví dụ, một agent đọc ~/.ssh/ khi nó chỉ nên truy cập thư mục project). Các nền tảng AgentOps như LangSmith làm việc này dễ dàng hơn.

Human-in-the-loop cho các hành động không thể hoàn tác

Bất kỳ hành động nào khó hoặc không thể hoàn tác — gửi tin nhắn, xóa dữ liệu, thực hiện giao dịch — nên yêu cầu xác nhận bằng con người rõ ràng trước khi thực hiện. Xây dựng các checkpoint HITL vào runtime agent của bạn, không chỉ prompt. Prompt có thể bị ghi đè; code thì không.

Cẩn trọng với tool poisoning

Nếu bạn cho phép agents cài đặt hoặc khám phá MCP servers động, một server độc hại có thể đăng ký một tool với mô tả chứa hướng dẫn ẩn. Luôn xem xét mô tả tool trước khi thêm vào registry của agent. Xem: Tool Poisoning.

Viết trả lỗi rõ ràng

Khi tool thất bại, trả về một error có cấu trúc với đủ ngữ cảnh để model phục hồi hoặc leo thang — không phải stack trace raw exception. Ví dụ: { "error": "rate_limited", "retry_after": 5 }. Một lỗi được mô tả tốt cho phép agent thử lại, dùng tool dự phòng, hoặc thông báo người dùng một cách lịch sự.