# คู่มือการใช้งาน

🌐 **Languages:** 🇺🇸 [English](../../USER_GUIDE.md) | 🇧🇷 [Português (Brasil)](../pt-BR/USER_GUIDE.md) | 🇪🇸 [Español](../es/USER_GUIDE.md) | 🇫🇷 [Français](../fr/USER_GUIDE.md) | 🇮🇹 [Italiano](../it/USER_GUIDE.md) | 🇷🇺 [Русский](../ru/USER_GUIDE.md) | 🇨🇳 [中文 (简体)](../zh-CN/USER_GUIDE.md) | 🇩🇪 [Deutsch](../de/USER_GUIDE.md) | 🇮🇳 [हिन्दी](../in/USER_GUIDE.md) | 🇹🇭 [ไทย](../th/USER_GUIDE.md) | 🇺🇦 [Українська](../uk-UA/USER_GUIDE.md) | 🇸🇦 [العربية](../ar/USER_GUIDE.md) | 🇯🇵 [日本語](../ja/USER_GUIDE.md) | 🇻🇳 [Tiếng Việt](../vi/USER_GUIDE.md) | 🇧🇬 [Български](../bg/USER_GUIDE.md) | 🇩🇰 [Dansk](../da/USER_GUIDE.md) | 🇫🇮 [Suomi](../fi/USER_GUIDE.md) | 🇮🇱 [עברית](../he/USER_GUIDE.md) | 🇭🇺 [Magyar](../hu/USER_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](../id/USER_GUIDE.md) | 🇰🇷 [한국어](../ko/USER_GUIDE.md) | 🇲🇾 [Bahasa Melayu](../ms/USER_GUIDE.md) | 🇳🇱 [Nederlands](../nl/USER_GUIDE.md) | 🇳🇴 [Norsk](../no/USER_GUIDE.md) | 🇵🇹 [Português (Portugal)](../pt/USER_GUIDE.md) | 🇷🇴 [Română](../ro/USER_GUIDE.md) | 🇵🇱 [Polski](../pl/USER_GUIDE.md) | 🇸🇰 [Slovenčina](../sk/USER_GUIDE.md) | 🇸🇪 [Svenska](../sv/USER_GUIDE.md) | 🇵🇭 [Filipino](../phi/USER_GUIDE.md)

คู่มือฉบับสมบูรณ์สำหรับการกำหนดค่าผู้ให้บริการ การสร้างคอมโบ การผสานรวมเครื่องมือ CLI และการปรับใช้ OmniRoute

---

## สารบัญ

