Trang chủ → Hướng dẫn → OpenCode với API tùy chỉnh: cấu hình, Claude, small_model và chi phí thực

OpenCode với API tùy chỉnh: cấu hình, Claude, small_model và chi phí thực

OpenCode đọc nhà cung cấp từ opencode.json, nên cấu hình chỉ là một tệp. Điều làm chúng tôi bất ngờ là hóa đơn: chỉ yêu cầu đúng một từ đã sinh ra hai yêu cầu và hơn 12.000 token đầu vào. Chúng tôi chạy OpenCode 1.19.0 trên cổng của mình với ba model để thấy token đi đâu và cắt giảm thế nào.

Tệp cấu hình

Đặt nội dung sau vào ~/.config/opencode/opencode.json (hoặc opencode.json trong dự án):

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "apiclan": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "APICLAN",
      "options": {
        "baseURL": "https://apiclan.us/v1",
        "apiKey": "{env:APICLAN_GPT_KEY}"
      },
      "models": {
        "gpt-6-astra": {},
        "gpt-6.1-sol": {}
      }
    }
  }
}
  1. Tạo khóa trong bảng điều khiển và đặt làm biến môi trường, ví dụ APICLAN_GPT_KEY.
  2. Trong models, chỉ liệt kê model thuộc nhóm của khóa đó. Mỗi khóa chỉ thuộc một nhóm, nên GPT, DeepSeek và Claude cần mục nhà cung cấp và khóa riêng.
  3. Chạy opencode, gõ /models và chọn APICLAN → gpt-6-astra. Trong script: opencode run -m apiclan/gpt-6-astra "...".
baseURLKết quả
https://apiclan.us/v1✓
https://apiclan.us✗ 404 Not Found

@ai-sdk/openai-compatible chỉ nối thêm /chat/completions vào baseURL, nên /v1 phải có sẵn. Thiếu nó, OpenCode dừng lại với một dòng Not Found.

Thêm Claude

Thêm nhà cung cấp thứ hai trong provider, dùng gói Anthropic và khóa của nhóm Claude:

"claude": {
  "npm": "@ai-sdk/anthropic",
  "name": "APICLAN Claude",
  "options": {
    "baseURL": "https://apiclan.us/v1",
    "apiKey": "{env:APICLAN_CLAUDE_KEY}"
  },
  "models": { "claude-fable-5-1": {} }
}

Ở đây baseURL cũng phải kết thúc bằng /v1: gói Anthropic chỉ nối thêm /messages, và chỉ https://apiclan.us đã trả về 404 trong bài thử. Điều này ngược với Claude Code, nơi ANTHROPIC_BASE_URL không được chứa /v1.

Một câu trả lời ngắn tốn bao nhiêu

Chúng tôi yêu cầu OpenCode “Reply with just OK” trong một dự án trống. Model nào cũng gửi hai yêu cầu: một để đặt tiêu đề phiên, một là câu trả lời thật mang theo prompt hệ thống và định nghĩa công cụ của OpenCode.

ModelSố yêu cầuToken đầu vào (tiêu đề + trả lời)Tổng thời gianChi phí
gpt-6-astra24,640 + 7,67820.5 s$0.050
deepseek-v4-pro2528 + 5,70834.1 s$0.005
deepseek-v4.1-flash2529 + 3,02721.8 s$0.0006

OpenCode gửi cho model GPT một prompt hệ thống dài hơn nhiều (khoảng 7.700 token) so với DeepSeek (khoảng 3.000), và riêng yêu cầu đặt tiêu đề trên GPT đã dùng 4.640 token. Vì vậy cùng một chữ “OK” trên gpt-6-astra tốn khoảng gấp 77 lần trên deepseek-v4.1-flash. Thử ngày 12/10/2026 với OpenCode 1.19.0; chi phí theo số cổng của chúng tôi đã tính.

Giảm chi phí phụ bằng small_model

OpenCode dùng small_model cho việc phụ như đặt tiêu đề phiên. Hãy trỏ nó tới một model rẻ trong nhà cung cấp riêng:

"small_model": "apiclan-ds/deepseek-v4.1-flash",
"provider": {
  "apiclan": { ... },
  "apiclan-ds": {
    "npm": "@ai-sdk/openai-compatible",
    "options": {
      "baseURL": "https://apiclan.us/v1",
      "apiKey": "{env:APICLAN_DS_KEY}"
    },
    "models": { "deepseek-v4.1-flash": {} }
  }
}

Với gpt-6-astra làm model chính, yêu cầu đặt tiêu đề giảm từ $0,0187 xuống $0,00003, cả cuộc trao đổi một từ giảm từ $0,050 xuống $0,031 — rẻ hơn 38% mỗi phiên mới mà câu trả lời không đổi.

Một tác vụ lập trình nhỏ

Cùng một tác vụ cho mỗi model: viết fizzbuzz.py và test pytest, không chạy lệnh nào. Sau đó chúng tôi đối chiếu từng hàm với kết quả đúng cho 1–30.

ModelSố yêu cầuTổng thời gianChi phíĐúngSố assert trong test
gpt-6-astra340 s$0.069✓2
deepseek-v4-pro361 s$0.008✓7
deepseek-v4.1-flash325 s$0.0011✓7

Cả ba đều viết đúng mã trong ba yêu cầu. deepseek-v4.1-flash nhanh nhất và tốn khoảng 1/60 so với gpt-6-astra; hai model DeepSeek còn viết test kỹ hơn. deepseek-v4-pro chậm nhất vì suy luận trước mỗi bước. Tổng thời gian gồm cả vài giây khởi động của chính OpenCode.

Lỗi thường gặp

Công cụ lập trình khác: Cline với API tùy chỉnh · Codex với API tùy chỉnh.

Bắt đầu sử dụng

Không thuê bao, không mức tối thiểu hàng tháng, không cần gọi cho nhân viên bán hàng. Nạp bằng USDT và tiêu đúng phần bạn dùng — 1 USDT cho bạn 2 tín dụng số dư API.

Đọc hướng dẫn nhanh 30 giây

Ngôn ngữ: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский

Giá trên trang này được điền tự động từ dữ liệu thanh toán thực tế. Điều khoản bên thứ ba được trích từ tài liệu của chính họ.