---
title: AI Models
description: ขายบริการโมเดล AI ผ่านเกตเวย์ของคุณ: เพิ่มผู้ให้บริการ OpenAI หรือ Anthropic ซิงค์โมเดล ตั้งราคา ให้ลูกค้าเรียก endpoint เดียวด้วยคีย์และวอลเล็ตของตน
url: https://nexcmp.com/th/docs/infrastructure/ai-models/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# AI Models {#ai-models}

> **ตำแหน่งในแผงผู้ดูแลระบบ:** System › Admin › License & updates (`/license`) เพื่อเปิดโมดูล จากนั้นไปที่ Services › AI Models: Providers (`/ai/providers`), Models (`/ai/models`), Profit (`/ai/profit`) และ Audit (`/ai/audit`) ลูกค้าจะใช้งานผ่าน AI › API ในพอร์ทัลลูกค้า

## What it does {#what-it-does}

AI Models คือเกตเวย์และเลเยอร์ระบบคิดเงินบนแผงควบคุมของคุณเอง ลูกค้าของคุณจะได้รับคีย์ API และเรียกใช้ **endpoint เดียวบนโดเมนของคุณ** ในรูปแบบที่เข้ากันได้กับ OpenAI หรือ Anthropic คุณสามารถเลือกได้ว่าจะให้บริการโมเดลใดและคิดค่าบริการเท่าใดต่อ 1 ล้านโทเค็น NexCMP จะตรวจสอบคีย์ ขีดจำกัด และวอลเล็ต จากนั้นส่งคำขอไปยังผู้ให้บริการที่คุณเพิ่มไว้ วัดปริมาณโทเค็น และหักเงินจากวอลเล็ตแบบเติมเงินของลูกค้า

**คุณต้องจัดเตรียมแหล่งโมเดลเอง** NexCMP ไม่มีผู้ให้บริการ ไม่มีโมเดล ไม่มีที่อยู่เริ่มต้น และไม่มีการตั้งราคามาให้ในตัว ทั้งยังไม่ได้จัดหาโมเดล, คีย์ API, โทเค็น หรือบัญชีผู้ให้บริการใดๆ

::: warning ตรวจสอบข้อกำหนดของแหล่งโมเดลของคุณก่อน
แหล่งโมเดลหลายแห่งจำกัดการขายต่อหรือการส่งต่อสิทธิ์การเข้าถึงให้แก่บุคคลที่สาม โปรดใช้เฉพาะแหล่งที่คุณได้รับอนุญาตให้ใช้งานและขายต่อได้เท่านั้น พร้อมทั้งปฏิบัติตามข้อกำหนดและกฎหมายที่บังคับใช้กับคุณ หน้านี้ไม่ใช่คำแนะนำทางกฎหมาย
:::

