AI Proxy Node Tài liệu AI Proxy Node

Tài liệu API

Trang này tương thích hoàn toàn với protocol gốc của OpenAI và Anthropic — trỏ SDK hiện có vào Base URL của chúng tôi là xong.

Thông tin cơ bản

TrườngGiá trị
Base URLhttps://aiproxynode.com
Tiền tố tương thích OpenAI/v1/*
Tiền tố Claude gốc/v1/messages hoặc /claude/v1/messages
Xác thựcAuthorization: Bearer sk-xxxxxx hoặc x-api-key: sk-xxxxxx

Protocol tương thích OpenAI

Gọi theo protocol ChatCompletions chính thức của OpenAI. Dùng tên model chính thức của từng nhà cung cấp — chúng tôi tự động định tuyến đến upstream tương ứng.

Python
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxx",
    base_url="https://aiproxynode.com/v1",
)

# Gọi bất kỳ model nào qua protocol OpenAI
for model in ["claude-sonnet-4-6", "claude-haiku-4-5", "deepseek-chat", "deepseek-reasoner"]:
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Hi"}],
    )
    print(model, "->", resp.choices[0].message.content)

Đa phương thức (đầu vào hình ảnh)

Python
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Trong ảnh viết gì?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/x.png"}},
        ],
    }],
)

Function Calling / Tools

Python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Lấy thời tiết của một thành phố",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Thời tiết Hà Nội thế nào?"}],
    tools=tools,
)

API Claude gốc

Khi dùng SDK Anthropic chính thức, chỉ cần đổi base_url thành https://aiproxynode.com.

Python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-xxxxxx",
    base_url="https://aiproxynode.com",
)

resp = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hi"}],
)
print(resp.content[0].text)

Cài đặt IDE Client (Claude Code / Cline / Cursor / Continue)

⚠ Chọn đúng nhóm khi tạo Token

Mỗi token aiproxynode chỉ gắn với một nhóm duy nhất; không tự động định tuyến giữa các nhóm:

  • Nhóm kiro — chạy các model Claude (sonnet / opus / haiku)
  • Nhóm gptpuls — chạy các model GPT (gpt-5.5 / 5.4 / 5.3-codex)

Nếu client trả về no available channels under group X, nhóm của token không khớp với model bạn đang gọi.

⚡ Script cài đặt 1 chạm

Không muốn chép biến môi trường bằng tay? Tải script tương ứng — script sẽ tự sao lưu cấu hình hiện tại và ghi cấu hình mới.

Tình huốngNhóm cần dùngWindows (.ps1)macOS (.sh)
VSCode + Claude CodekiroTảiTải
Claude Desktop + CLIkiroTảiTải
VSCode + Cline (dùng GPT)gptpulsTảiTải
Cursor + ClaudekiroTảiTải
Cursor hỗn hợp (chọn lúc chạy)chọn lúc chạyTảiTải

Cách dùng: chuột phải vào link → Lưu link → Windows chuột phải vào .ps1 và Run with PowerShell; macOS chạy bash setup-xxx.sh trong Terminal.

Script sẽ hỏi token rồi ghi cấu hình; KHÔNG kiểm tra kết nối online. Sau khi chạy, gửi một tin nhắn thử trong client để xác nhận.

Hầu hết AI assistant trong IDE hỗ trợ trỏ tới endpoint tương thích Anthropic tùy chỉnh thông qua biến môi trường hoặc cài đặt. Dưới đây là cách cài cho các client phổ biến.

Claude Code (Tiện ích VSCode / CLI)

Claude Code chính thức của Anthropic chuyển sang trang này thông qua hai biến môi trường — ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN:

Windows · PowerShell
# Toàn hệ thống, lưu vĩnh viễn (khuyến nghị)
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://aiproxynode.com", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-xxxxxx", "User")
# Khởi động lại VSCode để có hiệu lực
macOS / Linux · bash/zsh
# Thêm vào ~/.zshrc hoặc ~/.bashrc
export ANTHROPIC_BASE_URL="https://aiproxynode.com"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxx"
# Khởi động lại VSCode / Terminal để có hiệu lực

Đối với chuyển đổi tạm thời chỉ cho một phiên:

CLI
ANTHROPIC_BASE_URL=https://aiproxynode.com \
ANTHROPIC_AUTH_TOKEN=sk-xxxxxx \
claude --model claude-sonnet-4-6
Chọn model mặc định

Khi khởi động, Claude Code truy vấn /v1/models của chúng tôi để lấy danh sách hiện có — xem Danh sách Model bên dưới để biết những gì đang được expose. Dùng lệnh /model để đổi trong phiên. Chúng tôi khuyến nghị claude-sonnet-4-6 dùng hàng ngày, claude-opus-4-7 cho suy luận nặng, và claude-haiku-4-5 cho gọi nhiều giá rẻ.

Cline / Roo Code (Tiện ích VSCode)

  1. Mở cài đặt Cline (biểu tượng bánh răng)
  2. Đặt API ProviderAnthropic
  3. Tích Use custom base URL, điền https://aiproxynode.com
  4. Đặt API Key là token sk-xxxxxx của bạn
  5. Chọn Model như claude-sonnet-4-6 hoặc claude-opus-4-7

Cursor

Cursor không expose cài đặt Anthropic Base URL; mọi tích hợp bên thứ ba đều đi qua protocol tương thích OpenAI. Trong Cursor Settings → Models:

Đọc trước: 3 lỗi phổ biến (gây 80% thất bại khi cài)
  • Đừng bật Anthropic API Key cùng lúc: bug đã biết của Cursor — nếu cả Anthropic Key và Override OpenAI Base URL đều bật, mọi cuộc gọi Claude trả 422. Token từ trang này chỉ điền vào OpenAI API Key.
  • Đừng dùng tên model chính thức trực tiếp: Cursor sẽ ưu tiên định tuyến các tên như claude-sonnet-4-6 hoặc gpt-4o qua kênh riêng của nó, nên request không bao giờ đến chúng tôi. Dùng alias riêng của trang (xem bước 3 dưới đây).
  • Sau khi thêm, cần làm 2 việc nữa: khi thêm model tùy chỉnh, bạn phải bật toggle ON bên phải, và chọn nó từ dropdown model trong chat, nếu không Cursor sẽ rơi về model Auto/built-in mặc định.
  1. Tắt toggle Anthropic API Key. Nếu trước đó đã bật, hãy tắt và xóa input Anthropic Key.
  2. Mở rộng phần API Keys → bật OpenAI API Key → dán token sk-xxxxxx của bạn
  3. Bật Override OpenAI Base URL → đặt URL là https://aiproxynode.com/v1
  4. Cuộn lên danh sách Models, tìm input Add or search model, và thêm các dòng dưới đây (bấm Enter sau mỗi dòng):
    Alias để nhậpModel thực được dùngTrường hợp dùng
    aiproxy/sonnetclaude-sonnet-4-6Code hàng ngày, cân bằng chi phí/chất lượng (khuyến nghị)
    aiproxy/haikuclaude-haiku-4-5Tác vụ nhẹ, rẻ nhất
    aiproxy/opusclaude-opus-4-7Suy luận nặng, tác vụ phức tạp
    Dùng alias thay vì tên chính thức để vượt qua định tuyến "ưu tiên built-in" của Cursor. Quản trị trang phải map các alias này tới model thực trong Channels → Model Redirect của new-api trước; người dùng thông thường có thể chép alias trên nguyên xi, không cần cài đặt gì.
  5. Bật toggle ON cho mọi model vừa thêm. Chỉ thêm thôi không expose chúng vào dropdown chat.
  6. Mở phiên chat/Agent bất kỳ, bấm bộ chọn model ở góc dưới bên trái và chọn aiproxy/sonnet (hoặc khác) bạn vừa thêm. Không chọn thủ công thì Cursor mặc định Auto = model built-in, request sẽ không đến trang này.
Cách xác nhận request đã đến trang này
  1. Gửi tin nhắn thử trong Cursor
  2. Mở Bảng điều khiển aiproxynode.com → Log, refresh và kiểm tra request của bạn có hiện không
  3. Nếu hiện → ổn rồi; nếu không → nhiều khả năng bạn bỏ qua bước 5 hoặc không chọn model ở bước 6
Về model built-in của Cursor (GPT-5.4 / Opus 4.6 v.v.)

Các model liệt kê sẵn ở trên cùng dùng kênh subscription riêng của Cursor và không liên quan đến trang này. Ngay cả khi đã cấu hình OpenAI Base URL đúng, chọn model built-in trong chat sẽ gửi request qua Cursor, không qua chúng tôi.

Tab completion và Apply vẫn đi qua Cursor

Ngay cả khi mọi thứ đã cấu hình đúng, Tab autocomplete của Cursor và hành động Apply trong chat vẫn được vận hành bởi các model nhỏ riêng của Cursor — chúng không đi qua trang này. Chỉ cuộc trò chuyện Chat/Agent chính mới dùng model tùy chỉnh của bạn.

Continue (Tiện ích VSCode / JetBrains)

Sửa ~/.continue/config.json và thêm vào mảng models:

config.json
{
  "models": [
    {
      "title": "Claude Sonnet 4.6 via AiProxyNode",
      "provider": "anthropic",
      "model": "claude-sonnet-4-6",
      "apiKey": "sk-xxxxxx",
      "apiBase": "https://aiproxynode.com"
    }
  ]
}
Ưu tiên protocol tương thích OpenAI

Trừ khi ứng dụng của bạn phụ thuộc nghiêm ngặt vào tính năng Claude gốc (như block tool_use hoặc cấu trúc content blocks), hãy ưu tiên protocol tương thích OpenAI — công cụ debug và hệ sinh thái hoàn thiện hơn nhiều.

Streaming

Mọi model đều hỗ trợ streaming (Server-Sent Events):

Python
stream = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Viết một bài thơ ngắn"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
curl
curl https://aiproxynode.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role": "user", "content": "Viết thơ"}],
    "stream": true
  }'

Danh sách Model

Đối với model phổ biến, chỉ cần dùng tên chính thức. Danh sách đầy đủ và bảng giá tại trang chính → Models.

OpenAI

Kênh OpenAI hiện chưa được kích hoạt. Chúng tôi khuyến nghị dùng claude-sonnet-4-6 (tương đương GPT-4o) hoặc deepseek-chat (hiệu năng/giá tốt) thay thế. Phần này sẽ được cập nhật khi kênh OpenAI online.

Anthropic Claude

Khuyến nghị dùng các alias trên. Dạng có ngày của các phiên bản đang hoạt động (claude-haiku-4-5-20251001 / claude-sonnet-4-5-20250929 / claude-opus-4-5-20251101) cũng hoạt động — SDK Anthropic chính thức và Claude Code map alias sang tên có ngày bên trong, bạn không cần chỉ định thủ công. Tên có ngày đã ngừng hoạt động (ví dụ claude-sonnet-4-20250514) sẽ trả 503 model_not_found.

DeepSeek

Kênh Moonshot / Doubao / Qwen / GLM / Gemini / OpenAI hiện chưa được kích hoạt — gọi các tên model đó sẽ trả 503 No available channel. Danh sách model có sẵn đầy đủ và bảng giá ở trang Models của site chính.

Mã lỗi

HTTPLoại lỗiMô tả
400invalid_request_errorSai tham số — thường do thiếu trường hoặc kiểu sai
401authentication_errorAPI Key sai hoặc đã bị vô hiệu hóa
402insufficient_quotaSố dư tài khoản hoặc hạn mức token đã hết
403forbiddenToken không có quyền truy cập model này
404not_foundTên model không tồn tại hoặc đã ngừng hoạt động
429rate_limit_exceededChạm giới hạn tốc độ — thử lại hoặc giảm concurrency
500internal_errorLỗi upstream hoặc gateway — vui lòng thử lại
502 / 503upstream_errorUpstream tạm thời không khả dụng — thử lại hoặc đổi model
Khuyến nghị thực hành

Với traffic production, luôn retry các cuộc gọi idempotent với exponential backoff và thêm fallback model tự động cho lỗi 5xx.