Kỹ năng AI (AI skill) là một bộ chỉ dẫn được gắn vào chat profile để quyết
định AI đóng vai trò gì, trả lời theo cách nào và được phép gọi những công
cụ (tool) nào. Một kỹ năng gồm hai phần:
  • Chỉ dẫn hệ thống (system prompt): đoạn văn bản được gửi kèm mọi tin
    nhắn để AI biết vai trò và cách trả lời, người dùng không nhìn thấy.
  • Tên công cụ được phép: danh sách tool AI được gọi khi trả lời, ví dụ
    tra cứu bài viết kiến thức, tìm sản phẩm.
Kỹ năng được quản lý ở màn hình EzyAI → Các kỹ năng AI
(/ezyai/ai-skills).

Kỹ năng hoạt động thế nào

flowchart LR
    subgraph Skill["Kỹ năng AI"]
        SP["Chỉ dẫn hệ thống"]
        TL["Tên công cụ được phép"]
    end
    Skill -->|gắn vào| P["Chat profile"]
    P --> CHAT["Mỗi lượt chat"]
    SP --> SM["System message gửi cho AI"]
    TL --> TOOLS["Tool AI được gọi"]
    CHAT --> SM
    CHAT --> TOOLS
Khi người dùng chat với một profile:
  • Chỉ dẫn hệ thống của tất cả kỹ năng gắn với profile được ghép lại và đặt
    trước system message của lượt chat.
  • AI chỉ thấy các tool nằm trong hợp các tool được phép của những kỹ
    năng đó. Không có kỹ năng nào cho phép tool thì AI trả lời thuần văn bản,
    không gọi tool.
  • Nếu cấu hình topic guard (ezyai_topic_guard_allowed_topics), chỉ dẫn
    giới hạn chủ đề được thêm vào sau cùng.
Ví dụ một profile gắn hai kỹ năng:
Kỹ năngChỉ dẫn hệ thốngTool được phép
Tư vấn sản phẩmBạn là nhân viên tư vấn, luôn tìm sản phẩm trước khi trả lờisearch_knowledge_data_list, search_knowledge_data_by_type_and_id
Giọng văn thương hiệuXưng "mình", gọi khách là "bạn", trả lời ngắn gọn(không có)
AI sẽ nhận cả hai chỉ dẫn và được dùng hai tool tìm kiếm.

Danh sách kỹ năng

Màn hình /ezyai/ai-skills hiển thị các kỹ năng với cột ID, **Tên
hiển thị, Trạng thái, Cập nhật lúc và Hành động** (xem, sửa,
xoá).
  • Lọc theo Trạng thái: tất cả, bản nháp, đã xuất bản, ...
  • Chọn Số lượng mỗi trang: 12, 24, 50, 100, 200.
  • Dùng nút Trước / Sau để chuyển trang.

Tạo kỹ năng

Bấm Thêm ở màn hình danh sách để mở form /ezyai/ai-skills/add.
TrườngBắt buộcMô tả
Tên hiển thịCóChỉ hiển thị trong danh sách và giao diện quản trị, không gửi cho AI
Mô tảKhôngGhi chú cho quản trị viên, không gửi cho AI và không dùng để chọn kỹ năng
Chỉ dẫn hệ thốngKhôngNội dung gửi cho AI ở mọi tin nhắn; để trống thì kỹ năng không thêm chỉ dẫn nào
Trạng tháiCóBản nháp (DRAFT) hoặc Đã xuất bản (PUBLISHED)
Bấm Lưu (hoặc nhấn Enter trong ô nhập). Lưu thành công sẽ chuyển sang
trang chi tiết của kỹ năng vừa tạo. Nếu thiếu Tên hiển thị, form báo
lỗi displayName: required.
Kỹ năng được lưu như một bài viết có type = AI_SKILL: tên hiển thị là
tiêu đề, mô tả là phần tóm tắt, chỉ dẫn hệ thống là nội dung. Mỗi lần thêm,
sửa, xoá đều được ghi lịch sử bài viết.

Viết chỉ dẫn hệ thống

Một số gợi ý để chỉ dẫn hiệu quả:
  • Nêu vai trò rõ ràng: AI là ai, phục vụ ai, mục tiêu là gì.
  • Nói rõ khi nào dùng tool: ví dụ "khi khách hỏi về sản phẩm, luôn tìm
    trong dữ liệu cửa hàng trước khi trả lời". AI chỉ gọi được tool đã được
    tick ở phần công cụ được phép.
  • Quy định cách trình bày: độ dài, giọng văn, ngôn ngữ, có kèm link
    nguồn hay không.
  • Mỗi kỹ năng một mục đích: tách vai trò, giọng văn, chính sách thành
    các kỹ năng riêng để dễ tái sử dụng cho nhiều profile.
  • Không đưa thông tin nhạy cảm (api key, mật khẩu, dữ liệu cá nhân) vào
    chỉ dẫn, vì nội dung này được gửi tới nhà cung cấp AI ở mọi tin nhắn.
Ví dụ:
Bạn là trợ lý tư vấn của cửa hàng. Trả lời bằng tiếng Việt, ngắn gọn,
thân thiện.

Khi khách hỏi về sản phẩm, bài viết hay chính sách, hãy dùng công cụ tìm
kiếm dữ liệu của cửa hàng trước khi trả lời. Luôn giữ nguyên link nguồn
trong câu trả lời. Nếu không tìm thấy thông tin, hãy nói rõ là chưa có
thông tin thay vì tự đoán.

Chọn công cụ được phép

