---
title: AI Models
description: Bán truy cập AI model qua gateway riêng: thêm provider OpenAI/Anthropic, đồng bộ model, đặt giá và cho khách gọi một endpoint bằng API key và ví của họ.
url: https://nexcmp.com/vi/docs/infrastructure/ai-models/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# AI Models {#ai-models}

> **Vị trí trong trang admin:** System › Admin › License & updates (`/license`) để bật module. Sau đó là Services › AI Models: Providers (`/ai/providers`), Models (`/ai/models`), Profit (`/ai/profit`) và Audit (`/ai/audit`). Khách hàng sử dụng AI › API trong portal khách hàng.

## Chức năng {#what-it-does}

AI Models là một tầng gateway và thanh toán ngay trên panel của bạn. Khách hàng nhận API key và gọi tới **một endpoint duy nhất trên tên miền của bạn**, theo định dạng tương thích OpenAI hoặc Anthropic. Bạn chọn những model sẽ cung cấp và chi phí cho mỗi 1 triệu token. NexCMP kiểm tra key, hạn mức và số dư ví, gửi yêu cầu tới provider bạn đã thêm, đo lường lượng token và trừ tiền vào ví trả trước của khách hàng.

**Bạn tự cung cấp các nguồn model.** NexCMP khi cài đặt không có sẵn provider, model, địa chỉ mặc định hay giá bán nào. Hệ thống không cung cấp model, API key, token hay tài khoản provider.

::: warning Kiểm tra điều khoản của nguồn model trước
Nhiều nguồn model hạn chế việc bán lại hoặc chuyển tiếp quyền truy cập cho bên thứ ba. Chỉ sử dụng các nguồn mà bạn được phép dùng và bán lại, đồng thời tuân thủ các điều khoản của họ và quy định pháp luật hiện hành. Trang này không phải là lời khuyên pháp lý.
:::

