mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 20:00:47 +00:00
Feat : Gitbook
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
# Tích hợp Claude Code
|
||||
|
||||
Tích hợp 9Router với Claude Code CLI để định tuyến request API Anthropic qua hệ thống routing thông minh của 9Router.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- Claude Code CLI đã cài đặt
|
||||
- 9Router đang chạy cục bộ hoặc cloud endpoint đã cấu hình
|
||||
- API key từ 9Router dashboard
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Cấu hình biến môi trường
|
||||
|
||||
Đặt các biến môi trường sau trong file cấu hình shell (`~/.bashrc`, `~/.zshrc`, hoặc `~/.bash_profile`):
|
||||
|
||||
```bash
|
||||
# Base URL for 9Router
|
||||
export ANTHROPIC_BASE_URL="http://localhost:20128/v1"
|
||||
|
||||
# Optional: Set default models for aliases
|
||||
export ANTHROPIC_DEFAULT_OPUS_MODEL="cc/claude-opus-4-5-20251101"
|
||||
export ANTHROPIC_DEFAULT_SONNET_MODEL="cc/claude-sonnet-4-5-20250929"
|
||||
export ANTHROPIC_DEFAULT_HAIKU_MODEL="cc/claude-haiku-4-5-20251001"
|
||||
```
|
||||
|
||||
### 2. Reload Shell Configuration
|
||||
|
||||
```bash
|
||||
source ~/.zshrc # or ~/.bashrc
|
||||
```
|
||||
|
||||
### 3. Xác minh Cấu hình
|
||||
|
||||
Kiểm tra các biến môi trường đã set đúng:
|
||||
|
||||
```bash
|
||||
echo $ANTHROPIC_BASE_URL
|
||||
```
|
||||
|
||||
## Model Aliases
|
||||
|
||||
Claude Code hỗ trợ các alias model sau ánh xạ sang model 9Router:
|
||||
|
||||
| Alias | Model | Biến môi trường |
|
||||
|-------|-------|---------------------|
|
||||
| `opus` | Claude Opus 4.5 | `ANTHROPIC_DEFAULT_OPUS_MODEL` |
|
||||
| `sonnet` | Claude Sonnet 4.5 | `ANTHROPIC_DEFAULT_SONNET_MODEL` |
|
||||
| `haiku` | Claude Haiku 4.5 | `ANTHROPIC_DEFAULT_HAIKU_MODEL` |
|
||||
|
||||
## Ví dụ Sử dụng
|
||||
|
||||
### Dùng Model Aliases
|
||||
|
||||
```bash
|
||||
# Use Opus model
|
||||
claude --model opus "Explain quantum computing"
|
||||
|
||||
# Use Sonnet model
|
||||
claude --model sonnet "Write a Python function"
|
||||
|
||||
# Use Haiku model
|
||||
claude --model haiku "Quick code review"
|
||||
```
|
||||
|
||||
### Dùng Full Model Names
|
||||
|
||||
```bash
|
||||
claude --model cc/claude-opus-4-5-20251101 "Your prompt here"
|
||||
```
|
||||
|
||||
## File Settings
|
||||
|
||||
Claude Code lưu cấu hình trong `~/.claude/settings.json`. Bạn có thể sửa file này thủ công nếu cần:
|
||||
|
||||
```json
|
||||
{
|
||||
"baseUrl": "http://localhost:20128/v1",
|
||||
"defaultModel": "sonnet"
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Lỗi Connection
|
||||
|
||||
Nếu gặp lỗi kết nối:
|
||||
|
||||
1. Xác minh 9Router đang chạy: `curl http://localhost:20128/health`
|
||||
2. Kiểm tra biến môi trường đã set đúng
|
||||
3. Đảm bảo không firewall nào chặn port 20128
|
||||
|
||||
### Model Not Found
|
||||
|
||||
Nếu gặp lỗi "model not found":
|
||||
|
||||
1. Xác minh tên model khớp với cấu hình 9Router
|
||||
2. Kiểm tra kết nối provider đang hoạt động trong 9Router dashboard
|
||||
3. Đảm bảo model có sẵn trong các provider đã kết nối
|
||||
|
||||
## Cloud Endpoint
|
||||
|
||||
Để dùng 9Router cloud endpoint thay vì localhost:
|
||||
|
||||
```bash
|
||||
export ANTHROPIC_BASE_URL="https://9router.com"
|
||||
```
|
||||
|
||||
Đảm bảo bạn đã cấu hình API key trong 9Router cloud dashboard.
|
||||
@@ -0,0 +1,201 @@
|
||||
# Tích hợp Cline
|
||||
|
||||
Tích hợp 9Router với extension Cline VSCode để định tuyến request AI qua hệ thống routing thông minh của 9Router.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- Visual Studio Code đã cài đặt
|
||||
- Extension Cline đã cài đặt từ VSCode marketplace
|
||||
- 9Router đang chạy cục bộ hoặc cloud endpoint đã cấu hình
|
||||
- API key từ 9Router dashboard
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Mở Cline Settings
|
||||
|
||||
1. Mở Visual Studio Code
|
||||
2. Mở panel extension Cline (click icon Cline trong sidebar)
|
||||
3. Click icon **Settings** (icon bánh răng) trong panel Cline
|
||||
|
||||
### 2. Chọn API Provider
|
||||
|
||||
1. Trong Cline settings, tìm dropdown **API Provider**
|
||||
2. Chọn **Ollama** từ danh sách
|
||||
- Lưu ý: Chúng ta dùng provider type Ollama vì nó tương thích với API kiểu OpenAI
|
||||
|
||||
### 3. Cấu hình Base URL
|
||||
|
||||
Đặt base URL tới endpoint 9Router:
|
||||
|
||||
**Cho 9Router cục bộ:**
|
||||
```
|
||||
http://localhost:20128/v1
|
||||
```
|
||||
|
||||
**Cho 9Router cloud:**
|
||||
```
|
||||
https://9router.com
|
||||
```
|
||||
|
||||
**Các bước:**
|
||||
1. Trong field **Base URL**, nhập endpoint 9Router
|
||||
2. Đảm bảo bao gồm `/v1` ở cuối
|
||||
|
||||
### 4. Thêm API Key
|
||||
|
||||
1. Trong field **API Key**, nhập API key 9Router của bạn
|
||||
2. Bạn có thể tìm API key trong 9Router dashboard tại **Settings → API Keys**
|
||||
3. Key bắt đầu bằng `sk-9router-`
|
||||
|
||||
### 5. Chọn Model
|
||||
|
||||
1. Trong dropdown **Model**, bạn có thể:
|
||||
- Chọn từ model có sẵn (nếu Cline auto-detect)
|
||||
- Nhập tên model thủ công từ cấu hình 9Router
|
||||
|
||||
2. Tên model phổ biến:
|
||||
- `gpt-4`
|
||||
- `gpt-4o`
|
||||
- `claude-opus-4-5`
|
||||
- `claude-sonnet-4-5`
|
||||
- `gemini-2.0-flash`
|
||||
|
||||
### 6. Lưu Cấu hình
|
||||
|
||||
Click **Save** hoặc đóng panel settings. Cline sẽ tự lưu cấu hình.
|
||||
|
||||
## Ví dụ Cấu hình
|
||||
|
||||
Cline settings của bạn nên trông như sau:
|
||||
|
||||
```
|
||||
API Provider: Ollama
|
||||
Base URL: http://localhost:20128/v1
|
||||
API Key: sk-9router-xxxxxxxxxxxxx
|
||||
Model: gpt-4
|
||||
```
|
||||
|
||||
## Model có sẵn
|
||||
|
||||
Bạn có thể dùng bất kỳ model nào đã cấu hình trong 9Router dashboard. Ví dụ phổ biến:
|
||||
|
||||
| Tên Model | Provider | Mô tả |
|
||||
|------------|----------|-------------|
|
||||
| `gpt-4` | OpenAI | GPT-4 Turbo |
|
||||
| `gpt-4o` | OpenAI | GPT-4 Optimized |
|
||||
| `claude-opus-4-5` | Anthropic | Claude Opus 4.5 |
|
||||
| `claude-sonnet-4-5` | Anthropic | Claude Sonnet 4.5 |
|
||||
| `gemini-2.0-flash` | Google | Gemini 2.0 Flash |
|
||||
|
||||
## Sử dụng
|
||||
|
||||
### Chat với AI
|
||||
|
||||
1. Mở panel Cline trong VSCode
|
||||
2. Gõ tin nhắn vào input chat
|
||||
3. Nhấn Enter để gửi
|
||||
4. Cline sẽ dùng 9Router để xử lý request
|
||||
|
||||
### Tạo Code
|
||||
|
||||
1. Yêu cầu Cline tạo code: "Create a React component for a login form"
|
||||
2. Cline sẽ tạo code qua 9Router
|
||||
3. Xem và chấp nhận code được tạo
|
||||
|
||||
### Giải thích Code
|
||||
|
||||
1. Chọn code trong editor
|
||||
2. Hỏi Cline: "Explain this code"
|
||||
3. Nhận giải thích AI qua 9Router
|
||||
|
||||
### Thao tác File
|
||||
|
||||
1. Yêu cầu Cline tạo, sửa hoặc xóa files
|
||||
2. Cline sẽ dùng 9Router để hiểu context và thực hiện thay đổi
|
||||
3. Xem thay đổi trước khi chấp nhận
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Lỗi "Connection Failed"
|
||||
|
||||
1. Xác minh 9Router đang chạy: `curl http://localhost:20128/health`
|
||||
2. Kiểm tra base URL đúng và bao gồm `/v1`
|
||||
3. Đảm bảo không firewall nào chặn port 20128
|
||||
4. Thử khởi động lại VSCode
|
||||
|
||||
### Lỗi "Invalid API Key"
|
||||
|
||||
1. Xác minh API key trong 9Router dashboard
|
||||
2. Đảm bảo bạn sao chép đầy đủ key bao gồm prefix `sk-9router-`
|
||||
3. Kiểm tra API key chưa hết hạn
|
||||
4. Thử tạo API key mới
|
||||
|
||||
### Lỗi "Model Not Found"
|
||||
|
||||
1. Xác minh tên model khớp chính xác với cấu hình 9Router
|
||||
2. Kiểm tra kết nối provider đang hoạt động trong 9Router dashboard
|
||||
3. Đảm bảo model có sẵn trong các provider đã kết nối
|
||||
4. Thử dùng tên model đầy đủ (ví dụ: `openai/gpt-4` thay vì `gpt-4`)
|
||||
|
||||
### Cline không phản hồi
|
||||
|
||||
1. Kiểm tra panel output Cline để xem thông báo lỗi
|
||||
2. Xác minh 9Router instance đang chạy và healthy
|
||||
3. Thử reload cửa sổ VSCode (Cmd/Ctrl + Shift + P → "Reload Window")
|
||||
4. Kiểm tra logs 9Router để xem lỗi
|
||||
|
||||
## Cấu hình Nâng cao
|
||||
|
||||
### Dùng Cloud Endpoint
|
||||
|
||||
Để dùng 9Router cloud endpoint thay vì localhost:
|
||||
|
||||
1. Trong Cline settings, đặt Base URL: `https://9router.com`
|
||||
2. Đảm bảo bạn đã cấu hình API key trong 9Router cloud dashboard
|
||||
3. Đảm bảo cloud endpoint đang hoạt động và truy cập được
|
||||
|
||||
### Nhiều Model
|
||||
|
||||
Bạn có thể chuyển nhanh giữa các model:
|
||||
|
||||
1. Mở Cline settings
|
||||
2. Đổi field **Model** sang model khác
|
||||
3. Lưu và tiếp tục chat với model mới
|
||||
|
||||
### Custom Timeout
|
||||
|
||||
Nếu gặp vấn đề timeout với request lớn:
|
||||
|
||||
1. Mở VSCode settings (Cmd/Ctrl + ,)
|
||||
2. Tìm "Cline timeout"
|
||||
3. Tăng giá trị timeout (mặc định thường là 30 giây)
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Dùng Model phù hợp**: Chọn model nhanh (như Haiku hoặc Flash) cho task đơn giản, model mạnh hơn (như Opus hoặc GPT-4) cho task phức tạp
|
||||
2. **Theo dõi Usage**: Kiểm tra 9Router dashboard để xem thống kê và chi phí
|
||||
3. **Quản lý Context**: Giữ cuộc trò chuyện tập trung để giảm token usage
|
||||
4. **Chuyển Model**: Chuyển model dựa trên độ phức tạp task để tối ưu chi phí và hiệu năng
|
||||
5. **Bảo mật API Key**: Không bao giờ commit API key vào version control
|
||||
|
||||
## Tích hợp với Tính năng 9Router
|
||||
|
||||
### Định tuyến Model
|
||||
|
||||
9Router tự động định tuyến request đến provider tốt nhất hiện có dựa trên:
|
||||
- Tính khả dụng của model
|
||||
- Trạng thái sức khỏe provider
|
||||
- Tối ưu chi phí
|
||||
- Load balancing
|
||||
|
||||
### Hỗ trợ Fallback
|
||||
|
||||
Nếu một provider thất bại, 9Router tự động fallback sang provider khác đã cấu hình trong dashboard.
|
||||
|
||||
### Theo dõi Usage
|
||||
|
||||
Giám sát usage Cline qua 9Router dashboard:
|
||||
- Tổng request
|
||||
- Token usage
|
||||
- Chi phí mỗi model
|
||||
- Phân bổ provider
|
||||
@@ -0,0 +1,136 @@
|
||||
# Tích hợp OpenAI Codex CLI
|
||||
|
||||
Tích hợp 9Router với OpenAI Codex CLI để định tuyến request API OpenAI qua hệ thống routing thông minh của 9Router.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- OpenAI Codex CLI đã cài đặt
|
||||
- 9Router đang chạy cục bộ hoặc cloud endpoint đã cấu hình
|
||||
- API key từ 9Router dashboard
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Cấu hình biến môi trường
|
||||
|
||||
Đặt các biến môi trường sau trong file cấu hình shell (`~/.bashrc`, `~/.zshrc`, hoặc `~/.bash_profile`):
|
||||
|
||||
```bash
|
||||
# Base URL for 9Router
|
||||
export OPENAI_BASE_URL="http://localhost:20128/v1"
|
||||
|
||||
# API Key from 9Router dashboard
|
||||
export OPENAI_API_KEY="your-9router-api-key"
|
||||
```
|
||||
|
||||
### 2. Reload Shell Configuration
|
||||
|
||||
```bash
|
||||
source ~/.zshrc # or ~/.bashrc
|
||||
```
|
||||
|
||||
### 3. Xác minh Cấu hình
|
||||
|
||||
Kiểm tra các biến môi trường đã set đúng:
|
||||
|
||||
```bash
|
||||
echo $OPENAI_BASE_URL
|
||||
echo $OPENAI_API_KEY
|
||||
```
|
||||
|
||||
## Model có sẵn
|
||||
|
||||
9Router cung cấp các model Codex sau:
|
||||
|
||||
| Model ID | Mô tả |
|
||||
|----------|-------------|
|
||||
| `cx/gpt-5.2-codex` | GPT-5.2 Codex - Phiên bản mới nhất |
|
||||
| `cx/gpt-5.1-codex-max` | GPT-5.1 Codex Max - Extended context |
|
||||
|
||||
## Ví dụ Sử dụng
|
||||
|
||||
### Sử dụng Cơ bản
|
||||
|
||||
```bash
|
||||
# Use GPT-5.2 Codex
|
||||
codex --model cx/gpt-5.2-codex "Write a function to sort an array"
|
||||
|
||||
# Use GPT-5.1 Codex Max
|
||||
codex --model cx/gpt-5.1-codex-max "Explain this complex algorithm"
|
||||
```
|
||||
|
||||
### Tạo Code
|
||||
|
||||
```bash
|
||||
codex --model cx/gpt-5.2-codex "Create a REST API endpoint for user authentication"
|
||||
```
|
||||
|
||||
### Giải thích Code
|
||||
|
||||
```bash
|
||||
codex --model cx/gpt-5.1-codex-max "Explain what this code does: $(cat myfile.js)"
|
||||
```
|
||||
|
||||
## File Cấu hình
|
||||
|
||||
Bạn cũng có thể cấu hình Codex CLI qua file cấu hình. Tạo hoặc sửa `~/.codex/config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"baseUrl": "http://localhost:20128/v1",
|
||||
"apiKey": "your-9router-api-key",
|
||||
"defaultModel": "cx/gpt-5.2-codex"
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Lỗi Xác thực
|
||||
|
||||
Nếu gặp lỗi xác thực:
|
||||
|
||||
1. Xác minh API key đúng trong 9Router dashboard
|
||||
2. Kiểm tra biến môi trường `OPENAI_API_KEY` đã set
|
||||
3. Đảm bảo API key chưa hết hạn
|
||||
|
||||
### Lỗi Connection
|
||||
|
||||
Nếu gặp lỗi kết nối:
|
||||
|
||||
1. Xác minh 9Router đang chạy: `curl http://localhost:20128/health`
|
||||
2. Kiểm tra biến môi trường đã set đúng
|
||||
3. Đảm bảo không firewall nào chặn port 20128
|
||||
|
||||
### Model không khả dụng
|
||||
|
||||
Nếu gặp lỗi "model not available":
|
||||
|
||||
1. Xác minh tên model khớp với cấu hình 9Router
|
||||
2. Kiểm tra kết nối provider OpenAI đang hoạt động trong 9Router dashboard
|
||||
3. Đảm bảo model có sẵn trong các provider đã kết nối
|
||||
|
||||
## Cloud Endpoint
|
||||
|
||||
Để dùng 9Router cloud endpoint thay vì localhost:
|
||||
|
||||
```bash
|
||||
export OPENAI_BASE_URL="https://9router.com"
|
||||
```
|
||||
|
||||
Đảm bảo bạn đã cấu hình API key trong 9Router cloud dashboard.
|
||||
|
||||
## Cấu hình Nâng cao
|
||||
|
||||
### Custom Timeout
|
||||
|
||||
```bash
|
||||
export OPENAI_TIMEOUT=60 # seconds
|
||||
```
|
||||
|
||||
### Debug Mode
|
||||
|
||||
Bật debug mode để xem logs request/response chi tiết:
|
||||
|
||||
```bash
|
||||
export CODEX_DEBUG=true
|
||||
codex --model cx/gpt-5.2-codex "Your prompt"
|
||||
```
|
||||
@@ -0,0 +1,249 @@
|
||||
# Tích hợp Continue VSCode Extension
|
||||
|
||||
Tích hợp 9Router với extension Continue để mang trợ lý AI trực tiếp vào Visual Studio Code.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- Visual Studio Code đã cài đặt
|
||||
- Extension Continue đã cài đặt từ VSCode marketplace
|
||||
- 9Router API key từ [dashboard](https://9router.com/dashboard)
|
||||
- 9Router đang chạy (cục bộ hoặc cloud)
|
||||
|
||||
## Các bước Cấu hình
|
||||
|
||||
### 1. Mở Continue Configuration
|
||||
|
||||
1. Mở VSCode
|
||||
2. Nhấn `Cmd+Shift+P` (Mac) hoặc `Ctrl+Shift+P` (Windows/Linux)
|
||||
3. Gõ "Continue: Open Config" và chọn
|
||||
4. Mở `~/.continue/config.json`
|
||||
|
||||
### 2. Thêm Cấu hình Model 9Router
|
||||
|
||||
Thêm cấu hình sau vào `config.json`:
|
||||
|
||||
**Setup Một Model:**
|
||||
```json
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"title": "9Router - Claude Opus",
|
||||
"provider": "openai",
|
||||
"model": "cc/claude-opus-4-5-20251101",
|
||||
"apiKey": "your-api-key-from-dashboard",
|
||||
"apiBase": "http://localhost:20128/v1"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Setup Nhiều Model:**
|
||||
```json
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"title": "9Router - Claude Opus (Best)",
|
||||
"provider": "openai",
|
||||
"model": "cc/claude-opus-4-5-20251101",
|
||||
"apiKey": "your-api-key-from-dashboard",
|
||||
"apiBase": "http://localhost:20128/v1"
|
||||
},
|
||||
{
|
||||
"title": "9Router - Claude Sonnet (Balanced)",
|
||||
"provider": "openai",
|
||||
"model": "cc/claude-sonnet-4-20250514",
|
||||
"apiKey": "your-api-key-from-dashboard",
|
||||
"apiBase": "http://localhost:20128/v1"
|
||||
},
|
||||
{
|
||||
"title": "9Router - DeepSeek Chat (Code)",
|
||||
"provider": "openai",
|
||||
"model": "cx/deepseek-chat",
|
||||
"apiKey": "your-api-key-from-dashboard",
|
||||
"apiBase": "http://localhost:20128/v1"
|
||||
},
|
||||
{
|
||||
"title": "9Router - Claude Haiku (Fast)",
|
||||
"provider": "openai",
|
||||
"model": "cc/claude-haiku-4-20250514",
|
||||
"apiKey": "your-api-key-from-dashboard",
|
||||
"apiBase": "http://localhost:20128/v1"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Cho Cloud 9Router:**
|
||||
Thay `apiBase` bằng:
|
||||
```json
|
||||
"apiBase": "https://9router.com/v1"
|
||||
```
|
||||
|
||||
### 3. Lưu và Reload
|
||||
|
||||
1. Lưu file cấu hình
|
||||
2. Reload cửa sổ VSCode: `Cmd+Shift+P` → "Developer: Reload Window"
|
||||
3. Extension Continue sẽ load cấu hình mới
|
||||
|
||||
### 4. Chọn Model
|
||||
|
||||
1. Mở sidebar Continue (click icon Continue trong panel trái)
|
||||
2. Click dropdown chọn model ở trên cùng
|
||||
3. Chọn model 9Router ưa thích
|
||||
|
||||
## Model có sẵn
|
||||
|
||||
### Claude Models (Anthropic)
|
||||
- `cc/claude-opus-4-5-20251101` - Mạnh nhất, tốt nhất cho task phức tạp
|
||||
- `cc/claude-sonnet-4-20250514` - Cân bằng hiệu năng và tốc độ
|
||||
- `cc/claude-haiku-4-20250514` - Nhanh nhất, phù hợp task đơn giản
|
||||
|
||||
### DeepSeek Models
|
||||
- `cx/deepseek-chat` - Xuất sắc cho tạo code
|
||||
- `cx/deepseek-reasoner` - Tốt nhất cho giải quyết vấn đề phức tạp
|
||||
|
||||
### GLM Models (Zhipu AI)
|
||||
- `glm/glm-4-plus` - Tiếng Trung và tiếng Anh nâng cao
|
||||
- `glm/glm-4-flash` - Phản hồi nhanh
|
||||
|
||||
## Ví dụ Sử dụng
|
||||
|
||||
### Giải thích Code
|
||||
1. Chọn code trong editor
|
||||
2. Mở sidebar Continue
|
||||
3. Gõ: "Explain this code"
|
||||
4. Model: `cc/claude-sonnet-4-20250514`
|
||||
|
||||
### Tạo Code
|
||||
1. Mở sidebar Continue
|
||||
2. Gõ: "Create a React component for user profile card"
|
||||
3. Model: `cx/deepseek-chat`
|
||||
|
||||
### Refactoring
|
||||
1. Chọn code để refactor
|
||||
2. Gõ: "Refactor this to use async/await"
|
||||
3. Model: `cc/claude-sonnet-4-20250514`
|
||||
|
||||
### Sửa Bug
|
||||
1. Chọn code có vấn đề
|
||||
2. Gõ: "Find and fix the bug in this code"
|
||||
3. Model: `cx/deepseek-reasoner`
|
||||
|
||||
## Cấu hình Nâng cao
|
||||
|
||||
### Custom System Prompts
|
||||
|
||||
Thêm system prompt tùy chỉnh cho hành vi cụ thể:
|
||||
|
||||
```json
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"title": "9Router - Code Expert",
|
||||
"provider": "openai",
|
||||
"model": "cx/deepseek-chat",
|
||||
"apiKey": "your-api-key",
|
||||
"apiBase": "http://localhost:20128/v1",
|
||||
"systemMessage": "You are an expert programmer. Always provide clean, well-documented code with best practices."
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Temperature và Parameters
|
||||
|
||||
Điều chỉnh hành vi model với parameters:
|
||||
|
||||
```json
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"title": "9Router - Creative Writer",
|
||||
"provider": "openai",
|
||||
"model": "cc/claude-opus-4-5-20251101",
|
||||
"apiKey": "your-api-key",
|
||||
"apiBase": "http://localhost:20128/v1",
|
||||
"temperature": 0.9,
|
||||
"topP": 0.95
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Context Providers
|
||||
|
||||
Cấu hình context Continue gửi đến model:
|
||||
|
||||
```json
|
||||
{
|
||||
"contextProviders": [
|
||||
{
|
||||
"name": "code",
|
||||
"params": {
|
||||
"maxLines": 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"name": "terminal",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Phím tắt
|
||||
|
||||
- `Cmd+L` (Mac) / `Ctrl+L` (Windows/Linux) - Mở Continue chat
|
||||
- `Cmd+I` (Mac) / `Ctrl+I` (Windows/Linux) - Inline edit
|
||||
- `Cmd+Shift+R` (Mac) / `Ctrl+Shift+R` (Windows/Linux) - Tạo lại response
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Model không phản hồi
|
||||
- Kiểm tra 9Router đang chạy: `curl http://localhost:20128/health`
|
||||
- Xác minh API key trong config.json
|
||||
- Kiểm tra VSCode Developer Console để xem lỗi: `Help` → `Toggle Developer Tools`
|
||||
|
||||
### Chọn sai Model
|
||||
- Click dropdown model trong sidebar Continue
|
||||
- Chọn đúng model 9Router
|
||||
- Tên model phải khớp chính xác (case-sensitive)
|
||||
|
||||
### Cấu hình không Load
|
||||
- Xác minh JSON syntax hợp lệ (dùng JSON validator)
|
||||
- Kiểm tra vị trí file: `~/.continue/config.json`
|
||||
- Reload cửa sổ VSCode sau khi thay đổi
|
||||
|
||||
### Hiệu năng Chậm
|
||||
- Chuyển sang model nhanh hơn (haiku, flash)
|
||||
- Giảm context size trong contextProviders
|
||||
- Kiểm tra độ trễ network đến 9Router
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Chiến lược Chọn Model
|
||||
- **Edit nhanh**: Dùng `cc/claude-haiku-4-20250514`
|
||||
- **Tạo code**: Dùng `cx/deepseek-chat`
|
||||
- **Refactoring phức tạp**: Dùng `cc/claude-opus-4-5-20251101`
|
||||
- **Giải quyết vấn đề**: Dùng `cx/deepseek-reasoner`
|
||||
|
||||
### Quản lý Context
|
||||
- Chỉ chọn code liên quan trước khi hỏi
|
||||
- Dùng prompt cụ thể, rõ ràng
|
||||
- Chia task phức tạp thành các bước nhỏ
|
||||
|
||||
### Tối ưu Chi phí
|
||||
- Dùng model nhanh hơn/rẻ hơn cho task đơn giản
|
||||
- Giới hạn context size khi có thể
|
||||
- Cache response thường dùng
|
||||
|
||||
## Bước tiếp theo
|
||||
|
||||
- [Cấu hình Cursor](cursor.md) cho tích hợp IDE nâng cao
|
||||
- [Setup Roo](roo.md) cho trợ lý AI
|
||||
- [Khám phá CLI usage](../cli/basic-usage.md)
|
||||
- [Tìm hiểu về chọn model](../models/overview.md)
|
||||
@@ -0,0 +1,149 @@
|
||||
# Tích hợp Cursor
|
||||
|
||||
Tích hợp 9Router với Cursor IDE để định tuyến request AI qua hệ thống routing thông minh của 9Router.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- Cursor IDE đã cài đặt
|
||||
- Tài khoản Cursor Pro (cần thiết cho custom API endpoint)
|
||||
- 9Router cloud endpoint đã cấu hình
|
||||
- API key từ 9Router dashboard
|
||||
|
||||
## ⚠️ Lưu ý Quan trọng
|
||||
|
||||
> **Yêu cầu Cloud Endpoint**: Cursor định tuyến request qua server của chính nó và không hỗ trợ endpoint localhost. Bạn phải dùng 9Router cloud endpoint: `https://9router.com`
|
||||
|
||||
> **Yêu cầu Cursor Pro**: Tính năng này yêu cầu tài khoản Cursor Pro để dùng custom API endpoint.
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Mở Cursor Settings
|
||||
|
||||
1. Mở Cursor IDE
|
||||
2. Đi đến **Settings** (Cmd/Ctrl + ,)
|
||||
3. Đi đến phần **Models**
|
||||
|
||||
### 2. Bật OpenAI API
|
||||
|
||||
1. Tìm option **OpenAI API key**
|
||||
2. Bật toggle để kích hoạt cấu hình custom API
|
||||
|
||||
### 3. Cấu hình Base URL
|
||||
|
||||
Đặt base URL tới 9Router cloud endpoint:
|
||||
|
||||
```
|
||||
https://9router.com
|
||||
```
|
||||
|
||||
**Các bước:**
|
||||
1. Trong cài đặt Models, tìm field **Base URL**
|
||||
2. Nhập: `https://9router.com`
|
||||
3. Click **Save**
|
||||
|
||||
### 4. Thêm API Key
|
||||
|
||||
1. Trong field **API Key**, nhập API key 9Router
|
||||
2. Bạn có thể tìm API key trong 9Router dashboard tại **Settings → API Keys**
|
||||
3. Click **Save**
|
||||
|
||||
### 5. Thêm Custom Model
|
||||
|
||||
1. Click nút **View All Models**
|
||||
2. Click **Add Custom Model**
|
||||
3. Nhập tên model từ cấu hình 9Router (ví dụ: `gpt-4`, `claude-opus-4-5`, v.v.)
|
||||
4. Click **Add**
|
||||
|
||||
### 6. Chọn Model
|
||||
|
||||
1. Trong giao diện chat Cursor, click dropdown chọn model
|
||||
2. Chọn custom model từ danh sách
|
||||
3. Bắt đầu dùng 9Router với Cursor!
|
||||
|
||||
## Ví dụ Cấu hình
|
||||
|
||||
Cursor settings của bạn nên trông như sau:
|
||||
|
||||
```
|
||||
OpenAI API: ✓ Enabled
|
||||
Base URL: https://9router.com
|
||||
API Key: sk-9router-xxxxxxxxxxxxx
|
||||
Custom Models: gpt-4, claude-opus-4-5, gemini-2.0-flash
|
||||
```
|
||||
|
||||
## Model có sẵn
|
||||
|
||||
Bạn có thể dùng bất kỳ model nào đã cấu hình trong 9Router dashboard. Ví dụ phổ biến:
|
||||
|
||||
| Tên Model | Provider | Mô tả |
|
||||
|------------|----------|-------------|
|
||||
| `gpt-4` | OpenAI | GPT-4 Turbo |
|
||||
| `gpt-4o` | OpenAI | GPT-4 Optimized |
|
||||
| `claude-opus-4-5` | Anthropic | Claude Opus 4.5 |
|
||||
| `claude-sonnet-4-5` | Anthropic | Claude Sonnet 4.5 |
|
||||
| `gemini-2.0-flash` | Google | Gemini 2.0 Flash |
|
||||
|
||||
## Sử dụng
|
||||
|
||||
### Giao diện Chat
|
||||
|
||||
1. Mở Cursor chat (Cmd/Ctrl + L)
|
||||
2. Chọn model từ dropdown
|
||||
3. Bắt đầu chat với AI qua 9Router
|
||||
|
||||
### Tạo Code Inline
|
||||
|
||||
1. Chọn code trong editor
|
||||
2. Nhấn Cmd/Ctrl + K
|
||||
3. Nhập prompt
|
||||
4. Cursor sẽ dùng 9Router để tạo code
|
||||
|
||||
### Giải thích Code
|
||||
|
||||
1. Chọn code trong editor
|
||||
2. Nhấn Cmd/Ctrl + L
|
||||
3. Hỏi "Explain this code"
|
||||
4. Nhận giải thích AI qua 9Router
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Lỗi "Invalid API Key"
|
||||
|
||||
1. Xác minh API key trong 9Router dashboard
|
||||
2. Đảm bảo bạn sao chép đầy đủ key bao gồm prefix `sk-9router-`
|
||||
3. Kiểm tra API key chưa hết hạn
|
||||
4. Thử tạo API key mới
|
||||
|
||||
### Lỗi "Model Not Found"
|
||||
|
||||
1. Xác minh tên model khớp chính xác với cấu hình 9Router
|
||||
2. Kiểm tra kết nối provider đang hoạt động trong 9Router dashboard
|
||||
3. Đảm bảo model có sẵn trong các provider đã kết nối
|
||||
4. Thử dùng tên model đầy đủ (ví dụ: `openai/gpt-4` thay vì `gpt-4`)
|
||||
|
||||
### Lỗi Connection
|
||||
|
||||
1. Xác minh bạn đang dùng cloud endpoint: `https://9router.com`
|
||||
2. Kiểm tra kết nối internet
|
||||
3. Đảm bảo dịch vụ 9Router cloud đang hoạt động
|
||||
4. Thử tắt VPN hoặc proxy nếu đang bật
|
||||
|
||||
### Localhost không hoạt động
|
||||
|
||||
> **Nhớ**: Cursor không hỗ trợ endpoint localhost. Bạn phải dùng cloud endpoint `https://9router.com`. Nếu cần dùng 9Router cục bộ, hãy cân nhắc dùng dịch vụ tunneling như ngrok để expose endpoint cục bộ.
|
||||
|
||||
## Setup Cloud Endpoint
|
||||
|
||||
Nếu bạn chạy 9Router cục bộ và muốn dùng với Cursor:
|
||||
|
||||
1. Bật cloud endpoint trong 9Router settings
|
||||
2. Cấu hình URL cloud endpoint trong 9Router dashboard
|
||||
3. Dùng URL cloud trong Cursor settings
|
||||
4. Đảm bảo 9Router instance cục bộ có thể truy cập từ internet
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Dùng Model Aliases**: Tạo alias ngắn cho model thường dùng trong 9Router
|
||||
2. **Theo dõi Usage**: Kiểm tra 9Router dashboard để xem thống kê và chi phí
|
||||
3. **Xoay API Key**: Định kỳ xoay API key để bảo mật
|
||||
4. **Test Model**: Thử các model khác nhau để tìm model tốt nhất cho use case
|
||||
@@ -0,0 +1,416 @@
|
||||
# Tích hợp các Công cụ khác
|
||||
|
||||
9Router tương thích với mọi công cụ hỗ trợ format API OpenAI. Hướng dẫn này bao gồm pattern tích hợp tổng quát cho nhiều công cụ và ứng dụng tùy chỉnh.
|
||||
|
||||
## Tổng quan
|
||||
|
||||
9Router cung cấp API endpoint tương thích OpenAI hoạt động với:
|
||||
- Script và ứng dụng tùy chỉnh
|
||||
- API client và công cụ test
|
||||
- Công cụ CLI và utility
|
||||
- Tích hợp bên thứ ba
|
||||
- Framework phát triển
|
||||
|
||||
## Pattern Setup Tổng quát
|
||||
|
||||
Mọi công cụ tương thích OpenAI có thể kết nối đến 9Router bằng các cài đặt sau:
|
||||
|
||||
**9Router cục bộ:**
|
||||
```
|
||||
Base URL: http://localhost:20128/v1
|
||||
API Key: your-api-key-from-dashboard
|
||||
Model: any 9Router model (cc/*, cx/*, glm/*, etc.)
|
||||
```
|
||||
|
||||
**9Router cloud:**
|
||||
```
|
||||
Base URL: https://9router.com/v1
|
||||
API Key: your-api-key-from-dashboard
|
||||
Model: any 9Router model (cc/*, cx/*, glm/*, etc.)
|
||||
```
|
||||
|
||||
## Model có sẵn
|
||||
|
||||
### Claude Models (Anthropic)
|
||||
- `cc/claude-opus-4-5-20251101`
|
||||
- `cc/claude-sonnet-4-20250514`
|
||||
- `cc/claude-haiku-4-20250514`
|
||||
|
||||
### DeepSeek Models
|
||||
- `cx/deepseek-chat`
|
||||
- `cx/deepseek-reasoner`
|
||||
|
||||
### GLM Models (Zhipu AI)
|
||||
- `glm/glm-4-plus`
|
||||
- `glm/glm-4-flash`
|
||||
|
||||
## Ví dụ Tích hợp
|
||||
|
||||
### Python với OpenAI SDK
|
||||
|
||||
```python
|
||||
from openai import OpenAI
|
||||
|
||||
client = OpenAI(
|
||||
api_key="your-api-key-from-dashboard",
|
||||
base_url="http://localhost:20128/v1"
|
||||
)
|
||||
|
||||
response = client.chat.completions.create(
|
||||
model="cc/claude-sonnet-4-20250514",
|
||||
messages=[
|
||||
{"role": "user", "content": "Hello, how are you?"}
|
||||
]
|
||||
)
|
||||
|
||||
print(response.choices[0].message.content)
|
||||
```
|
||||
|
||||
### Node.js với OpenAI SDK
|
||||
|
||||
```javascript
|
||||
import OpenAI from "openai";
|
||||
|
||||
const client = new OpenAI({
|
||||
apiKey: "your-api-key-from-dashboard",
|
||||
baseURL: "http://localhost:20128/v1"
|
||||
});
|
||||
|
||||
const response = await client.chat.completions.create({
|
||||
model: "cc/claude-sonnet-4-20250514",
|
||||
messages: [
|
||||
{ role: "user", content: "Hello, how are you?" }
|
||||
]
|
||||
});
|
||||
|
||||
console.log(response.choices[0].message.content);
|
||||
```
|
||||
|
||||
### Lệnh cURL
|
||||
|
||||
```bash
|
||||
curl http://localhost:20128/v1/chat/completions \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer your-api-key-from-dashboard" \
|
||||
-d '{
|
||||
"model": "cc/claude-sonnet-4-20250514",
|
||||
"messages": [
|
||||
{"role": "user", "content": "Hello, how are you?"}
|
||||
]
|
||||
}'
|
||||
```
|
||||
|
||||
### HTTP Client (Postman, Insomnia)
|
||||
|
||||
**Request:**
|
||||
```
|
||||
POST http://localhost:20128/v1/chat/completions
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer your-api-key-from-dashboard
|
||||
```
|
||||
|
||||
**Body:**
|
||||
```json
|
||||
{
|
||||
"model": "cc/claude-sonnet-4-20250514",
|
||||
"messages": [
|
||||
{"role": "user", "content": "Hello, how are you?"}
|
||||
],
|
||||
"temperature": 0.7,
|
||||
"max_tokens": 1000
|
||||
}
|
||||
```
|
||||
|
||||
### Tích hợp LangChain
|
||||
|
||||
```python
|
||||
from langchain.chat_models import ChatOpenAI
|
||||
from langchain.schema import HumanMessage
|
||||
|
||||
llm = ChatOpenAI(
|
||||
model_name="cc/claude-sonnet-4-20250514",
|
||||
openai_api_key="your-api-key-from-dashboard",
|
||||
openai_api_base="http://localhost:20128/v1",
|
||||
temperature=0.7
|
||||
)
|
||||
|
||||
messages = [HumanMessage(content="Explain quantum computing")]
|
||||
response = llm(messages)
|
||||
print(response.content)
|
||||
```
|
||||
|
||||
### Tích hợp LlamaIndex
|
||||
|
||||
```python
|
||||
from llama_index.llms import OpenAI
|
||||
|
||||
llm = OpenAI(
|
||||
model="cc/claude-sonnet-4-20250514",
|
||||
api_key="your-api-key-from-dashboard",
|
||||
api_base="http://localhost:20128/v1"
|
||||
)
|
||||
|
||||
response = llm.complete("What is machine learning?")
|
||||
print(response.text)
|
||||
```
|
||||
|
||||
## Ví dụ Script Tùy chỉnh
|
||||
|
||||
### Script Xử lý Batch
|
||||
|
||||
```python
|
||||
import openai
|
||||
import json
|
||||
|
||||
openai.api_key = "your-api-key-from-dashboard"
|
||||
openai.api_base = "http://localhost:20128/v1"
|
||||
|
||||
def process_batch(prompts, model="cx/deepseek-chat"):
|
||||
results = []
|
||||
for prompt in prompts:
|
||||
response = openai.ChatCompletion.create(
|
||||
model=model,
|
||||
messages=[{"role": "user", "content": prompt}]
|
||||
)
|
||||
results.append({
|
||||
"prompt": prompt,
|
||||
"response": response.choices[0].message.content
|
||||
})
|
||||
return results
|
||||
|
||||
prompts = [
|
||||
"Explain AI in one sentence",
|
||||
"What is machine learning?",
|
||||
"Define neural networks"
|
||||
]
|
||||
|
||||
results = process_batch(prompts)
|
||||
print(json.dumps(results, indent=2))
|
||||
```
|
||||
|
||||
### Xử lý Streaming Response
|
||||
|
||||
```javascript
|
||||
import OpenAI from "openai";
|
||||
|
||||
const client = new OpenAI({
|
||||
apiKey: "your-api-key-from-dashboard",
|
||||
baseURL: "http://localhost:20128/v1"
|
||||
});
|
||||
|
||||
async function streamResponse(prompt) {
|
||||
const stream = await client.chat.completions.create({
|
||||
model: "cc/claude-sonnet-4-20250514",
|
||||
messages: [{ role: "user", content: prompt }],
|
||||
stream: true
|
||||
});
|
||||
|
||||
for await (const chunk of stream) {
|
||||
const content = chunk.choices[0]?.delta?.content || "";
|
||||
process.stdout.write(content);
|
||||
}
|
||||
}
|
||||
|
||||
streamResponse("Write a short story about AI");
|
||||
```
|
||||
|
||||
### So sánh Nhiều Model
|
||||
|
||||
```python
|
||||
from openai import OpenAI
|
||||
|
||||
client = OpenAI(
|
||||
api_key="your-api-key-from-dashboard",
|
||||
base_url="http://localhost:20128/v1"
|
||||
)
|
||||
|
||||
models = [
|
||||
"cc/claude-sonnet-4-20250514",
|
||||
"cx/deepseek-chat",
|
||||
"glm/glm-4-plus"
|
||||
]
|
||||
|
||||
prompt = "Explain quantum computing in simple terms"
|
||||
|
||||
for model in models:
|
||||
response = client.chat.completions.create(
|
||||
model=model,
|
||||
messages=[{"role": "user", "content": prompt}]
|
||||
)
|
||||
print(f"\n=== {model} ===")
|
||||
print(response.choices[0].message.content)
|
||||
```
|
||||
|
||||
## Pattern Tích hợp Phổ biến
|
||||
|
||||
### Biến môi trường
|
||||
|
||||
Lưu credentials an toàn:
|
||||
|
||||
```bash
|
||||
# .env file
|
||||
ROUTER_API_KEY=your-api-key-from-dashboard
|
||||
ROUTER_BASE_URL=http://localhost:20128/v1
|
||||
ROUTER_MODEL=cc/claude-sonnet-4-20250514
|
||||
```
|
||||
|
||||
```python
|
||||
import os
|
||||
from openai import OpenAI
|
||||
|
||||
client = OpenAI(
|
||||
api_key=os.getenv("ROUTER_API_KEY"),
|
||||
base_url=os.getenv("ROUTER_BASE_URL")
|
||||
)
|
||||
```
|
||||
|
||||
### Xử lý Lỗi
|
||||
|
||||
```python
|
||||
from openai import OpenAI, OpenAIError
|
||||
|
||||
client = OpenAI(
|
||||
api_key="your-api-key",
|
||||
base_url="http://localhost:20128/v1"
|
||||
)
|
||||
|
||||
try:
|
||||
response = client.chat.completions.create(
|
||||
model="cc/claude-sonnet-4-20250514",
|
||||
messages=[{"role": "user", "content": "Hello"}]
|
||||
)
|
||||
print(response.choices[0].message.content)
|
||||
except OpenAIError as e:
|
||||
print(f"Error: {e}")
|
||||
```
|
||||
|
||||
### Logic Retry
|
||||
|
||||
```python
|
||||
import time
|
||||
from openai import OpenAI, RateLimitError
|
||||
|
||||
client = OpenAI(
|
||||
api_key="your-api-key",
|
||||
base_url="http://localhost:20128/v1"
|
||||
)
|
||||
|
||||
def chat_with_retry(prompt, max_retries=3):
|
||||
for attempt in range(max_retries):
|
||||
try:
|
||||
response = client.chat.completions.create(
|
||||
model="cc/claude-sonnet-4-20250514",
|
||||
messages=[{"role": "user", "content": prompt}]
|
||||
)
|
||||
return response.choices[0].message.content
|
||||
except RateLimitError:
|
||||
if attempt < max_retries - 1:
|
||||
time.sleep(2 ** attempt) # Exponential backoff
|
||||
else:
|
||||
raise
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Vấn đề Connection
|
||||
|
||||
**Vấn đề:** Không kết nối được đến 9Router
|
||||
```bash
|
||||
# Check if 9Router is running
|
||||
curl http://localhost:20128/health
|
||||
|
||||
# Expected response:
|
||||
{"status": "ok"}
|
||||
```
|
||||
|
||||
**Giải pháp:**
|
||||
- Xác minh 9Router đang chạy
|
||||
- Kiểm tra port 20128 không bị chặn
|
||||
- Đảm bảo base URL đúng (bao gồm `/v1`)
|
||||
|
||||
### Lỗi Xác thực
|
||||
|
||||
**Vấn đề:** 401 Unauthorized
|
||||
```
|
||||
Error: Invalid API key
|
||||
```
|
||||
|
||||
**Giải pháp:**
|
||||
- Xác minh API key từ dashboard
|
||||
- Kiểm tra format header Authorization: `Bearer your-api-key`
|
||||
- Đảm bảo không có khoảng trắng hoặc xuống dòng thừa trong API key
|
||||
|
||||
### Model Not Found
|
||||
|
||||
**Vấn đề:** 404 Model not found
|
||||
```
|
||||
Error: Model 'cc/claude-opus' not found
|
||||
```
|
||||
|
||||
**Giải pháp:**
|
||||
- Dùng tên model chính xác (case-sensitive)
|
||||
- Kiểm tra model có sẵn: `curl http://localhost:20128/v1/models`
|
||||
- Xác minh model được bật trong plan của bạn
|
||||
|
||||
### Vấn đề Timeout
|
||||
|
||||
**Vấn đề:** Request timeout
|
||||
```
|
||||
Error: Request timed out after 30s
|
||||
```
|
||||
|
||||
**Giải pháp:**
|
||||
- Tăng timeout trong cấu hình client
|
||||
- Dùng model nhanh hơn cho task nhạy cảm về thời gian
|
||||
- Kiểm tra kết nối network đến 9Router
|
||||
|
||||
### Rate Limiting
|
||||
|
||||
**Vấn đề:** 429 Too Many Requests
|
||||
```
|
||||
Error: Rate limit exceeded
|
||||
```
|
||||
|
||||
**Giải pháp:**
|
||||
- Triển khai exponential backoff
|
||||
- Giảm tần suất request
|
||||
- Kiểm tra rate limit trong dashboard
|
||||
- Cân nhắc nâng cấp plan
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Bảo mật
|
||||
- Lưu API key trong biến môi trường
|
||||
- Không bao giờ commit API key vào version control
|
||||
- Dùng HTTPS cho cloud deployment
|
||||
- Xoay API key định kỳ
|
||||
|
||||
### Hiệu năng
|
||||
- Dùng model phù hợp với độ phức tạp task
|
||||
- Triển khai caching cho query lặp lại
|
||||
- Dùng streaming cho phản hồi dài
|
||||
- Batch request khi có thể
|
||||
|
||||
### Xử lý Lỗi
|
||||
- Luôn triển khai try-catch block
|
||||
- Thêm logic retry với exponential backoff
|
||||
- Log lỗi để debug
|
||||
- Cung cấp cơ chế fallback
|
||||
|
||||
### Tối ưu Chi phí
|
||||
- Chọn model tiết kiệm chi phí cho task đơn giản
|
||||
- Cache phản hồi khi phù hợp
|
||||
- Theo dõi usage trong dashboard
|
||||
- Đặt giới hạn request trong code
|
||||
|
||||
## Bước tiếp theo
|
||||
|
||||
- [Cấu hình Cursor](cursor.md) cho tích hợp IDE
|
||||
- [Setup Continue](continue.md) cho VSCode
|
||||
- [Khám phá CLI usage](../cli/basic-usage.md)
|
||||
- [Tìm hiểu về chọn model](../models/overview.md)
|
||||
- [API Reference](../api/reference.md)
|
||||
@@ -0,0 +1,127 @@
|
||||
# Tích hợp Roo AI Assistant
|
||||
|
||||
Tích hợp 9Router với Roo AI Assistant để truy cập nhiều model AI qua một giao diện thống nhất.
|
||||
|
||||
## Yêu cầu
|
||||
|
||||
- Roo AI Assistant đã cài đặt
|
||||
- 9Router API key từ [dashboard](https://9router.com/dashboard)
|
||||
- 9Router đang chạy (cục bộ hoặc cloud)
|
||||
|
||||
## Các bước Cấu hình
|
||||
|
||||
### 1. Mở Roo Settings
|
||||
|
||||
Khởi chạy Roo AI Assistant và mở panel settings.
|
||||
|
||||
### 2. Cấu hình API Provider
|
||||
|
||||
1. Đi đến cài đặt **API Provider**
|
||||
2. Chọn **Ollama** làm provider type
|
||||
3. Cấu hình các settings sau:
|
||||
|
||||
**Cho 9Router cục bộ:**
|
||||
```
|
||||
Base URL: http://localhost:20128/v1
|
||||
API Key: your-api-key-from-dashboard
|
||||
```
|
||||
|
||||
**Cho 9Router cloud:**
|
||||
```
|
||||
Base URL: https://9router.com/v1
|
||||
API Key: your-api-key-from-dashboard
|
||||
```
|
||||
|
||||
### 3. Chọn Model
|
||||
|
||||
Chọn từ các model 9Router có sẵn:
|
||||
|
||||
**Claude Models:**
|
||||
- `cc/claude-opus-4-5-20251101` - Mạnh nhất
|
||||
- `cc/claude-sonnet-4-20250514` - Cân bằng
|
||||
- `cc/claude-haiku-4-20250514` - Nhanh
|
||||
|
||||
**DeepSeek Models:**
|
||||
- `cx/deepseek-chat` - Đa năng
|
||||
- `cx/deepseek-reasoner` - Reasoning phức tạp
|
||||
|
||||
**GLM Models:**
|
||||
- `glm/glm-4-plus` - Nâng cao
|
||||
- `glm/glm-4-flash` - Phản hồi nhanh
|
||||
|
||||
### 4. Test Connection
|
||||
|
||||
Gửi tin nhắn test để xác minh tích hợp:
|
||||
|
||||
```
|
||||
Hello! Can you confirm you're connected through 9Router?
|
||||
```
|
||||
|
||||
## Ví dụ Sử dụng
|
||||
|
||||
### Chat Cơ bản
|
||||
```
|
||||
Ask Roo: "Explain quantum computing in simple terms"
|
||||
Model: cc/claude-sonnet-4-20250514
|
||||
```
|
||||
|
||||
### Tạo Code
|
||||
```
|
||||
Ask Roo: "Write a Python function to calculate Fibonacci numbers"
|
||||
Model: cx/deepseek-chat
|
||||
```
|
||||
|
||||
### Reasoning Phức tạp
|
||||
```
|
||||
Ask Roo: "Analyze the trade-offs between microservices and monolithic architecture"
|
||||
Model: cx/deepseek-reasoner
|
||||
```
|
||||
|
||||
## Mẹo Chọn Model
|
||||
|
||||
- **Task nhanh**: Dùng `cc/claude-haiku-4-20250514` hoặc `glm/glm-4-flash`
|
||||
- **Hiệu năng cân bằng**: Dùng `cc/claude-sonnet-4-20250514` hoặc `cx/deepseek-chat`
|
||||
- **Reasoning phức tạp**: Dùng `cc/claude-opus-4-5-20251101` hoặc `cx/deepseek-reasoner`
|
||||
- **Tối ưu chi phí**: Dùng model DeepSeek hoặc GLM
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Connection Failed
|
||||
- Xác minh 9Router đang chạy: `curl http://localhost:20128/health`
|
||||
- Kiểm tra API key đúng
|
||||
- Đảm bảo Base URL bao gồm hậu tố `/v1`
|
||||
|
||||
### Model không khả dụng
|
||||
- Kiểm tra tên model khớp chính xác (case-sensitive)
|
||||
- Xác minh model được bật trong 9Router plan
|
||||
- Thử model khác từ danh sách
|
||||
|
||||
### Phản hồi Chậm
|
||||
- Chuyển sang model nhanh hơn (haiku, flash)
|
||||
- Kiểm tra kết nối network
|
||||
- Theo dõi logs 9Router để xem vấn đề
|
||||
|
||||
## Cấu hình Nâng cao
|
||||
|
||||
### Custom Model Aliases
|
||||
|
||||
Bạn có thể tạo shortcut cho model thường dùng trong Roo settings:
|
||||
|
||||
```
|
||||
Alias: "fast" → cc/claude-haiku-4-20250514
|
||||
Alias: "smart" → cc/claude-opus-4-5-20251101
|
||||
Alias: "code" → cx/deepseek-chat
|
||||
```
|
||||
|
||||
### Nhiều Profile
|
||||
|
||||
Setup profile khác nhau cho use case khác nhau:
|
||||
- **Development**: Model DeepSeek cho code
|
||||
- **Writing**: Model Claude cho nội dung
|
||||
- **Research**: Model Reasoner cho phân tích
|
||||
|
||||
## Bước tiếp theo
|
||||
|
||||
- [Cấu hình Cursor](cursor.md) cho tích hợp IDE
|
||||
- [Setup Continue](continue.md) cho VSCode
|
||||
- [Khám phá CLI usage](../cli/basic-usage.md)
|
||||
Reference in New Issue
Block a user