Công cụ được chọn ở trang chi tiết kỹ năng (/ezyai/ai-skills/{skillId}),
mục Tên công cụ được phép, không nằm trong form thêm/sửa.
  1. Chọn Nguồn công cụ:
    NguồnLấy danh sách tool từ
    AdminCác tool đăng ký ở admin, qua /graphql/api/v1/mcp/tools
    WebCác tool đăng ký ở web, qua /graphql/api/v1/mcp/web/tools
    SocketCác tool trong zone socket, qua command mcpToolList của socket monitor (cần bật socket ở admin)
    NguồnLấy danh sách tool từ
    AdminCác tool đăng ký ở admin, qua /graphql/api/v1/mcp/tools
    WebCác tool đăng ký ở web, qua /graphql/api/v1/mcp/web/tools
    SocketCác tool trong zone socket, qua command mcpToolList của socket monitor (cần bật socket ở admin)
  2. Tick các tool muốn cho phép. Di chuột lên tên tool để xem mô tả. Có nút
    Chọn tất cả và Bỏ chọn tất cả.
  3. Có thể đổi nguồn để tick thêm tool ở nguồn khác, các lựa chọn trước đó
    vẫn được giữ.
  4. Bấm Lưu ở mục này để lưu danh sách tool.
Chọn nguồn theo nơi profile được dùng: chatbot chạy trong ezychat (khung
chat nhúng lên website) gọi AI từ socket plugin, nên chọn tool ở nguồn
Socket; chat thử ở trang quản trị chạy trong admin plugin.
Tool có sẵn của EzyAI:
ToolChức năng
search_knowledge_data_listTìm dữ liệu tri thức (bài viết, sản phẩm, ...) theo từ khoá, trả về danh sách đoạn trích kèm link nguồn
search_knowledge_data_by_type_and_idLấy chi tiết một mục tri thức theo loại và id/mã
Các plugin khác có thể đăng ký thêm tool (cặp event handler
[tool]_mcp_tool_schema_event và [tool]_mcp_tool_event), tool mới sẽ xuất
hiện ngay trong danh sách mà không cần sửa EzyAI.
sequenceDiagram
    participant A as Admin
    participant UI as Trang chi tiết kỹ năng
    participant SRC as Nguồn tool<br/>(admin / web / socket)
    participant API as Admin API

    A->>UI: Mở trang chi tiết
    UI->>API: GET /api/v1/ai-skills/{skillId}/allowed-tool-names
    A->>UI: Chọn nguồn công cụ
    UI->>SRC: Lấy danh sách tool
    SRC-->>UI: name, description
    A->>UI: Tick tool, bấm Lưu
    UI->>API: PUT /api/v1/ai-skills/{skillId}/allowed-tool-names

Gắn kỹ năng vào chat profile

  1. Vào EzyAI → Các dịch vụ AI chat, chọn dịch vụ, mở chi tiết profile.
  2. Ở mục Các kỹ năng AI, gõ tên kỹ năng vào ô Tìm kỹ năng AI, chọn
    kỹ năng rồi bấm Thêm.
  3. Lặp lại để gắn nhiều kỹ năng. Có thể gỡ kỹ năng khỏi profile ở bảng bên
    dưới.
Thay đổi kỹ năng (chỉ dẫn, tool) có hiệu lực ngay ở lượt chat tiếp theo của
mọi profile đang gắn kỹ năng đó, không cần khởi động lại.
Xem thêm hướng dẫn tạo profile ở

Sửa và xoá kỹ năng

  • Sửa: bấm biểu tượng sửa ở danh sách, hoặc vào
    /ezyai/ai-skills/{skillId}/edit. Form giống form thêm. Danh sách tool
    được sửa ở trang chi tiết.
  • Xoá: bấm Xoá ở danh sách hoặc trang chi tiết, xác nhận ở hộp
    thoại. Kỹ năng và toàn bộ tool được phép của nó bị xoá. Nên gỡ kỹ năng
    khỏi các profile trước khi xoá.

Kiểm tra kỹ năng

Sau khi gắn kỹ năng vào profile, dùng khung Trò chuyện ở trang chi tiết
dịch vụ để thử:
Hiện tượngHướng xử lý
AI không làm theo chỉ dẫnKiểm tra kỹ năng đã được gắn vào đúng profile và chỉ dẫn hệ thống không trống
AI không tìm dữ liệu của hệ thốngKiểm tra đã tick tool tìm kiếm ở đúng nguồn, và chỉ dẫn có yêu cầu dùng tool
AI gọi tool nhưng trả lời thiếuTăng setting ezyai_max_allowed_tool_interactions (mặc định 2 vòng gọi tool)
Không thấy tool ở nguồn SocketSocket chưa được bật hoặc chưa kết nối, tải lại trang và kiểm tra cấu hình socket của admin

API liên quan

Tất cả nằm dưới tiền tố /ezyai/api/v1 của admin và yêu cầu đăng nhập.
MethodĐường dẫnMô tả
GET/ai-skillsDanh sách kỹ năng, lọc theo status, phân trang
POST/ai-skills/addThêm kỹ năng, trả về skillId
PUT/ai-skills/{skillId}Sửa kỹ năng
DELETE/ai-skills/{skillId}Xoá kỹ năng
GET/ai-skills/{skillId}/allowed-tool-namesLấy danh sách tool được phép
PUT/ai-skills/{skillId}/allowed-tool-namesLưu danh sách tool được phép
Ví dụ body khi thêm kỹ năng:
{
  "displayName": "Tư vấn sản phẩm",
  "description": "Dùng cho chatbot bán hàng",
  "systemPrompt": "Bạn là nhân viên tư vấn của cửa hàng...",
  "status": "PUBLISHED"
}
Ví dụ body khi lưu tool được phép:
{
  "allowedToolNames": [
    "search_knowledge_data_list",
    "search_knowledge_data_by_type_and_id"
  ]
}