- [Pricing at a Glance](#-pricing-at-a-glance)
- [Use Cases](#-use-cases)
- [Provider Setup](#-provider-setup)
- [CLI Integration](#-cli-integration)
- [Deployment](#-deployment)
- [Available Models](#-available-models)
- [Advanced Features](#-advanced-features)

---

## 💰 ราคาโดยสรุป

| ชั้น               | ผู้ให้บริการ     | ราคา             | รีเซ็ตโควต้า        | ดีที่สุดสำหรับ               |
| ------------------ | ---------------- | ---------------- | ------------------- | ---------------------------- |
| **💳 สมัครสมาชิก** | รหัสคลอดด์ (Pro) | $20/เดือน        | 5 ชม. + รายสัปดาห์  | สมัครสมาชิกแล้ว              |
|                    | Codex (พลัส/โปร) | $20-200/เดือน    | 5 ชม. + รายสัปดาห์  | ผู้ใช้ OpenAI                |
|                    | ราศีเมถุน CLI    | **ฟรี**          | 180K/เดือน + 1K/วัน | ทุกคน!                       |
|                    | นักบิน GitHub    | $10-19/เดือน     | รายเดือน            | ผู้ใช้ GitHub                |
| **🔑 คีย์ API**    | DeepSeek         | จ่ายตามการใช้งาน | ไม่มี               | การใช้เหตุผลราคาถูก          |
|                    | กรอค             | จ่ายตามการใช้งาน | ไม่มี               | การอนุมานที่รวดเร็วเป็นพิเศษ |
|                    | xAI (โกรก)       | จ่ายตามการใช้งาน | ไม่มี               | Grok 4 การใช้เหตุผล          |
|                    | มิสทรัล          | จ่ายตามการใช้งาน | ไม่มี               | โมเดลที่โฮสต์โดยสหภาพยุโรป   |
|                    | ความฉงนสนเท่ห์   | จ่ายตามการใช้งาน | ไม่มี               | การค้นหาเสริม                |
|                    | ร่วมกัน AI       | จ่ายตามการใช้งาน | ไม่มี               | โมเดลโอเพ่นซอร์ส             |
|                    | ดอกไม้ไฟ AI      | จ่ายตามการใช้งาน | ไม่มี               | ภาพ FLUX ที่รวดเร็ว          |
|                    | สมอง             | จ่ายตามการใช้งาน | ไม่มี               | ความเร็วระดับเวเฟอร์         |
|                    | เชื่อมโยง        | จ่ายตามการใช้งาน | ไม่มี               | คำสั่ง R+ RAG                |
|                    | NVIDIA NIM       | จ่ายตามการใช้งาน | ไม่มี               | โมเดลองค์กร                  |
| **💰 ราคาถูก**     | GLM-4.7          | $0.6/1M          | ทุกวัน 10.00 น.     | สำรองงบประมาณ                |
|                    | MiniMax M2.1     | $0.2/1M          | กลิ้ง 5 ชั่วโมง     | ตัวเลือกที่ถูกที่สุด         |
|                    | คิมิ K2          | $9/เดือน คงที่   | 10M โทเค็น/เดือน    | ต้นทุนที่คาดการณ์ได้         |
| **🆓 ฟรี**         | ไอโฟลว์          | $0               | ไม่จำกัด            | ฟรี 8 รุ่น                   |
|                    | ควีน             | $0               | ไม่จำกัด            | ฟรี 3 รุ่น                   |
|                    | คิโระ            | $0               | ไม่จำกัด            | คลอดด์ฟรี                    |

**💡 เคล็ดลับสำหรับมืออาชีพ:** เริ่มต้นด้วย Gemini CLI (ฟรี 180,000 ต่อเดือน) + iFlow (ฟรีไม่จำกัด) คอมโบ = ค่าใช้จ่าย $0!

---

## 🎯 กรณีการใช้งาน

### กรณีที่ 1: "ฉันสมัครสมาชิก Claude Pro"

**ปัญหา:** โควต้าหมดอายุโดยไม่ได้ใช้ อัตราจำกัดระหว่างการเขียนโค้ดจำนวนมาก

```
Combo: "maximize-claude"
  1. cc/claude-opus-4-6        (use subscription fully)
  2. glm/glm-4.7               (cheap backup when quota out)
  3. if/kimi-k2-thinking       (free emergency fallback)

Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total
vs. $20 + hitting limits = frustration
```

### กรณีที่ 2: "ฉันต้องการต้นทุนเป็นศูนย์"

**ปัญหา:** ไม่สามารถสมัครสมาชิกได้ ต้องการการเข้ารหัส AI ที่เชื่อถือได้

```
Combo: "free-forever"
  1. gc/gemini-3-flash         (180K free/month)
  2. if/kimi-k2-thinking       (unlimited free)
  3. qw/qwen3-coder-plus       (unlimited free)

Monthly cost: $0
Quality: Production-ready models
```

### กรณีที่ 3: "ฉันต้องการการเข้ารหัสตลอด 24 ชั่วโมงทุกวัน ไม่มีการหยุดชะงัก"

**ปัญหา:** กำหนดเวลา ไม่สามารถหยุดการทำงานได้

```
Combo: "always-on"
  1. cc/claude-opus-4-6        (best quality)
  2. cx/gpt-5.2-codex          (second subscription)
  3. glm/glm-4.7               (cheap, resets daily)
  4. minimax/MiniMax-M2.1      (cheapest, 5h reset)
  5. if/kimi-k2-thinking       (free unlimited)

Result: 5 layers of fallback = zero downtime
Monthly cost: $20-200 (subscriptions) + $10-20 (backup)
```

### กรณีที่ 4: "ฉันต้องการ AI ฟรีใน OpenClaw"

**ปัญหา:** ต้องการผู้ช่วย AI ในแอปส่งข้อความ ไม่มีค่าใช้จ่ายใดๆ ทั้งสิ้น

```
Combo: "openclaw-free"
  1. if/glm-4.7                (unlimited free)
  2. if/minimax-m2.1           (unlimited free)
  3. if/kimi-k2-thinking       (unlimited free)

Monthly cost: $0
Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
```

---

## 📖 การตั้งค่าผู้ให้บริการ

### 🔐 ผู้ให้บริการสมัครสมาชิก

#### รหัสคลอด (Pro/Max)

```bash
Dashboard → Providers → Connect Claude Code
→ OAuth login → Auto token refresh
→ 5-hour + weekly quota tracking

Models:
  cc/claude-opus-4-6
  cc/claude-sonnet-4-5-20250929
  cc/claude-haiku-4-5-20251001
```

**เคล็ดลับสำหรับมือโปร:** ใช้ Opus สำหรับงานที่ซับซ้อน และใช้ Sonnet เพื่อความรวดเร็ว โควต้าการติดตาม OmniRoute ต่อรุ่น!

#### OpenAI Codex (พลัส/โปร)

```bash
Dashboard → Providers → Connect Codex
→ OAuth login (port 1455)
→ 5-hour + weekly reset

Models:
  cx/gpt-5.2-codex
  cx/gpt-5.1-codex-max
```

#### Gemini CLI (ฟรี 180K/เดือน!)

```bash
Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
→ 180K completions/month + 1K/day

Models:
  gc/gemini-3-flash-preview
  gc/gemini-2.5-pro
```

**คุ้มค่าที่สุด:** ระดับฟรีมหาศาล! ใช้สิ่งนี้ก่อนระดับที่ชำระเงิน

#### นักบิน GitHub

```bash
Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
→ Monthly reset (1st of month)

Models:
  gh/gpt-5
  gh/claude-4.5-sonnet
  gh/gemini-3-pro
```

### 💰 ผู้ให้บริการราคาถูก

#### GLM-4.7 (รีเซ็ตรายวัน, $0.6/1M)

1. ลงทะเบียน: [Zhipu AI](https://open.bigmodel.cn/)
2. รับคีย์ API จาก Coding Plan
3. แดชบอร์ด → เพิ่มคีย์ API: ผู้ให้บริการ: `glm`, คีย์ API: `your-key`

**ใช้:** `glm/glm-4.7` — **เคล็ดลับสำหรับมืออาชีพ:** แผนการเขียนโค้ดเสนอโควต้า 3× ในราคา 1/7! รีเซ็ตทุกวัน 10.00 น.

#### MiniMax M2.1 (รีเซ็ต 5 ชม., $0.20/1M)

1. ลงทะเบียน: [MiniMax](https://www.minimax.io/)
2. รับคีย์ API → แดชบอร์ด → เพิ่มคีย์ API

**ใช้:** `minimax/MiniMax-M2.1` — **เคล็ดลับสำหรับมือโปร:** ตัวเลือกที่ถูกที่สุดสำหรับบริบทแบบยาว (โทเค็น 1M)!

#### Kimi K2 ($9/เดือน)

1. สมัครสมาชิก: [Moonshot AI](https://platform.moonshot.ai/)
2. รับคีย์ API → แดชบอร์ด → เพิ่มคีย์ API

**ใช้:** `kimi/kimi-latest` — **เคล็ดลับสำหรับมืออาชีพ:** แก้ไข $9/เดือนสำหรับโทเค็น 10M = $0.90/ต้นทุนจริง 1M!

### 🆓 ผู้ให้บริการฟรี

#### iFlow (ฟรี 8 รุ่น)

```bash
Dashboard → Connect iFlow → OAuth login → Unlimited usage

Models: if/kimi-k2-thinking, if/qwen3-coder-plus, if/glm-4.7, if/minimax-m2, if/deepseek-r1
```

#### Qwen (ฟรี 3 รุ่น)

```bash
Dashboard → Connect Qwen → Device code auth → Unlimited usage

Models: qw/qwen3-coder-plus, qw/qwen3-coder-flash
```

#### คิโระ (โคลด ฟรี)

```bash
Dashboard → Connect Kiro → AWS Builder ID or Google/GitHub → Unlimited

Models: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
```

---

## 🎨 คอมโบ

### ตัวอย่างที่ 1: เพิ่มการสมัครสมาชิกให้สูงสุด → การสำรองข้อมูลราคาถูก

```
Dashboard → Combos → Create New

Name: premium-coding
Models:
  1. cc/claude-opus-4-6 (Subscription primary)
  2. glm/glm-4.7 (Cheap backup, $0.6/1M)
  3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)

Use in CLI: premium-coding
```

### ตัวอย่างที่ 2: ฟรีเท่านั้น (ไม่มีค่าใช้จ่าย)

```
Name: free-combo
Models:
  1. gc/gemini-3-flash-preview (180K free/month)
  2. if/kimi-k2-thinking (unlimited)
  3. qw/qwen3-coder-plus (unlimited)

Cost: $0 forever!
```

---

## สมบูรณ์ บูรณาการ CLI

### เคอร์เซอร์ IDE

```
Settings → Models → Advanced:
  OpenAI API Base URL: http://localhost:20128/v1
  OpenAI API Key: [from omniroute dashboard]
  Model: cc/claude-opus-4-6
```

### รหัสคลอด

แก้ไข `~/.claude/config.json`:

```json
{
  "anthropic_api_base": "http://localhost:20128/v1",
  "anthropic_api_key": "your-omniroute-api-key"
}
```

### Codex CLI

```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```

### โอเพ่นคลอว์

แก้ไข `~/.openclaw/openclaw.json`:

```json
{
  "agents": {
    "defaults": {
      "model": { "primary": "omniroute/if/glm-4.7" }
    }
  },
  "models": {
    "providers": {
      "omniroute": {
        "baseUrl": "http://localhost:20128/v1",
        "apiKey": "your-omniroute-api-key",
        "api": "openai-completions",
        "models": [{ "id": "if/glm-4.7", "name": "glm-4.7" }]
      }
    }
  }
}
```

**หรือใช้แดชบอร์ด:** เครื่องมือ CLI → OpenClaw → กำหนดค่าอัตโนมัติ

### ไคลน์ / ดำเนินการต่อ / RooCode

```
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [from dashboard]
Model: cc/claude-opus-4-6
```

---

## 🚀 การปรับใช้

### การปรับใช้ VPS

```bash
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute && npm install && npm run build

export JWT_SECRET="your-secure-secret-change-this"
export INITIAL_PASSWORD="your-password"
export DATA_DIR="/var/lib/omniroute"
export PORT="20128"
export HOSTNAME="0.0.0.0"
export NODE_ENV="production"
export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
export API_KEY_SECRET="endpoint-proxy-api-key-secret"

npm run start
# Or: pm2 start npm --name omniroute -- start
```

### นักเทียบท่า

```bash
# Build image (default = runner-cli with codex/claude/droid preinstalled)
docker build -t omniroute:cli .

# Portable mode (recommended)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
```

สำหรับโหมดรวมโฮสต์ที่มีไบนารี CLI โปรดดูส่วนนักเทียบท่าในเอกสารหลัก

### ตัวแปรสภาพแวดล้อม

| ตัวแปร                | ค่าเริ่มต้น                          | คำอธิบาย                                                            |
| --------------------- | ------------------------------------ | ------------------------------------------------------------------- |
| `JWT_SECRET`          | `omniroute-default-secret-change-me` | เคล็ดลับการลงนาม JWT (**การเปลี่ยนแปลงในการผลิต**)                  |
| `INITIAL_PASSWORD`    | `123456`                             | รหัสผ่านเข้าสู่ระบบครั้งแรก                                         |
| `DATA_DIR`            | `~/.omniroute`                       | ไดเร็กทอรีข้อมูล (db, การใช้งาน, บันทึก)                            |
| `PORT`                | ค่าเริ่มต้นของเฟรมเวิร์ก             | พอร์ตบริการ (`20128` ในตัวอย่าง)                                    |
| `HOSTNAME`            | ค่าเริ่มต้นของเฟรมเวิร์ก             | ผูกโฮสต์ (ค่าเริ่มต้นของ Docker คือ `0.0.0.0`)                      |
| `NODE_ENV`            | รันไทม์เริ่มต้น                      | ตั้งค่า `production` สำหรับการปรับใช้                               |
| `BASE_URL`            | `http://localhost:20128`             | URL ฐานภายในฝั่งเซิร์ฟเวอร์                                         |
| `CLOUD_URL`           | `https://omniroute.dev`              | URL ฐานปลายทางการซิงค์บนคลาวด์                                      |
| `API_KEY_SECRET`      | `endpoint-proxy-api-key-secret`      | ข้อมูลลับ HMAC สำหรับคีย์ API ที่สร้างขึ้น                          |
| `REQUIRE_API_KEY`     | `false`                              | บังคับใช้คีย์ Bearer API บน `/v1/*`                                 |
| `ENABLE_REQUEST_LOGS` | `false`                              | เปิดใช้งานบันทึกคำขอ/การตอบกลับ                                     |
| `AUTH_COOKIE_SECURE`  | `false`                              | บังคับ `Secure` คุกกี้รับรองความถูกต้อง (หลังพร็อกซีย้อนกลับ HTTPS) |

สำหรับการอ้างอิงตัวแปรสภาพแวดล้อมแบบเต็ม โปรดดูที่ [README](../README.md)

---

## 📊 รุ่นที่มีจำหน่าย

<details>
<summary><b>ดูรุ่นที่มีทั้งหมด</b></summary>
**รหัสโคลด (`cc/`)** — โปร/สูงสุด: `cc/claude-opus-4-6`, `cc/claude-sonnet-4-5-20250929`, `cc/claude-haiku-4-5-20251001`

**โคเด็กซ์ (`cx/`)** — บวก/โปร: `cx/gpt-5.2-codex`, `cx/gpt-5.1-codex-max`

**ราศีเมถุน CLI (`gc/`)** — ฟรี: `gc/gemini-3-flash-preview`, `gc/gemini-2.5-pro`

**โปรแกรมควบคุม GitHub (`gh/`)**: `gh/gpt-5`, `gh/claude-4.5-sonnet`

**GLM (`glm/`)** — $0.6/1M: `glm/glm-4.7`

**MiniMax (`minimax/`)** — $0.2/1M: `minimax/MiniMax-M2.1`

**iFlow (`if/`)** — ฟรี: `if/kimi-k2-thinking`, `if/qwen3-coder-plus`, `if/deepseek-r1`

**คิวเวน (`qw/`)** — ฟรี: `qw/qwen3-coder-plus`, `qw/qwen3-coder-flash`

**คิโระ (`kr/`)** — ฟรี: `kr/claude-sonnet-4.5`, `kr/claude-haiku-4.5`

**ดีพซีค (`ds/`)**: `ds/deepseek-chat`, `ds/deepseek-reasoner`

**โกรก (`groq/`)**: `groq/llama-3.3-70b-versatile`, `groq/llama-4-maverick-17b-128e-instruct`

**xAI (`xai/`)**: `xai/grok-4`, `xai/grok-4-0709-fast-reasoning`, `xai/grok-code-mini`

**มิสทรัล (`mistral/`)**: `mistral/mistral-large-2501`, `mistral/codestral-2501`

**ความสับสน (`pplx/`)**: `pplx/sonar-pro`, `pplx/sonar`

** AI ร่วมกัน (`together/`)**: `together/meta-llama/Llama-3.3-70B-Instruct-Turbo`

**ดอกไม้ไฟ AI (`fireworks/`)**: `fireworks/accounts/fireworks/models/deepseek-v3p1`

**เซรีบร้า (`cerebras/`)**: `cerebras/llama-3.3-70b`

**เชื่อมโยงกัน (`cohere/`)**: `cohere/command-r-plus-08-2024`

**NVIDIA NIM (`nvidia/`)**: `nvidia/nvidia/llama-3.3-70b-instruct`

</details>

---

## 🧩 คุณสมบัติขั้นสูง

### โมเดลที่กำหนดเอง

เพิ่ม ID รุ่นใดๆ ให้กับผู้ให้บริการโดยไม่ต้องรอการอัปเดตแอป:

```bash
# Via API
curl -X POST http://localhost:20128/api/provider-models \
  -H "Content-Type: application/json" \
  -d '{"provider": "openai", "modelId": "gpt-4.5-preview", "modelName": "GPT-4.5 Preview"}'

# List: curl http://localhost:20128/api/provider-models?provider=openai
# Remove: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-4.5-preview"
```

หรือใช้แดชบอร์ด: **ผู้ให้บริการ → [ผู้ให้บริการ] → โมเดลที่กำหนดเอง**

### เส้นทางของผู้ให้บริการเฉพาะ

กำหนดเส้นทางคำขอโดยตรงไปยังผู้ให้บริการเฉพาะด้วยการตรวจสอบโมเดล:

```bash
POST http://localhost:20128/v1/providers/openai/chat/completions
POST http://localhost:20128/v1/providers/openai/embeddings
POST http://localhost:20128/v1/providers/fireworks/images/generations
```

คำนำหน้าผู้ให้บริการจะถูกเพิ่มอัตโนมัติหากไม่มี โมเดลที่ไม่ตรงกันส่งคืน `400`

### การกำหนดค่าพร็อกซีเครือข่าย

```bash
# Set global proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
  -d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'

# Per-provider proxy
curl -X PUT http://localhost:20128/api/settings/proxy \
  -d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'

# Test proxy
curl -X POST http://localhost:20128/api/settings/proxy/test \
  -d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
```

**ลำดับความสำคัญ:** เฉพาะคีย์ → เฉพาะคอมโบ → เฉพาะผู้ให้บริการ → ทั่วโลก → สภาพแวดล้อม

### โมเดลแคตตาล็อก API

```bash
curl http://localhost:20128/api/models/catalog
```

ส่งคืนโมเดลที่จัดกลุ่มตามผู้ให้บริการที่มีประเภท (`chat`, `embedding`, `image`)

### คลาวด์ซิงค์

- ซิงค์ผู้ให้บริการ คอมโบ และการตั้งค่าระหว่างอุปกรณ์ต่างๆ
- การซิงค์พื้นหลังอัตโนมัติพร้อมการหมดเวลา + ล้มเหลวอย่างรวดเร็ว
- ต้องการ `BASE_URL`/`CLOUD_URL` ฝั่งเซิร์ฟเวอร์ในการใช้งานจริง

### LLM Gateway Intelligence (ระยะที่ 9)

- **Semantic Cache** — แคชอัตโนมัติไม่สตรีม อุณหภูมิ=0 การตอบสนอง (บายพาสด้วย `X-OmniRoute-No-Cache: true`)
- **คำขอ Idempotency** — กรองคำขอที่ซ้ำกันภายใน 5 วินาทีผ่านส่วนหัว `Idempotency-Key` หรือ `X-Request-Id`
- **การติดตามความคืบหน้า** — เลือกใช้กิจกรรม SSE `event: progress` ผ่านส่วนหัว `X-OmniRoute-Progress: true`

---

### สนามเด็กเล่นนักแปล

เข้าถึงได้ผ่าน **Dashboard → Translator** แก้ไขข้อบกพร่องและเห็นภาพว่า OmniRoute แปลคำขอ API ระหว่างผู้ให้บริการอย่างไร

| โหมด                   | วัตถุประสงค์                                                                       |
| ---------------------- | ---------------------------------------------------------------------------------- |
| **สนามเด็กเล่น**       | เลือกรูปแบบต้นทาง/เป้าหมาย วางคำขอ และดูผลลัพธ์ที่แปลได้ทันที                      |
| **เครื่องมือทดสอบแชท** | ส่งข้อความแชทสดผ่านพร็อกซีและตรวจสอบรอบคำขอ/การตอบกลับทั้งหมด                      |
| **ม้านั่งทดสอบ**       | เรียกใช้การทดสอบเป็นกลุ่มโดยใช้รูปแบบต่างๆ ร่วมกันเพื่อตรวจสอบความถูกต้องของการแปล |
| **ถ่ายทอดสด**          | ดูการแปลแบบเรียลไทม์ตามคำขอที่ไหลผ่านพร็อกซี                                       |

**กรณีการใช้งาน:**

- ตรวจแก้จุดบกพร่องว่าทำไมการรวมไคลเอนต์/ผู้ให้บริการเฉพาะจึงล้มเหลว
- ตรวจสอบว่าแท็กการคิด การเรียกใช้เครื่องมือ และการแจ้งเตือนของระบบแปลอย่างถูกต้อง
- เปรียบเทียบความแตกต่างของรูปแบบระหว่างรูปแบบ OpenAI, Claude, Gemini และ Responses API

---

### กลยุทธ์การกำหนดเส้นทาง

กำหนดค่าผ่าน **แดชบอร์ด → การตั้งค่า → การกำหนดเส้นทาง**

| กลยุทธ์                   | คำอธิบาย                                                                                                           |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **กรอกก่อน**              | ใช้บัญชีตามลำดับความสำคัญ — บัญชีหลักจะจัดการคำขอทั้งหมดจนกว่าจะไม่พร้อมใช้งาน                                     |
| **โรบินตัวกลม**           | วนรอบบัญชีทั้งหมดด้วยขีดจำกัดที่กำหนดได้ (ค่าเริ่มต้น: 3 สายต่อบัญชี)                                              |
| **P2C (พลังสองตัวเลือก)** | เลือกบัญชีและเส้นทางแบบสุ่ม 2 บัญชีไปยังบัญชีที่ดีต่อสุขภาพมากขึ้น — สร้างสมดุลระหว่างภาระกับการรับรู้เรื่องสุขภาพ |
| **สุ่ม**                  | สุ่มเลือกบัญชีสำหรับแต่ละคำขอโดยใช้ Fisher-Yates shuffle                                                           |
| **ใช้น้อยที่สุด**         | กำหนดเส้นทางไปยังบัญชีที่มีการประทับเวลา `lastUsedAt` เก่าที่สุด กระจายการรับส่งข้อมูลเท่าๆ กัน                    |
| **ปรับต้นทุนให้เหมาะสม**  | กำหนดเส้นทางไปยังบัญชีที่มีค่าลำดับความสำคัญต่ำสุด ปรับให้เหมาะสมสำหรับผู้ให้บริการที่มีต้นทุนต่ำที่สุด            |

#### นามแฝงโมเดลไวด์การ์ด

สร้างรูปแบบไวด์การ์ดเพื่อทำการแมปชื่อโมเดลใหม่:

```
Pattern: claude-sonnet-*     →  Target: cc/claude-sonnet-4-5-20250929
Pattern: gpt-*               →  Target: gh/gpt-5.1-codex
```

Wildcard รองรับ `*` (อักขระใดก็ได้) และ `?` (อักขระเดี่ยว)

#### โซ่สำรอง

กำหนดห่วงโซ่ทางเลือกส่วนกลางที่ใช้กับคำขอทั้งหมด:

```
Chain: production-fallback
  1. cc/claude-opus-4-6
  2. gh/gpt-5.1-codex
  3. glm/glm-4.7
```

---

### ความยืดหยุ่นและเซอร์กิตเบรกเกอร์

กำหนดค่าผ่าน **แดชบอร์ด → การตั้งค่า → ความยืดหยุ่น**

OmniRoute ใช้ความยืดหยุ่นระดับผู้ให้บริการด้วยองค์ประกอบสี่ประการ:

1. **โปรไฟล์ผู้ให้บริการ** — การกำหนดค่าต่อผู้ให้บริการสำหรับ:
   - เกณฑ์ความล้มเหลว (จำนวนความล้มเหลวก่อนเปิด)
   - ระยะเวลาคูลดาวน์
   - ความไวในการตรวจจับขีด จำกัด อัตรา
   - พารามิเตอร์แบ็คออฟเอ็กซ์โปเนนเชียล

2. **ขีดจำกัดอัตราที่แก้ไขได้** — ค่าเริ่มต้นระดับระบบที่กำหนดค่าได้ในแดชบอร์ด:
   - **คำขอต่อนาที (RPM)** — คำขอสูงสุดต่อนาทีต่อบัญชี
   - **เวลาขั้นต่ำระหว่างคำขอ** — ช่องว่างขั้นต่ำเป็นมิลลิวินาทีระหว่างคำขอ
   - **คำขอพร้อมกันสูงสุด** — คำขอพร้อมกันสูงสุดต่อบัญชี
   - คลิก **แก้ไข** เพื่อแก้ไข จากนั้น **บันทึก** หรือ **ยกเลิก** ค่ายังคงมีอยู่ผ่าน API ความยืดหยุ่น

3. **เซอร์กิตเบรกเกอร์** — ติดตามความล้มเหลวของผู้ให้บริการแต่ละราย และเปิดวงจรโดยอัตโนมัติเมื่อถึงเกณฑ์:
   - **ปิด** (สมบูรณ์) — คำขอดำเนินไปตามปกติ
   - **เปิด** — ผู้ให้บริการถูกบล็อกชั่วคราวหลังจากเกิดข้อผิดพลาดซ้ำแล้วซ้ำอีก
   - **HALF_OPEN** — ทดสอบว่าผู้ให้บริการฟื้นตัวหรือไม่

4. **นโยบายและตัวระบุที่ถูกล็อค** — แสดงสถานะเซอร์กิตเบรกเกอร์และตัวระบุที่ถูกล็อคพร้อมความสามารถในการบังคับปลดล็อค

5. **การตรวจจับขีดจำกัดอัตราอัตโนมัติ** — ตรวจสอบส่วนหัว `429` และ `Retry-After` เพื่อหลีกเลี่ยงไม่ให้ถึงขีดจำกัดอัตราของผู้ให้บริการในเชิงรุก

**เคล็ดลับสำหรับมือโปร:** ใช้ปุ่ม **รีเซ็ตทั้งหมด** เพื่อล้างเซอร์กิตเบรกเกอร์และคูลดาวน์ทั้งหมดเมื่อผู้ให้บริการฟื้นตัวจากการหยุดทำงาน

---

### ส่งออก / นำเข้าฐานข้อมูล

จัดการการสำรองฐานข้อมูลใน **แดชบอร์ด → การตั้งค่า → ระบบและที่เก็บข้อมูล**

| การกระทำ                    | คำอธิบาย                                                                                                                                              |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ฐานข้อมูลการส่งออก**      | ดาวน์โหลดฐานข้อมูล SQLite ปัจจุบันเป็นไฟล์ `.sqlite`                                                                                                  |
| **ส่งออกทั้งหมด (.tar.gz)** | ดาวน์โหลดไฟล์เก็บถาวรการสำรองข้อมูลแบบเต็ม รวมถึง: ฐานข้อมูล การตั้งค่า คอมโบ การเชื่อมต่อของผู้ให้บริการ (ไม่มีข้อมูลประจำตัว) ข้อมูลเมตาของคีย์ API |
| **นำเข้าฐานข้อมูล**         | อัปโหลดไฟล์ `.sqlite` เพื่อแทนที่ฐานข้อมูลปัจจุบัน การสำรองข้อมูลก่อนนำเข้าจะถูกสร้างขึ้นโดยอัตโนมัติ                                                 |

```bash
# API: Export database
curl -o backup.sqlite http://localhost:20128/api/db-backups/export

# API: Export all (full archive)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll

# API: Import database
curl -X POST http://localhost:20128/api/db-backups/import \
  -F "file=@backup.sqlite"
```

**การตรวจสอบการนำเข้า:** ไฟล์ที่นำเข้าได้รับการตรวจสอบความถูกต้อง (การตรวจสอบ SQLite Pragma), ตารางที่จำเป็น (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) และขนาด (สูงสุด 100MB)

**กรณีการใช้งาน:**

- โยกย้าย OmniRoute ระหว่างเครื่อง
- สร้างการสำรองข้อมูลภายนอกสำหรับการกู้คืนระบบ
- แบ่งปันการกำหนดค่าระหว่างสมาชิกในทีม (ส่งออกทั้งหมด → แชร์ไฟล์เก็บถาวร)

---

### แดชบอร์ดการตั้งค่า

หน้าการตั้งค่าแบ่งออกเป็น 5 แท็บเพื่อให้ง่ายต่อการนำทาง:

| แท็บ                | สารบัญ                                                                                                                   |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **ความปลอดภัย**     | การตั้งค่าการเข้าสู่ระบบ/รหัสผ่าน, การควบคุมการเข้าถึง IP, การตรวจสอบสิทธิ์ API สำหรับ `/models` และการบล็อกผู้ให้บริการ |
| **การกำหนดเส้นทาง** | กลยุทธ์การกำหนดเส้นทางทั่วโลก (6 ตัวเลือก), นามแฝงโมเดลไวด์การ์ด, เชนทางเลือก, ค่าเริ่มต้นคอมโบ                          |
| **ความยืดหยุ่น**    | โปรไฟล์ผู้ให้บริการ ขีดจำกัดอัตราที่แก้ไขได้ สถานะเซอร์กิตเบรกเกอร์ นโยบาย และตัวระบุที่ถูกล็อค                          |
| **เอไอ**            | คิดการกำหนดค่างบประมาณ, การแทรกพร้อมท์ของระบบทั่วโลก, สถิติแคชพร้อมต์                                                    |
| **ขั้นสูง**         | การกำหนดค่าพร็อกซีส่วนกลาง (HTTP/SOCKS5)                                                                                 |

---

### ต้นทุนและการจัดการงบประมาณ

เข้าถึงได้ผ่าน **แดชบอร์ด → ค่าใช้จ่าย**

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

```bash
# API: Set a budget
curl -X POST http://localhost:20128/api/usage/budget \
  -H "Content-Type: application/json" \
  -d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'

# API: Get current budget status
curl http://localhost:20128/api/usage/budget
```

**การติดตามต้นทุน:** ทุกคำขอจะบันทึกการใช้โทเค็นและคำนวณต้นทุนโดยใช้ตารางราคา ดูรายละเอียดใน **แดชบอร์ด → การใช้งาน** ตามผู้ให้บริการ รุ่น และคีย์ API

---

### การถอดเสียง

OmniRoute รองรับการถอดเสียงผ่านปลายทางที่เข้ากันได้กับ OpenAI:

```bash
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data

# Example with curl
curl -X POST http://localhost:20128/v1/audio/transcriptions \
  -H "Authorization: Bearer your-api-key" \
  -F "file=@audio.mp3" \
  -F "model=deepgram/nova-3"
```

ผู้ให้บริการที่มีอยู่: **Deepgram** (`deepgram/`), **AssemblyAI** (`assemblyai/`)

รูปแบบเสียงที่รองรับ: `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`

---

### กลยุทธ์การปรับสมดุลคอมโบ

กำหนดค่าการปรับสมดุลต่อคอมโบใน **แดชบอร์ด → คอมโบ → สร้าง/แก้ไข → กลยุทธ์**

| กลยุทธ์                       | คำอธิบาย                                                       |
| ----------------------------- | -------------------------------------------------------------- |
| **โรบินตัวกลม**               | หมุนเวียนไปตามโมเดลต่างๆ ตามลำดับ                              |
| **ลำดับความสำคัญ**            | ลองใช้โมเดลแรกเสมอ ถอยกลับเฉพาะข้อผิดพลาด                      |
| **สุ่ม**                      | เลือกโมเดลแบบสุ่มจากคอมโบสำหรับแต่ละคำขอ                       |
| **ถ่วงน้ำหนัก**               | เส้นทางตามสัดส่วนตามน้ำหนักที่กำหนดต่อรุ่น                     |
| **ใช้งานน้อยที่สุด**          | กำหนดเส้นทางไปยังโมเดลที่มีคำขอล่าสุดน้อยที่สุด (ใช้เมตริกผสม) |
| **การเพิ่มประสิทธิภาพต้นทุน** | เส้นทางไปยังรุ่นที่ถูกที่สุด (ใช้ตารางราคา)                    |

ค่าเริ่มต้นคอมโบสากลสามารถตั้งค่าได้ใน **แดชบอร์ด → การตั้งค่า → การกำหนดเส้นทาง → ค่าเริ่มต้นคอมโบ**

---

### แดชบอร์ดสุขภาพ

เข้าถึงได้ทาง **Dashboard → Health** ภาพรวมความสมบูรณ์ของระบบเรียลไทม์พร้อมการ์ด 6 ใบ:

| บัตร                          | มันแสดงอะไร                                                      |
| ----------------------------- | ---------------------------------------------------------------- |
| **สถานะระบบ**                 | สถานะการออนไลน์ เวอร์ชัน การใช้หน่วยความจำ ไดเร็กทอรีข้อมูล      |
| **สุขภาพของผู้ให้บริการ**     | สถานะเซอร์กิตเบรกเกอร์ต่อผู้ให้บริการ (ปิด/เปิด/เปิดครึ่ง)       |
| **จำกัดอัตรา**                | คูลดาวน์จำกัดอัตราที่ใช้งานอยู่ต่อบัญชีพร้อมเวลาที่เหลืออยู่     |
| **การล็อกที่ใช้งานอยู่**      | ผู้ให้บริการถูกบล็อกชั่วคราวโดยนโยบายการล็อค                     |
| **แคชลายเซ็น**                | สถิติแคชการขจัดข้อมูลซ้ำซ้อน (คีย์ที่ใช้งานอยู่ อัตราการเข้าถึง) |
| **การวัดระยะไกลแบบหน่วงเวลา** | การรวมเวลาแฝง p50/p95/p99 ต่อผู้ให้บริการ                        |

**เคล็ดลับสำหรับมือโปร:** หน้าสุขภาพจะรีเฟรชอัตโนมัติทุกๆ 10 วินาที ใช้การ์ดเซอร์กิตเบรกเกอร์เพื่อระบุว่าผู้ให้บริการรายใดกำลังประสบปัญหา