AI Models เป็นผลิตภัณฑ์คนละตัวกับ **AI Chat and AI Agent** (โมดูล **AI** โปรดดู [AI providers](https://nexcmp.com/th/docs/ai/ai-providers/)) โดยทั้งสองโมดูลนี้ไม่ขึ้นต่อกัน

## ข้อกำหนด {#requirements}

| Item | Requirement |
|---|---|
| โมดูล | เปิดใช้งาน **AI Models** ภายใต้ License & updates, Modules โดยค่าเริ่มต้นจะปิดอยู่ |
| Providers | แหล่งโมเดลตั้งแต่หนึ่งแห่งขึ้นไปที่คุณได้รับอนุญาตให้จำหน่ายต่อ โดยแต่ละแห่งมี API ที่เข้ากันได้กับ OpenAI (`/chat/completions`), API ที่เข้ากันได้กับ Anthropic (`/messages`) หรือทั้งสองแบบ ซึ่งแต่ละแห่งต้องมี base URL และ API key |
| Network | แผงควบคุมต้องสามารถเข้าถึงผู้ให้บริการแต่ละรายผ่าน **HTTPS บนพอร์ต 443** ที่ชื่อโดเมนสาธารณะได้ หากผู้ให้บริการอยู่บนโฮสต์ภายใน, ใช้พอร์ตอื่น หรือใช้ HTTP ธรรมดา จะต้องระบุไว้ใต้ **Allowed internal hosts** (การตั้งค่า `ai_endpoint_allow`) |
| ลูกค้า | บัญชีลูกค้าที่มียอดเงินในวอลเล็ตและยืนยันที่อยู่อีเมลแล้ว |
| ฮาร์ดแวร์ | ไม่มี NexCMP ทำหน้าที่ส่งต่อคำขอเท่านั้น จึงไม่ต้องใช้ GPU และไม่มีไฟล์โมเดล |

## เตรียมโครงสร้างพื้นฐาน {#prepare-the-infrastructure}

1. รับคีย์ API จากแหล่งโมเดลแต่ละแห่งที่คุณจะใช้งาน และจดบันทึก base URL ของแหล่งนั้นไว้ (เช่น `https://api.example.com/v1`)
2. ตรวจสอบข้อกำหนดและเงื่อนไขของแหล่งให้บริการเกี่ยวกับการจำหน่ายต่อ
3. หากแหล่งให้บริการทำงานอยู่ภายในเครือข่ายของคุณ ให้กำหนดที่อยู่ เช่น `http://10.0.0.5:8000/v1` โดยคุณจะต้องระบุ `10.0.0.5:8000` ไว้ใต้ **Allowed internal hosts**

## เชื่อมต่อใน NexCMP {#connect-in-nexcmp}

### 1. เปิดใช้งานโมดูล {#_1-turn-the-module-on}

เปิด **System › Admin › License & updates** ค้นหาการ์ด **Module** แล้วเปิดสวิตช์ **AI Models** จากนั้นเมนูจะโหลดใหม่และมี **Services › AI Models** ปรากฏขึ้นมา ในขณะที่โมดูลยังปิดอยู่ หน้าของลูกค้า หน้าของผู้ดูแลระบบ และ gateway ทั้งหมดจะตอบกลับเป็น `404 module_disabled` และจะไม่มีการติดต่อไปยัง provider ใดๆ

![การ์ด Module ที่เปิดสวิตช์ AI Models อยู่](https://nexcmp.com/th/docs/images/infrastructure/ai-models-01-modules.webp)

### 2. เพิ่ม provider {#_2-add-a-provider}

1. เปิด **AI Models › Providers** แล้วเลือก **Add provider**
2. ป้อน **slug** แบบสั้น, **name** (มีเพียงคุณเท่านั้นที่เห็น), **type** (OpenAI-compatible, Anthropic-compatible หรือ Both), **base URL** และ **API key** พร้อมทั้ง **priority** (ตัวเลขที่น้อยกว่าจะได้รับการทดลองใช้งานก่อน)
3. บันทึกข้อมูล key จะถูกจัดเก็บแบบเข้ารหัสและจะแสดงเฉพาะ 4 ตัวอักษรสุดท้ายในภายหลังเท่านั้น key จะสามารถป้อนได้จากเซสชันของผู้ดูแลระบบที่เข้าสู่ระบบแล้วเท่านั้น

ใช้ **Both** เฉพาะกับ gateway ที่รองรับทั้งสองรูปแบบอย่างแท้จริงเท่านั้น NexCMP **ไม่** แปลงข้อมูลข้ามระหว่างสองรูปแบบนี้: โมเดลที่ให้บริการโดย provider ที่เป็น OpenAI-compatible จะเข้าถึงได้ที่ `/ai/v1/chat/completions` และโมเดลที่ให้บริการโดย provider ที่เป็น Anthropic-compatible จะเข้าถึงได้ที่ `/ai/v1/messages`

![หน้า Providers ที่แสดงรายชื่อ provider ตัวอย่าง 3 รายการพร้อม type, priority และ status](https://nexcmp.com/th/docs/images/infrastructure/ai-models-02-providers.webp)

### 3. ทดสอบการเชื่อมต่อ {#_3-test-the-connection}

เลือก **Test connection** ที่ provider โดย NexCMP จะอ่าน `GET <base URL>/models` ด้วย key และรายงานผลเป็น **ok** หรือระบุสาเหตุที่ล้มเหลว: **auth** (key ไม่ถูกต้อง), **blocked**, **billing** หรือ **unreachable** การทดสอบจำกัดอยู่ที่ 6 ครั้งต่อนาที

### 4. ซิงค์โมเดล {#_4-sync-the-models}

เลือก **Sync models** โดย NexCMP จะอ่านรายชื่อโมเดลของ provider และเพิ่มแต่ละโมเดลใหม่ในสถานะ **ปิดใช้งานและไม่มีการกำหนดราคา** โมเดลที่ provider ไม่มีในรายการอีกต่อไปจะถูกทำเครื่องหมายไว้ ในขณะที่โมดูลเปิดอยู่ รายการจะได้รับการซิงค์โดยอัตโนมัติทุกๆ 6 ชั่วโมง (การตั้งค่า `ai_models_sync_hours`)

### 5. กำหนดราคาและเปิดใช้งานโมเดล {#_5-set-prices-and-switch-models-on}

1. เปิด **AI Models › Models**.
2. สำหรับแต่ละโมเดลที่คุณต้องการขาย ให้กำหนด **selling price** เป็นสกุลเงินดอลลาร์สหรัฐต่อ 1 ล้าน token: **input**, **cached input** และ **output**
3. คุณสามารถเลือกป้อน **cost** ของคุณสำหรับโมเดลได้ จากนั้น **Profit** จะแสดงรายได้เทียบกับต้นทุนตามรายวันและตามโมเดล และ selling price ที่ต่ำกว่าต้นทุนบวกมาร์จิ้นขั้นต่ำของคุณ (การตั้งค่า `ai_min_margin_pct` ค่าเริ่มต้นคือ 10) จะถูกปฏิเสธ เว้นแต่คุณจะยืนยันว่ายอมรับการขาดทุนโดยเจตนา ทั้งนี้ **Set price from cost** จะใช้ส่วนต่างราคา (markup) ที่คุณเลือก โดยไม่มี markup เริ่มต้น
4. เปิดใช้งานโมเดล โมเดลที่ไม่ได้กำหนด selling price จะไม่สามารถเปิดใช้งานได้ ราคา cached input ที่ปล่อยว่างไว้ที่ศูนย์จะถูกคิดค่าบริการในราคา input

![หน้า Models พร้อม selling price ของ input, cached input และ output รวมถึงสวิตช์เปิด-ปิด](https://nexcmp.com/th/docs/images/infrastructure/ai-models-03-models.webp)

### 6. Routes และ failover {#_6-routes-and-failover}

ในแต่ละโมเดล ส่วน **Routes** จะแสดงรายการ provider ที่ให้บริการตามลำดับ ให้เพิ่ม provider รายที่สองเป็น fallback กำหนดลำดับ และสามารถเลือกตั้งชื่อโมเดลที่แตกต่างกันสำหรับแต่ละ provider ได้ (ชื่อที่ส่งไปยัง provider อาจแตกต่างจากชื่อที่คุณเผยแพร่) เมื่อ provider ส่งกลับข้อผิดพลาดของเซิร์ฟเวอร์, ข้อผิดพลาดด้านสิทธิ์การใช้งานหรือการเรียกเก็บเงิน, ไม่พบโมเดล หรือติด rate limit ทาง NexCMP จะลองใช้เส้นทางถัดไป หากการอ่านข้อมูลหมดเวลาหลังจากส่งคำขอไปแล้ว ระบบจะ **ไม่** ส่งคำขอไปยัง provider รายอื่น เพื่อที่คุณจะได้ไม่ต้องจ่ายเงินซ้ำซ้อน

provider แต่ละรายจะถูกจำกัดอัตราคำขอไว้ที่ `ai_provider_rpm` คำขอต่อนาที (ค่าเริ่มต้นคือ 50) หาก provider ยังคงส่งกลับข้อผิดพลาดด้านสิทธิ์การใช้งานหรือการเรียกเก็บเงินอย่างต่อเนื่อง NexCMP จะแจ้งเตือนผู้ดูแลระบบทาง Telegram เมื่อมีการตั้งค่า Telegram ไว้

### 7. เปิดสวิตช์การขาย {#_7-open-the-sale-switch}

ที่ด้านบนของหน้า AI Models ส่วน **sale switch** (การตั้งค่า `feature_ai_models`) จะปิดอยู่โดยค่าเริ่มต้น ในขณะที่ปิดอยู่ ลูกค้าจะเห็นว่าบริการยังไม่เปิดให้บริการ และรายการราคาสาธารณะจะแสดงสถานะว่าไม่พร้อมให้บริการ โปรดตรวจสอบว่ามีโมเดลอย่างน้อยหนึ่งโมเดลที่เปิดใช้งาน มีการกำหนดราคาขาย และมีเส้นทางพร้อม key เรียบร้อยแล้ว จากนั้นจึงเปิดสวิตช์

### สิ่งที่ลูกค้าทำได้ {#what-customers-can-do}

ในพอร์ทัลลูกค้า **AI › API**:

- **Models** แสดงโมเดลและราคาของคุณ base URL และตัวอย่างคำสั่งที่พร้อมใช้งาน
- **API Keys**: สร้าง เปลี่ยนชื่อ หมุนเวียน ปิดใช้งาน และลบคีย์ ข้อมูลลับจะแสดงเพียงครั้งเดียว และจัดเก็บเฉพาะค่าแฮชเท่านั้น การตั้งค่าต่อคีย์: โมเดลที่อนุญาต วันหมดอายุ งบประมาณแบบ soft budget (แจ้งเตือน) และ hard budget (บล็อกด้วย `402`) รวมถึงจำนวนคำขอต่อนาทีและโทเคนต่อนาที
- **Usage** ตามโมเดล คีย์ และวัน พร้อมการส่งออกข้อมูล
- **Logs**: ประวัติคำขอที่สามารถกรองได้ (เวลา, คีย์, โมเดล, โทเคน, ค่าใช้จ่าย, สถานะ, latency) **ไม่มีการบันทึกพรอมต์และการตอบกลับ** บันทึกจะถูกเก็บไว้ 90 วันตามค่าเริ่มต้น (`ai_log_retention_days`)
- **Settings**: งบประมาณของบัญชีและที่อยู่อีเมลสำหรับการแจ้งเตือนงบประมาณ
- **Playground**: สนทนากับโมเดล เปรียบเทียบโมเดลแบบเคียงข้างกัน และคัดลอกโค้ดที่เกี่ยวข้อง

![หน้า API Keys ของลูกค้าพร้อม base URL สำหรับรูปแบบ API ทั้งสองแบบ](https://nexcmp.com/th/docs/images/infrastructure/ai-models-04-keys.webp)

เอนด์พอยต์เกตเวย์ บนโดเมนของคุณ:

```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
```

### วอลเล็ตและการเรียกเก็บเงิน {#wallet-and-billing}

การใช้งาน AI จะถูกหักจากวอลเล็ตแบบเติมเงินใบเดียวกับบริการอื่นๆ ทั้งหมด ก่อนที่คำขอจะถูกส่งไปยังผู้ให้บริการ NexCMP จะกันเงินไว้สำหรับค่าใช้จ่ายสูงสุดที่อาจเกิดขึ้นของคำขอนั้น หากยอดคงเหลือต่ำกว่าเกณฑ์ขั้นต่ำ (`ai_min_balance_cents` ค่าเริ่มต้นคือ 20 เซนต์) หรือมีไม่เพียงพอ คำขอจะถูกปฏิเสธด้วย `402 insufficient_balance` และ**จะไม่มีการเรียกไปยังผู้ให้บริการ** การใช้งานจะถูกรวบรวมเป็นรายบัญชีและบันทึกลงในรายการบัญชีแยกประเภทวอลเล็ตหลังจบแต่ละชั่วโมง โดยมีการกวาดข้อมูลทุก 5 นาที การใช้งานที่ยังไม่ได้ชำระจะถูกหักออกจากยอดคงเหลือที่เกตเวย์เห็นแล้ว

Reseller สามารถขาย AI Models บนโดเมนของตนเองได้ โดยมาร์กอัปหรือส่วนลดของพวกเขาจะมีผลกับราคาขายของคุณ และวอลเล็ตขายส่งของพวกเขาจะถูกหักตามราคาขายส่ง สวิตช์ AI แบบราย reseller ซึ่งเปิดไว้ตามค่าเริ่มต้น จะทำหน้าที่ควบคุมว่าใครสามารถขายได้บ้าง

## ตรวจสอบ {#verify}

1. หลังขั้นตอนที่ 3 **Test connection** จะแสดง **ok** และจำนวนโมเดล
2. หลังขั้นตอนที่ 4 โมเดลใหม่จะแสดงในรายการ โดยมีสถานะปิดอยู่และไม่มีราคา
3. ในฐานะลูกค้าที่มีเงินในวอลเล็ต ให้สร้างคีย์แล้วเรียกใช้งานเกตเวย์:

   ```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"}]}'
   ```

   การตอบกลับ `200` จะส่งคำตอบของโมเดลกลับมา **Usage** จะแสดงคำขอ และ **Profit** จะแสดงรายการนี้หากคุณป้อนต้นทุนไว้
4. เมื่อยอดเงินในวอลเล็ตเป็นศูนย์ การเรียกเดียวกันจะส่งกลับ `402 insufficient_balance`

## ข้อจำกัดและหมายเหตุ {#limits-and-notes}

- โมดูลนี้ไม่มีผู้ให้บริการ โมเดล หรือราคาในตัว และไม่มีการอ่านรายการราคาจากผู้ให้บริการแต่อย่างใด
- เครื่องมือที่ทำงานบนฝั่งผู้ให้บริการและคิดค่าบริการตามจำนวนครั้งที่เรียก เช่น การค้นหาเว็บ จะถูกปฏิเสธเนื่องจากไม่สามารถวัดปริมาณการใช้งานได้ และจะส่งต่อเฉพาะพารามิเตอร์คำขอตามรายการสั้นๆ เท่านั้น
- การใช้โทเคนจะอ้างอิงจากการตอบกลับของผู้ให้บริการ หากไม่มีการตอบกลับมา NexCMP จะประเมินยอดให้และทำเครื่องหมายเรคคอร์ดนั้นว่าเป็นการประเมิน
- ข้อผิดพลาดจากผู้ให้บริการจะถูกล้างข้อมูลก่อนส่งไปถึงลูกค้า (ชื่อ โฮสต์ ที่อยู่ และชื่อโมเดลของผู้ให้บริการจะถูกนำออก) ลูกค้าจะไม่เห็นว่าผู้ให้บริการรายใดเป็นผู้ประมวลผลคำขอ
- ลูกค้าเข้าถึงเกตเวย์ผ่านโดเมนของพาเนลคุณ ดังนั้น TLS ของโดเมนดังกล่าวจะต้องทำงานได้อย่างถูกต้อง
- NexCMP ไม่ได้ให้บริการข้อตกลงระดับการบริการ, การ fine-tuning หรือ GPU โฮสติ้งสำหรับโมดูลนี้

## การแก้ Problme {#troubleshooting}

| อาการ | สาเหตุและวิธีแก้ไข |
|---|---|
| ทุกหน้า AI Models และเกตเวย์ตอบกลับเป็น `404 module_disabled` | โมดูลปิดอยู่ ให้เปิด **AI Models** ภายใต้ License & updates, Modules |
| การเพิ่มผู้ให้บริการล้มเหลวด้วย `endpoint_host_not_allowed`, `endpoint_must_be_https` หรือ `invalid_endpoint_port` | base URL ต้องเป็น HTTPS บนพอร์ต 443 ที่โดเมนเนมสาธารณะ สำหรับโฮสต์ภายใน พอร์ตอื่น หรือ HTTP ธรรมดา ให้ระบุ `host:port` ภายใต้ **Allowed internal hosts** |
| `blocked_endpoint` | ที่อยู่ดังกล่าวเป็น IP หรือชื่อนั้นแปลงเป็นที่อยู่ส่วนตัว ให้ระบุไว้ภายใต้ **Allowed internal hosts** หากคุณต้องการใช้งานเช่นนั้น |
| **Test connection** แสดงข้อความ `auth` | คีย์ไม่ถูกต้องหรือไม่มีสิทธิ์การเข้าถึง โปรดป้อนคีย์ใหม่อีกครั้ง |
| ไม่สามารถเปิดใช้งานโมเดลได้ (`no_price`) | กำหนดราคาขายก่อน |
| ลูกค้าได้รับ `503 ai_unavailable` | สวิตช์การขายปิดอยู่ หรือสวิตช์ AI ของตัวแทนจำหน่ายปิดอยู่ |
| ลูกค้าได้รับ `503 upstream_unavailable` | ไม่มีเส้นทางที่เปิดใช้งานพร้อมคีย์ที่ให้บริการโมเดลดังกล่าวในรูปแบบที่ร้องขอ ตรวจสอบเส้นทางของโมเดลและประเภทผู้ให้บริการ |
| ลูกค้าได้รับ `402 insufficient_balance` | ยอดเงินในวอลเล็ตต่ำกว่าเกณฑ์ขั้นต่ำหรือไม่เพียงพอสำหรับคำขอ แจ้งให้ลูกค้าเติมเงิน |
