Спрямуйте Continue на кастомний OpenAI-сумісний ендпоінт.
Updated 2026-07-29
Continue налаштовує моделі декларативно в config.yaml. Встановіть provider на openai, спрямуйте apiBase на https://api.apisrouter.com/v1, і кожен доданий блок моделі стає доступним для вибору в розширенні, з ролями chat, edit і apply, які можна призначити кожній моделі під одним ключем.
Коротка відповідь: блок моделі з provider openai і apiBase.
Провайдер openai у Continue приймає перевизначення apiBase — це задокументований шлях для будь-якого OpenAI-сумісного сервера. Додайте блок моделі до config.yaml з provider, встановленим на openai, apiBase, встановленим на https://api.apisrouter.com/v1, точним ID моделі і вашим ключем. Модель з'являється в селекторі моделей Continue, і кожен її запит іде до шлюзу через стандартний /v1/chat/completions. Той самий механізм охоплює скільки завгодно моделей: один блок на ID, усі поділяють той самий apiBase і ключ. Оскільки Continue трактує поле model як звичайний рядок, ID від різних постачальників — Claude поряд з GPT поряд з DeepSeek — сидять пліч-о-пліч в одному файлі конфігурації.
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
- applyЯк Continue розподіляє роботу між моделями: ролі.
Continue (continuedev на GitHub, приблизно 34 тис. зірок) — це IDE-агент для VS Code і JetBrains, і визначальна ідея його конфігурації — ролі. Кожен блок моделі несе список roles, і Continue маршрутизує кожен вид роботи до моделі, що тримає цю роль: chat для панелі розмов і роботи агента, edit для вбудованих перетворень коду, apply для злиття запропонованих змін у файли, а також autocomplete, embed і rerank для відповідних підсистем. Це важіль, який робить мультипостачальницький ендпоінт цікавим саме в Continue. Chat хоче найсильнішу модель, яку ви можете виправдати; edit і apply — коротші, більш механічні виклики, де впорається швидкий ID середнього рівня. З одним apiBase, що обслуговує кожного постачальника, цей поділ — чистий YAML: ID Claude тримає chat, швидкий ID тримає edit і apply, один ключ на всіх них. Одна чесна межа: autocomplete — це навантаження fill-in-the-middle, і роль autocomplete у Continue побудована навколо моделей, натренованих саме під цей формат завершення, а не чат. Шлюз chat-completions — правильний дім для трафіку chat, edit і apply; тримайте autocomplete на будь-якому FIM-сумісному налаштуванні, яким користуєтесь сьогодні, а не призначайте цю роль чат-моделі, очікуючи хороших підказок.
Повне налаштування: кілька моделей, розділені ролі, оголошений контекст.
Файл конфігурації живе за адресою ~/.continue/config.yaml. name кожного блоку — це назва, показана в селекторі; model — точний ID, який обслуговує шлюз. defaultCompletionOptions.contextLength оголошує контекстне вікно моделі, і Continue використовує його, щоб вирішити, скільки контексту розмови і файлів пакувати в запит, тож залишення консервативного значення за замовчуванням для моделі з довгим контекстом обрізає раніше, ніж потрібно. Можливості зазвичай визначаються автоматично, але для ID, які Continue не розпізнає, ви можете вказати їх явно: capabilities: [tool_use] каже режиму агента, що він може керувати інструментами з цією моделлю. Щодо ключів: YAML приймає буквальний apiKey, що прийнятно для локального файлу, який ніколи не покидає вашу машину. Continue також підтримує синтаксис шаблону секретів у формі ${{ secrets.APISROUTER_API_KEY }} для конфігурацій, керованих через його hub, що тримає буквальне значення поза спільними файлами. Використовуйте форму, що відповідає тому, де живе ваша конфігурація.
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]Вибір моделей для кожної ролі.
Призначення ролей — це також механізм порівняння. Тримайте edit і apply фіксованими, міняйте блок chat між двома кандидатськими ID на тиждень кожен і дозвольте погляду на використання за ключем оцінити різницю на вашому реальному навантаженні. Кожен кандидат — це три рядки YAML проти того самого ендпоінта.
- chat тягне цикл агента і довгі розмови: читання файлів, планування редагувань, відповіді на питання над реальним контекстом. Саме тут місце передовій моделі (claude-sonnet-4-6, gpt-5.5), і саме сюди йде більшість ваших токенів.
- edit обробляє перетворення виділеного коду. Виклики коротші і більш механічні, ніж chat, тож швидкий ID на кшталт claude-haiku-4-5-20251001 чи gpt-5.4-mini тримає цикл редагування щільним без погіршення результатів.
- apply зливає запропоновані зміни у файли. Це найбільш механічна з трьох ролей і найочевидніший кандидат на найдешевшу здатну модель, включно з deepseek-v4-flash.
- embed і rerank живлять пошук у кодовій базі і є окремими підсистемами з власними формами моделей; перенесення трафіку chat на шлюз не потребує їх торкатись.
Оплата за фактом · нижче офіційних цін
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Модель | Офіційна ціна | Наша ціна |
|---|---|---|
| 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 |
Специфічні для Continue режими збоїв.
apiBase без /v1. Continue дописує шляхи маршрутів на кшталт /chat/completions до base, який ви задаєте, тож https://api.apisrouter.com/v1 правильний, а голий хост — ні. Помилка у формі 404 при першому використанні майже завжди саме через це. Відступи YAML тихо переформовують конфігурацію. models — це список блоків, і неправильно відступлений apiBase прикріплюється не до того запису чи взагалі ні до чого. Коли одна модель працює, а сусідня не може автентифікуватись, порівняйте їхні відступи, перш ніж підозрювати шлюз. Перемикач застарілих completions. Провайдер openai за замовчуванням використовує /chat/completions — саме те, що обслуговує шлюз. useLegacyCompletionsEndpoint: true перенаправляє блок на застарілий маршрут /completions; якщо в блоку це встановлено, запити у формі chat перестають працювати для цієї моделі. Очікування Responses API для ID серії GPT. Деякі шляхи Continue можуть пробувати новіший протокол responses від OpenAI для певних назв моделей OpenAI. Шлюз chat-completions не обслуговує цей протокол; якщо блок серії GPT видає помилку у формі маршруту, встановіть useResponsesApi: false для цього блоку, щоб він лишався на /chat/completions. Застаріле contextLength. Continue пакує контекст відповідно до defaultCompletionOptions.contextLength, а не відповідно до того, що модель могла б прийняти. Оголошення 32k для моделі на 200k нічого видимо не ламає; воно просто тихо відкидає контекст, за який ви заплатили. Оголошуйте те, що модель справді підтримує.
Хто маршрутизує Continue через шлюз.
- Розробники, орієнтовані на IDE, які хочуть мати Claude, GPT і DeepSeek доступними для вибору всередині VS Code чи JetBrains, не підтримуючи окремий набір облікових даних для кожного постачальника.
- Команди, що розділяють ролі за профілем вартості: передовий chat, швидкі edit і apply, кожна роль тримає ID, який їй підходить, все оплачується на одній поверхні.
- Інженери, що порівнюють чат-моделі на реальній роботі. Кожен кандидат — це один блок YAML проти того самого apiBase, а не нова інтеграція провайдера.
- Тімліди, що стандартизують онбординг: один шаблон config.yaml плюс один APISROUTER_API_KEY замінює чек-лист ключів для кожного постачальника, а використання за ключем показує, скільки витрачає кожне місце.
- Розробники без доступу до білінгу певного постачальника. Доступ на основі поповнення без вимоги картки прибирає залежність від реєстрації в кожного провайдера.
Перевірте ендпоінт і налагодьте перший запит.
Перегляньте, що обслуговує шлюз, перш ніж редагувати YAML; ID, повернуті /v1/models, — це точно ті рядки, яким мають відповідати ваші поля model. Збої першого запиту йдуть за шаблоном. 401 означає, що ключ у цьому конкретному блоці неправильний, або посилання на секрет не розв'язалось; перевіряйте блок, що провалився, а не файл загалом, оскільки ключі для кожного блоку означають збої для кожного блоку. Помилка «модель не знайдено» — це помилка в написанні ID, включно з суфіксом версії. Помилка у формі маршруту для ID серії GPT вказує на перемикач responses-API, розглянутий вище. А якщо розширення взагалі не показує кастомних моделей, YAML не розпарсився; спершу перевірте структуру файлу. Щойно запити почнуть проходити, консоль APIsRouter показує модель на кожен запит, кількість токенів і витрати. Оскільки Continue розділяє роботу за ролями, погляд на використання — це також перше місце, де ви бачите співвідношення трафіку chat до edit на вашому реальному навантаженні, а це число, яке каже вам, де вибір моделі насправді має значення.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Поширені запитання
Чи може Continue використовувати моделі Claude і DeepSeek через провайдер openai?
Так. Провайдер openai зі встановленим apiBase — це задокументований шлях для будь-якого OpenAI-сумісного сервера, і Continue передає поле model як звичайний рядок. Працює будь-який ID, який обслуговує ендпоінт, включно з ID Claude і DeepSeek, один блок моделі на ID.
Чи поділяють усі мої блоки моделей один apiBase і ключ?
Кожен блок оголошує власні apiBase і apiKey, тож вони можуть поділяти значення або ні. Спрямування кількох блоків на той самий ендпоінт з тим самим ключем — це нормально, а якорі YAML дозволяють оголосити пару один раз і посилатись на неї в кожному блоці.
Які ролі мають маршрутизуватись через шлюз?
chat, edit і apply — усі вони говорять /v1/chat/completions. Autocomplete — це навантаження fill-in-the-middle, побудоване навколо моделей у форматі завершення, тож тримайте цю роль на вашому наявному FIM-налаштуванні. embed і rerank — окремі підсистеми і не потребують змін.
Чому один блок моделі працює, а інший повертає 401?
Ключі в Continue належать кожному блоку окремо, тож працюючий сусід нічого не доводить про блок, що провалюється. Перевірте значення apiKey чи посилання на секрет у блоку, що провалюється, а також перевірте його відступ: неправильно відступлений ключ прикріплюється не до того запису списку.
Що робить useLegacyCompletionsEndpoint і чи потрібен він мені?
Він перенаправляє блок моделі з /chat/completions на застарілий маршрут /completions. Для шлюзу chat-completions він вам не потрібен; залиште його невстановленим. Він існує для старіших серверів лише з completions.
Чи справді contextLength змінює поведінку?
Так. Continue пакує контекст розмови і файлів відповідно до defaultCompletionOptions.contextLength. Заниження для моделі з довгим контекстом тихо відкидає контекст; встановлюйте його на те, що модель справді підтримує.