AI Models là một sản phẩm độc lập với **AI Chat and AI Agent** (module **AI**, xem [AI providers](https://nexcmp.com/vi/docs/ai/ai-providers/)). Hai module này không phụ thuộc vào nhau.

## Yêu cầu {#requirements}

| Hạng mục | Yêu cầu |
|---|---|
| Module | **AI Models** được bật trong License & updates, Modules. Mặc định tính năng này tắt. |
| Providers | Một hoặc nhiều nguồn model bạn được phép bán lại, mỗi nguồn có API tương thích OpenAI (`/chat/completions`), API tương thích Anthropic (`/messages`), hoặc cả hai. Mỗi nguồn cần một base URL và một API key. |
| Mạng | Panel phải kết nối được tới từng provider qua **HTTPS trên cổng 443** bằng tên miền công khai. Provider chạy trên host nội bộ, cổng khác hoặc HTTP thông thường phải được liệt kê trong **Allowed internal hosts** (cài đặt `ai_endpoint_allow`). |
| Khách hàng | Tài khoản khách hàng có địa chỉ email đã xác thực và số dư trong ví. |
| Phần cứng | Không. NexCMP chỉ chuyển tiếp yêu cầu: không cần GPU và không lưu file model. |

## Chuẩn bị hạ tầng {#prepare-the-infrastructure}

1. Lấy API key từ từng nguồn model bạn sẽ sử dụng và ghi lại base URL của nguồn đó (ví dụ `https://api.example.com/v1`).
2. Kiểm tra điều khoản bán lại của nguồn model.
3. Nếu nguồn model chạy trong mạng nội bộ của bạn, hãy xác định địa chỉ của nguồn, ví dụ `http://10.0.0.5:8000/v1`. Bạn sẽ liệt kê `10.0.0.5:8000` trong mục **Allowed internal hosts**.

## Kết nối trong NexCMP {#connect-in-nexcmp}

### Bước 1: Bật module {#_1-turn-the-module-on}

Mở **System › Admin › License & updates**, tìm thẻ **Module** và bật **AI Models**. Menu sẽ tải lại và **Services › AI Models** xuất hiện. Khi module tắt, các trang khách hàng, trang admin và gateway đều phản hồi `404 module_disabled`, và không có provider nào được liên hệ.

![Thẻ Module khi công tắc AI Models đang bật](https://nexcmp.com/vi/docs/images/infrastructure/ai-models-01-modules.webp)

### 2. Thêm provider {#_2-add-a-provider}

1. Mở **AI Models › Providers** và chọn **Add provider**.
2. Nhập một **slug** ngắn, **name** (chỉ bạn nhìn thấy), **type** (OpenAI-compatible, Anthropic-compatible hoặc Both), **base URL** cùng **API key**, và **priority** (số nhỏ hơn sẽ được ưu tiên thử trước).
3. Lưu lại. Key được lưu trữ dưới dạng mã hóa và sau đó chỉ hiển thị bốn ký tự cuối. Chỉ có thể nhập key từ phiên quản trị viên đã đăng nhập.

Chỉ dùng **Both** cho gateway thực sự hỗ trợ cả hai định dạng. NexCMP **không** chuyển đổi qua lại giữa hai định dạng: model được cung cấp bởi provider tương thích OpenAI được truy cập tại `/ai/v1/chat/completions`, và provider tương thích Anthropic tại `/ai/v1/messages`.

![Trang Providers liệt kê ba provider mẫu kèm type, priority và status](https://nexcmp.com/vi/docs/images/infrastructure/ai-models-02-providers.webp)

### 3. Kiểm tra kết nối {#_3-test-the-connection}

Chọn **Test connection** trên provider. NexCMP sẽ đọc `GET <base URL>/models` cùng với key và báo **ok**, hoặc lý do thất bại: **auth** (sai key), **blocked**, **billing**, hoặc **unreachable**. Giới hạn tối đa 6 lần kiểm tra mỗi phút.

### 4. Đồng bộ hóa model {#_4-sync-the-models}

Chọn **Sync models**. NexCMP sẽ đọc danh sách model của provider và thêm từng model mới ở trạng thái **tắt và chưa có giá**. Model không còn xuất hiện trong danh sách của provider sẽ bị gắn cờ cảnh báo. Khi module đang bật, danh sách cũng được tự động đồng bộ mỗi 6 giờ một lần (cài đặt `ai_models_sync_hours`).

### 5. Thiết lập giá và bật model {#_5-set-prices-and-switch-models-on}

1. Mở **AI Models › Models**.
2. Với mỗi model muốn bán, hãy đặt **selling price** theo đô la Mỹ cho mỗi 1 triệu token: **input**, **cached input** và **output**.
3. Bạn có thể tùy chọn nhập **cost** của model. Sau đó **Profit** sẽ hiển thị doanh thu so với chi phí theo ngày và theo model; giá bán thấp hơn chi phí cộng với biên lợi nhuận tối thiểu (cài đặt `ai_min_margin_pct`, mặc định 10) sẽ bị từ chối trừ khi bạn xác nhận chấp nhận bán lỗ có chủ đích. **Set price from cost** sử dụng mức markup do bạn chọn; không có markup mặc định.
4. Bật model lên. Model chưa có giá bán thì không thể bật. Giá cached input nếu để bằng 0 sẽ được tính theo giá input thông thường.

![Trang Models với giá bán input, cached input, output và các công tắc bật tắt](https://nexcmp.com/vi/docs/images/infrastructure/ai-models-03-models.webp)

### 6. Định tuyến và chuyển vùng dự phòng (failover) {#_6-routes-and-failover}

Trên từng model, **Routes** liệt kê các provider cung cấp model đó theo thứ tự. Thêm provider thứ hai làm dự phòng, sắp xếp thứ tự và có thể tùy ý đặt tên model khác nhau cho từng provider (tên gửi tới provider có thể khác với tên bạn hiển thị công khai). Khi một provider trả về lỗi server, lỗi xác thực/thanh toán, thiếu model hoặc bị rate limit, NexCMP sẽ tự động thử route tiếp theo. Nếu yêu cầu đọc bị timeout sau khi request đã được gửi đi, nó sẽ **không** được gửi sang provider khác để tránh bạn bị tính phí hai lần.

Mỗi provider được điều tiết ở mức `ai_provider_rpm` request mỗi phút (mặc định 50). Nếu provider liên tục trả về lỗi xác thực hoặc thanh toán, NexCMP sẽ cảnh báo quản trị viên qua Telegram khi Telegram đã được thiết lập.

### 7. Bật công tắc mở bán {#_7-open-the-sale-switch}

Ở đầu các trang AI Models, **công tắc mở bán** (cài đặt `feature_ai_models`) mặc định tắt. Khi tắt, khách hàng sẽ thấy dịch vụ chưa mở và bảng giá công khai sẽ báo trạng thái không khả dụng. Hãy kiểm tra để chắc chắn có ít nhất một model đã bật, có giá bán và có route kèm key hợp lệ, sau đó bật công tắc lên.

### Khách hàng có thể làm gì {#what-customers-can-do}

Trong portal khách hàng, tại **AI › API**:

- **Models** hiển thị các model và giá bán của bạn, base URL cùng các câu lệnh mẫu dùng ngay.
- **API Keys**: tạo, đổi tên, xoay vòng (rotate), vô hiệu hóa và xóa key. Secret key chỉ hiển thị một lần duy nhất; hệ thống chỉ lưu chuỗi băm (hash). Trên từng key: cho phép chọn model, hạn dùng, hạn mức mềm (cảnh báo) và hạn mức cứng (chặn với `402`), giới hạn request mỗi phút và token mỗi phút.
- **Usage** theo model, key và ngày, hỗ trợ xuất dữ liệu.
- **Logs**: lịch sử request có thể lọc (thời gian, key, model, token, chi phí, status, độ trễ). **Prompt và phản hồi hoàn toàn không được ghi lại.** Mặc định log được lưu giữ trong 90 ngày (`ai_log_retention_days`).
- **Settings**: ngân sách tài khoản và địa chỉ email nhận cảnh báo ngân sách.
- **Playground**: trò chuyện với model, so sánh các model song song và sao chép mã tương ứng.

![Trang API Keys của khách hàng với các base URL cho cả hai định dạng API](https://nexcmp.com/vi/docs/images/infrastructure/ai-models-04-keys.webp)

Các endpoint gateway, trên domain của bạn:

```text
POST /ai/v1/chat/completions      OpenAI-compatible
POST /ai/v1/messages              Anthropic-compatible (also /ai/v1/messages/count_tokens)
GET  /ai/v1/models                model list
GET  /ai/v1/models/pricing        public price list, no key needed
```

### Ví và thanh toán {#wallet-and-billing}

Mức sử dụng AI được trừ vào cùng một ví trả trước như mọi dịch vụ khác. Trước khi request được gửi đến provider, NexCMP sẽ giữ trước số tiền tối đa mà request có thể tiêu tốn; nếu số dư dưới mức tối thiểu (`ai_min_balance_cents`, mặc định 20 cent) hoặc quá ít, request sẽ bị từ chối với `402 insufficient_balance` và **không có provider nào được gọi**. Mức sử dụng được tổng hợp theo từng tài khoản và kết toán vào sổ cái ví sau mỗi giờ, với chu kỳ quét mỗi 5 phút; mức sử dụng chưa kết toán đã được trừ trước vào số dư mà gateway ghi nhận.

Reseller có thể bán AI Models trên domain riêng của họ: mức tăng giá hoặc chiết khấu của họ áp dụng trên giá bán của bạn và ví bán buôn của họ bị trừ theo giá bán buôn. Nút bật/tắt AI riêng cho từng reseller, mặc định bật, dùng để kiểm soát reseller nào được phép bán.

## Kiểm tra {#verify}

1. Sau bước 3, **Test connection** sẽ hiển thị **ok** và số lượng model.
2. Sau bước 4, các model mới được liệt kê, ở trạng thái tắt, chưa có giá.
3. Với tư cách khách hàng có tiền trong ví, hãy tạo một key và gọi đến gateway:

   ```bash
   curl https://your-domain/ai/v1/chat/completions \
     -H "Authorization: Bearer sk-ai-…" -H "Content-Type: application/json" \
     -d '{"model":"model-one","messages":[{"role":"user","content":"hello"}]}'
   ```

   Phản hồi `200` sẽ chứa câu trả lời của model. **Usage** hiển thị request, và **Profit** sẽ hiển thị request đó nếu bạn đã nhập chi phí.
4. Khi số dư ví bằng 0, lệnh gọi tương tự sẽ trả về `402 insufficient_balance`.

## Giới hạn và lưu ý {#limits-and-notes}

- Module này không tích hợp sẵn provider, model hay giá, và không bao giờ tự động đọc bảng giá từ provider.
- Các tool chạy phía provider và tính phí theo lượt gọi, chẳng hạn như tìm kiếm web, sẽ bị từ chối vì không thể đo lường mức sử dụng. Chỉ có một danh sách ngắn các tham số request được chuyển tiếp.
- Mức sử dụng token được lấy từ phản hồi của provider; nếu phản hồi không có, NexCMP sẽ ước tính và đánh dấu bản ghi là ước tính.
- Lỗi từ provider được làm sạch trước khi gửi tới khách hàng (tên, host, địa chỉ và tên model của provider đều được gỡ bỏ). Khách hàng không bao giờ thấy provider nào đã xử lý request.
- Khách hàng truy cập gateway thông qua domain của panel, vì vậy TLS của domain đó phải hoạt động bình thường.
- NexCMP không cung cấp thỏa thuận mức dịch vụ (SLA), fine-tuning hay GPU hosting cho module này.

## Xử lý sự cố {#troubleshooting}

| Hiện tượng | Nguyên nhân và cách xử lý |
|---|---|
| Mọi trang AI Models và gateway đều phản hồi `404 module_disabled` | Module đang tắt. Hãy bật **AI Models** trong License & updates, Modules. |
| Thêm provider thất bại với lỗi `endpoint_host_not_allowed`, `endpoint_must_be_https` hoặc `invalid_endpoint_port` | Base URL phải là HTTPS trên cổng 443 tại một domain name công khai. Đối với host nội bộ, cổng khác hoặc HTTP thông thường, hãy thêm `host:port` vào **Allowed internal hosts**. |
| `blocked_endpoint` | Địa chỉ là một IP, hoặc tên miền phân giải về một địa chỉ riêng tư. Hãy thêm địa chỉ đó vào **Allowed internal hosts** nếu bạn muốn như vậy. |
| **Test connection** báo `auth` | Key không chính xác hoặc không có quyền truy cập. Hãy nhập lại key. |
| Không thể bật model (`no_price`) | Hãy đặt giá bán trước. |
| Khách hàng nhận được `503 ai_unavailable` | Nút bán đang tắt, hoặc nút AI của reseller đang tắt. |
| Khách hàng nhận được `503 upstream_unavailable` | Không có route nào đang bật kèm key để phục vụ model đó ở định dạng được yêu cầu. Hãy kiểm tra các route của model và loại provider. |
| Khách hàng nhận được `402 insufficient_balance` | Số dư ví dưới mức tối thiểu hoặc không đủ cho request. Hãy yêu cầu khách hàng nạp tiền. |
