Trỏ Continue vào một endpoint tương thích OpenAI tùy chỉnh.
Updated 2026-07-29
Continue cấu hình model theo kiểu khai báo trong config.yaml. Đặt provider thành openai, trỏ apiBase vào https://api.apisrouter.com/v1, và mỗi khối model bạn thêm sẽ chọn được trong extension, với role chat, edit, và apply gán được theo từng model dưới một key.
Câu trả lời nhanh: một khối model với provider openai và apiBase.
Provider openai của Continue chấp nhận ghi đè apiBase, đây là đường dẫn có tài liệu cho bất kỳ server tương thích OpenAI nào. Thêm một khối model vào config.yaml với provider đặt là openai, apiBase đặt là https://api.apisrouter.com/v1, model id chính xác, và key của bạn. Model xuất hiện trong bộ chọn model của Continue, và mọi request nó gửi đi tới gateway qua /v1/chat/completions chuẩn. Cùng cơ chế này bao phủ bao nhiêu model tùy bạn: một khối cho mỗi id, tất cả dùng chung apiBase và key. Vì Continue coi field model là một chuỗi văn bản thuần, các id từ nhiều vendor khác nhau, Claude cạnh GPT cạnh DeepSeek, nằm cạnh nhau trong cùng một file config.
models:
- name: Claude Sonnet 4.6
provider: openai
model: claude-sonnet-4-6
apiBase: https://api.apisrouter.com/v1
apiKey: sk-APIsRouter-...
roles:
- chat
- edit
- applyCách Continue gán việc cho model: role.
Continue (continuedev trên GitHub, khoảng 34K sao) là một agent IDE cho VS Code và JetBrains, và ý tưởng cấu hình đặc trưng của nó là role. Mỗi khối model mang một danh sách roles, và Continue định tuyến từng loại việc tới model giữ role đó: chat cho panel hội thoại và việc agent, edit cho biến đổi code inline, apply cho việc gộp thay đổi đề xuất vào file, cộng thêm autocomplete, embed, và rerank cho các hệ thống con tương ứng. Đây là đòn bẩy khiến một endpoint đa vendor trở nên thú vị đặc biệt trong Continue. Chat muốn model mạnh nhất bạn có thể chấp nhận; edit và apply là các lệnh gọi ngắn hơn, máy móc hơn, nơi một id tầm trung nhanh làm tốt việc. Với một apiBase phục vụ mọi vendor, sự phân chia đó chỉ là YAML thuần: một id Claude giữ chat, một id nhanh giữ edit và apply, một key cho tất cả. Một ranh giới trung thực: autocomplete là khối lượng công việc fill-in-the-middle, và role autocomplete của Continue được xây quanh model huấn luyện cho định dạng hoàn thiện đó chứ không phải chat. Một gateway chat-completions là chỗ đúng cho traffic chat, edit, và apply; giữ autocomplete trên bất kỳ cấu hình FIM nào bạn đang dùng thay vì gán role đó cho một model chat và mong đợi gợi ý tốt.
Cài đặt đầy đủ: nhiều model, chia role, khai báo context.
File config nằm ở ~/.continue/config.yaml. Tên của mỗi khối là nhãn hiển thị trong bộ chọn; model là id chính xác gateway phục vụ. defaultCompletionOptions.contextLength khai báo context window của model, và Continue dùng nó để quyết định gói bao nhiêu context hội thoại và file vào một request, nên để mặc định thận trọng trên một model context dài sẽ cắt bớt sớm hơn cần thiết. Capability thường được tự nhận diện, nhưng với các id Continue không nhận ra bạn có thể khai báo tường minh: capabilities: [tool_use] báo cho agent mode biết nó có thể điều khiển tool với model đó. Về key: YAML chấp nhận một apiKey dạng chuỗi thuần, ổn cho một file local không bao giờ rời khỏi máy bạn. Continue cũng hỗ trợ cú pháp template secrets dạng ${{ secrets.APISROUTER_API_KEY }} cho các config quản lý qua hub của nó, giữ giá trị thuần khỏi các file chia sẻ. Dùng dạng nào khớp với nơi config của bạn sống.
models:
- name: Claude Sonnet 4.6
provider: openai
model: claude-sonnet-4-6
apiBase: https://api.apisrouter.com/v1
apiKey: ${{ secrets.APISROUTER_API_KEY }}
roles: [chat, edit]
capabilities: [tool_use]
defaultCompletionOptions:
contextLength: 200000
- name: Claude Haiku 4.5
provider: openai
model: claude-haiku-4-5-20251001
apiBase: https://api.apisrouter.com/v1
apiKey: ${{ secrets.APISROUTER_API_KEY }}
roles: [edit, apply]
- name: GPT-5.5
provider: openai
model: gpt-5.5
apiBase: https://api.apisrouter.com/v1
apiKey: ${{ secrets.APISROUTER_API_KEY }}
roles: [chat]Chọn model theo từng role.
Gán role cũng là cơ chế so sánh. Giữ nguyên edit và apply, đổi khối chat giữa hai id ứng viên mỗi tuần một cái, và để usage theo từng key định giá sự khác biệt trên khối lượng công việc thực của bạn. Mỗi ứng viên chỉ là ba dòng YAML với cùng một endpoint.
- chat gánh vòng lặp agent và các hội thoại dài: đọc file, lập kế hoạch chỉnh sửa, trả lời câu hỏi trên context thực. Một model frontier (claude-sonnet-4-6, gpt-5.5) thuộc vị trí này, và phần lớn token của bạn đi vào đây.
- edit xử lý biến đổi trên đoạn code bôi đen. Lệnh gọi ngắn và máy móc hơn chat, nên một id nhanh như claude-haiku-4-5-20251001 hoặc gpt-5.4-mini giữ vòng lặp edit gọn mà không làm giảm chất lượng kết quả.
- apply gộp thay đổi đề xuất vào file. Đây là role máy móc nhất trong ba role và là ứng viên rõ ràng nhất cho model rẻ nhất còn đủ năng lực, deepseek-v4-flash nằm trong số đó.
- embed và rerank cấp năng lượng cho việc truy xuất codebase và là các hệ thống con riêng biệt với hình dạng model riêng; chuyển traffic chat sang một gateway không đòi hỏi động vào chúng.
Trả theo mức sử dụng · thấp hơn giá chính thức
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Mô hình | Giá chính thức | Giá của chúng tôi |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| GPT-5.4 mini | $0.75 / $4.50 per M | $0.60 / $3.60 per M |
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
Các lỗi thường gặp riêng của Continue.
apiBase thiếu /v1. Continue tự thêm các route path như /chat/completions vào base bạn cung cấp, nên https://api.apisrouter.com/v1 là đúng còn host trần thì không. Một lỗi kiểu 404 ngay lần dùng đầu tiên gần như luôn là do điều này. Thụt lề YAML âm thầm làm sai lệch config. models là một danh sách khối, và một apiBase thụt lề sai sẽ gắn vào entry sai hoặc không gắn vào đâu cả. Khi một model hoạt động còn model bên cạnh không xác thực được, hãy so sánh thụt lề của chúng trước khi nghi ngờ gateway. Toggle completions kiểu cũ. Provider openai mặc định dùng /chat/completions, đúng là điều gateway phục vụ. useLegacyCompletionsEndpoint: true chuyển hướng một khối sang route /completions cũ; nếu một khối đã đặt nó, các request dạng chat ngừng hoạt động với model đó. Kỳ vọng Responses API trên id dòng GPT. Một số đường dẫn của Continue có thể thử giao thức responses mới hơn của OpenAI cho một số tên model OpenAI nhất định. Một gateway chat-completions không phục vụ giao thức đó; nếu một khối GPT báo lỗi kiểu route sai, đặt useResponsesApi: false trên khối đó để nó ở lại /chat/completions. contextLength cũ. Continue gói context theo defaultCompletionOptions.contextLength, không theo những gì model có thể nhận. Khai báo 32k trên một model 200k không gây lỗi rõ ràng; nó chỉ âm thầm bỏ bớt context bạn đã trả tiền. Khai báo đúng những gì model thực sự hỗ trợ.
Ai định tuyến Continue qua một gateway.
- Lập trình viên ưu tiên IDE muốn Claude, GPT, và DeepSeek chọn được trong VS Code hoặc JetBrains mà không cần duy trì một bộ credential riêng cho từng vendor.
- Đội nhóm chia role theo hồ sơ chi phí: chat frontier, edit và apply nhanh, mỗi role giữ id phù hợp, tất cả thanh toán trên một bề mặt.
- Kỹ sư so sánh model chat trên công việc thực. Mỗi ứng viên là một khối YAML với cùng apiBase, không phải một tích hợp provider mới.
- Trưởng nhóm chuẩn hóa onboarding: một mẫu config.yaml cộng một APISROUTER_API_KEY thay thế danh sách key riêng từng vendor, và usage theo từng key cho thấy mỗi chỗ ngồi tiêu bao nhiêu.
- Lập trình viên không có quyền truy cập thanh toán của một vendor nào đó. Truy cập dựa trên nạp tiền không yêu cầu thẻ loại bỏ sự phụ thuộc đăng ký theo từng provider.
Xác minh endpoint và debug request đầu tiên.
Liệt kê những gì gateway phục vụ trước khi chỉnh YAML; các id trả về bởi /v1/models chính xác là chuỗi mà field model của bạn phải khớp. Lỗi ở request đầu tiên theo một mẫu hình. Một lỗi 401 nghĩa là key trong khối cụ thể đó sai, hoặc một tham chiếu secrets chưa được phân giải; kiểm tra khối bị lỗi thay vì cả file nói chung, vì key theo từng khối nghĩa là lỗi cũng theo từng khối. Một lỗi model-not-found là lỗi gõ sai id, kể cả hậu tố phiên bản. Một lỗi kiểu route sai trên id dòng GPT chỉ về toggle responses-API nói ở trên. Và nếu extension hoàn toàn không hiện model tùy chỉnh nào, YAML chưa parse được; kiểm tra cấu trúc file trước. Khi request đã chạy, console APIsRouter hiển thị model theo từng request, số token, và chi phí. Vì Continue chia việc theo role, view usage cũng là nơi đầu tiên bạn thấy tỷ lệ traffic chat so với edit trên khối lượng công việc thực của mình, con số cho biết lựa chọn model thực sự quan trọng ở đâu.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Câu hỏi thường gặp
Continue có thể dùng model Claude và DeepSeek qua provider openai không?
Có. Provider openai với apiBase đã đặt là đường dẫn có tài liệu cho bất kỳ server tương thích OpenAI nào, và Continue chuyển tiếp field model như một chuỗi thuần. Bất kỳ id nào endpoint phục vụ đều hoạt động, kể cả id Claude và DeepSeek, mỗi id một khối model.
Mọi khối model của tôi có dùng chung một apiBase và key không?
Mỗi khối tự khai báo apiBase và apiKey riêng, nên chúng có thể dùng chung giá trị hoặc không. Trỏ nhiều khối vào cùng endpoint với cùng key là bình thường, và YAML anchor cho phép bạn khai báo cặp đó một lần rồi tham chiếu theo từng khối.
Role nào nên định tuyến qua gateway?
chat, edit, và apply, tất cả nói /v1/chat/completions. Autocomplete là khối lượng công việc fill-in-the-middle được xây quanh model dạng completion, nên giữ role đó trên cấu hình FIM hiện có của bạn. embed và rerank là hệ thống con riêng và không cần thay đổi gì.
Vì sao một khối model hoạt động còn khối khác trả về 401?
Key trong Continue theo từng khối, nên một khối bên cạnh hoạt động không chứng minh được gì về khối bị lỗi. Kiểm tra giá trị apiKey hoặc tham chiếu secrets của khối bị lỗi, và kiểm tra thụt lề của nó: một key thụt lề sai sẽ gắn vào entry danh sách khác.
useLegacyCompletionsEndpoint làm gì và tôi có cần nó không?
Nó chuyển hướng một khối model từ /chat/completions sang route /completions cũ. Với một gateway chat-completions bạn không muốn nó; để không đặt. Nó tồn tại cho các server chỉ hỗ trợ completion cũ hơn.
contextLength có thực sự thay đổi hành vi không?
Có. Continue gói context hội thoại và file theo defaultCompletionOptions.contextLength. Khai báo thấp hơn thực tế trên một model context dài sẽ âm thầm bỏ bớt context; đặt đúng những gì model thực sự hỗ trợ.