Запустите Open Interpreter на кастомном OpenAI-совместимом эндпоинте.

Updated 2026-07-30

Open Interpreter напрямую выставляет api_base. Укажите https://api.apisrouter.com/v1, добавьте id модели префикс openai/, чтобы LiteLLM говорил на chat completions, — и модель, которая пишет и запускает код на вашей машине, может быть любым id каталога под одним ключом.

Короткий ответ: api_base плюс префикс модели openai/.

Open Interpreter документирует путь кастомного эндпоинта в обоих интерфейсах. В CLI передайте --api_base с эндпоинтом и --model с префиксом openai/ на id. В Python задайте interpreter.llm.api_base, interpreter.llm.api_key и interpreter.llm.model перед вызовом chat(). Префикс — не украшение. Open Interpreter работает на LiteLLM, а LiteLLM определяет, какого провайдера-клиента использовать, по строке модели. openai/claude-sonnet-4-6 значит "говори по протоколу chat-completions OpenAI с тем, что указано в api_base, с claude-sonnet-4-6 в поле модели". Уберите префикс — и LiteLLM вместо этого выводит провайдера из голого имени, направляя id claude-* к клиенту Anthropic и игнорируя настроенный вами эндпоинт.

export OPENAI_API_KEY=sk-APIsRouter-...

interpreter \
  --api_base https://api.apisrouter.com/v1 \
  --model openai/claude-sonnet-4-6

Что Open Interpreter делает со своей моделью.

Open Interpreter (openinterpreter на GitHub, около 66K звёзд) даёт языковой модели интерпретатор кода на вашей машине: вы формулируете цель на естественном языке, модель пишет Python или shell, Open Interpreter выполняет это локально, а вывод возвращается в разговор для следующего шага. Этот цикл делает его качественно другим по сравнению с чат-клиентом. Модель производит не прозу; она производит код, который выполняется с правами вашего пользователя, и итерирует по реальным ошибкам вашей реальной системы. Отсюда следуют два вывода для маршрутизации. Во-первых, качество модели напрямую влияет на безопасность и корректность: модель, которая галлюцинирует флаги или неверно читает traceback, производит ещё один неудачный круг, а в режиме auto-run — тот, который вы не просмотрели. Во-вторых, цикл прожорлив к токенам особым образом: каждый ход пересылает заново растущий разговор, код и захваченный вывод, так что долгие сессии отладки быстро накапливают контекст. Настройка api_base переносит весь этот цикл на один эндпоинт. Поскольку поле модели передаётся как обычная строка после префикса openai/, id Claude, id GPT и id DeepSeek — взаимозаменяемые варианты в один флаг, а не отдельные настройки провайдера.

Полная настройка: Python API и профиль.

Путь через Python задаёт те же три значения на interpreter.llm и добавляет две настройки, которые LiteLLM не может определить сам для кастомного id: context_window и max_tokens. Open Interpreter использует context_window, чтобы решить, сколько истории разговора хранить перед обрезкой, так что если оставить его незаданным или по умолчанию на модели с окном 200k, обрезка произойдёт намного раньше необходимого; задавайте то, что модель реально поддерживает. Для постоянной настройки те же ключи живут в YAML-профиле под блоком llm: (откройте директорию профилей командой interpreter --profiles). Профиль держит настройки эндпоинта, модели и окна вне истории вашей shell и делает конфигурацию переносимой между машинами, при этом ключ по-прежнему поставляется через окружение.

import os
from interpreter import interpreter

interpreter.llm.api_base = "https://api.apisrouter.com/v1"
interpreter.llm.api_key = os.environ["APISROUTER_API_KEY"]
interpreter.llm.model = "openai/claude-sonnet-4-6"

# LiteLLM cannot infer these for a custom id; declare them:
interpreter.llm.context_window = 200000
interpreter.llm.max_tokens = 8192
interpreter.llm.supports_functions = True

interpreter.chat("Profile data.csv and plot the top 10 rows by revenue.")

Выбор модели, которая пишет ваш код.

Сравнение моделей здесь необычно конкретно: дайте двум моделям одну и ту же задачу и посчитайте круги до рабочего результата. Вид использования по ключу добавляет стоимость токенов на сессию, что вместе с числом кругов — и есть всё сравнение. За одним эндпоинтом каждый кандидат — это один флаг.

  • Основному циклу нужна модель, которая пишет рабочий код и хорошо читает traceback с первого раза; claude-sonnet-4-6 и gpt-5.5 — надёжная середина, и каждый неудачный круг, которого избегает лучшая модель, — это сэкономленные токены и время.
  • deepseek-v4-pro — сильный кандидат для сессий с большим объёмом кода, где важен объём; через один эндпоинт попробовать его на своих задачах — это смена одного флага --model.
  • Быстрым утилитарным сессиям (переименование файлов, разовые преобразования, конвертация форматов) не нужны рассуждения топового уровня; claude-haiku-4-5-20251001 или glm-5.2 держат их быстрыми и недорогими.
  • Режим auto-run (-y) убирает шаг проверки человеком между генерацией кода и его выполнением. Если вы вообще его используете, используйте с самой сильной моделью, которую запускаете, в песочнице или контейнере, и никогда с моделью, которую всё ещё оцениваете.

Оплата по факту · дешевле официальных цен

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
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

Сбои, специфичные именно для Open Interpreter.

Голый id модели обходит ваш эндпоинт стороной. Без префикса openai/ LiteLLM определяет провайдера по имени: id claude-* направляются к клиенту Anthropic, и результат — ошибка аутентификации или маршрутизации против хоста, который вы никогда не настраивали. Если ошибки упоминают SDK вендора, а не ваш шлюз, значит, префикс отсутствует. Предположения о контексте по умолчанию обрезают ваши сессии. Для id, который LiteLLM не распознаёт, окно контекста ничем не заполняется; Open Interpreter откатывается к консервативному поведению и обрезает историю рано. Задавайте context_window явно, потому что сессия отладки кода, теряющая свои более ранние попытки, повторяет те же самые ошибки. Растущие сессии — растущие счета. Каждый ход пересылает заново разговор плюс код плюс захваченный вывод. Сессия, вставляющая большой dataframe или длинный лог в цикл, несёт его в каждом последующем запросе. Предпочитайте, чтобы модель писала код, инспектирующий файлы, вместо вставки содержимого файлов в чат, и начинайте свежие сессии при смене задачи. Несовпадение по function-calling. Open Interpreter может использовать структурированные вызовы функций там, где они поддерживаются; флаг supports_functions существует для id, на которых автоопределение ошибается. Если блоки кода приходят некорректно сформированными на модели, которая, как вы знаете, способна на это, задайте явно True; если модель действительно не поддерживает инструменты, задайте False, чтобы включился резервный путь. Сторона выполнения — ваша. api_base переносит трафик модели; код по-прежнему выполняется локально с вашими правами. Шлюз ничего не изолирует в песочнице, так что держите auto-run в рамках контейнеров и оставляйте проверку безопасности в цикле везде остальном.

Кто направляет Open Interpreter через шлюз.

  • Разработчики, использующие Open Interpreter как ежедневный инструмент автоматизации, которым нужна генерация кода уровня Claude, разнообразие GPT и быстрые утилитарные id за одним ключом.
  • Data-специалисты, гоняющие циклы разведочного анализа, где сессия может сжечь неожиданно много контекста, а использование по ключу делает видимой стоимость на эквивалент ноутбука.
  • Инженеры, сравнивающие модели написания кода по числу кругов до рабочего результата — самому честному из доступных бенчмарков, — один флаг --model на кандидата.
  • Энтузиасты, запускающие интерпретатор по расписанию или в контейнерах, где эндпоинт через переменную окружения и один секрет бьют набор credentials по каждому вендору.
  • Разработчики без доступа к биллингу конкретного вендора. Доступ на основе пополнения без требования карты убирает зависимость от регистрации у каждого провайдера.

Проверьте эндпоинт и отладьте первую сессию.

Сначала полистайте модели шлюза; id после openai/ должен точно совпадать с обслуживаемым id, включая версионный суффикс. Сбои первой сессии следуют шаблону. Ошибки, называющие anthropic или другой SDK вендора, означают, что префикс openai/ отсутствует и LiteLLM маршрутизировал по имени. 401 означает, что ключ не виден в shell, который запустил interpreter, либо был задан в другую переменную, а не в ту, что используется; при наличии префикса работают и OPENAI_API_KEY, и явный api_key. Ошибка model-not-found от шлюза — это опечатка в id. Ошибка подключения обычно значит, что api_base потерял суффикс /v1; клиент добавляет /chat/completions к тому base, что вы указали. Как только цикл заработал, консоль APIsRouter показывает модель на запрос, счётчики токенов и расходы. Сессии interpreter — классический случай нагрузки, которая ощущается небольшой, а по счетам выходит средней, и вид использования — это то, как вы видите, какие сессии реально несли токены.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Частые вопросы

Может ли Open Interpreter запускать модели Claude или DeepSeek через один эндпоинт?

Да. С api_base, указывающим на шлюз, и префиксом openai/ на id модели LiteLLM говорит на стандартных chat completions с этим эндпоинтом и передаёт id как обычную строку. Id Claude, GPT, DeepSeek и GLM — все работают с одними и теми же двумя настройками.

Почему id модели нуждается в префиксе openai/?

Open Interpreter работает на LiteLLM, который выбирает клиента провайдера по строке модели. Префикс openai/ принудительно задаёт клиент протокола OpenAI, нацеленный на ваш api_base. Голый id claude-* вместо этого резолвится в клиент Anthropic и игнорирует ваш эндпоинт.

Какая переменная окружения хранит ключ?

При использовании префикса openai/ обычный выбор — OPENAI_API_KEY, либо задайте interpreter.llm.api_key явно в Python, либо передайте --api_key в CLI. Держите ключ вне профилей и скриптов; окружение — правильное место для него.

Нужно ли задавать context_window вручную?

Для кастомных id — да. LiteLLM не может вывести окно для модели, которую не распознаёт, а Open Interpreter обрезает историю разговора по этой цифре. Задавайте реальное окно модели (200000 для id Claude из таблицы), иначе долгие сессии теряют более ранний контекст.

Делает ли маршрутизация через шлюз auto-run (-y) безопасным?

Нет. Шлюз несёт трафик модели; сгенерированный код по-прежнему выполняется локально с вашими правами. Auto-run убирает шаг проверки, так что держите его в рамках контейнеров или песочниц независимо от того, какой эндпоинт обслуживает модель.

Сколько токенов использует сессия interpreter?

Масштабируется с числом ходов и с тем, что попадает в цикл: каждый круг пересылает заново разговор, код и захваченный вывод. Короткие утилитарные задачи скромны; долгие сессии отладки со вставленными данными быстро накапливаются. Вид использования по ключу в консоли APIsRouter показывает реальную цифру на сессию.