Свои модели в Factory Droid: как подключить Claude и GPT со своим API-ключом
Один settings.json дал Droid 1.0.0 модели Claude Sonnet 5.5, GPT-6.1 Terra и MiniMax M3.1 Flash на одном ключе. Ниже файл, provider для каждой модели и четыре ошибки, на которые мы наткнулись.
На этой странице
- Коротко
- Какой provider выбрать?
- Наш settings.json
- Как выбрать свою модель в Droid?
- Три модели на одном баге
- Нужен ли аккаунт или план Factory?
- Какие ошибки встретятся и что их исправляет?
- FAQ
- Где файл настроек Droid в Windows?
- Почему моя модель не появляется в /model?
- Умеют ли свои модели читать изображения?
- Можно ли задать reasoning effort для своей модели?
- Работают ли свои модели в приложении Droid для десктопа?
- Проверенные источники
Добавьте каждую модель в customModels файла ~/.factory/settings.json с полями model, baseUrl, apiKey и provider: anthropic для Claude с чистым хостом, openai для GPT и generic-chat-completion-api для всего остального. На Droid 1.0.0 Claude Sonnet 5.5, GPT-6.1 Terra и MiniMax M3.1 Flash исправили один и тот же баг за 33,7, 77,4 и 30,7 секунды.
Все три прогона шли через OmniaKey на одном ключе — так мы получили доступ к Claude Sonnet 5.5, GPT-6.1 Terra и MiniMax M3.1 Flash. Каждой модели досталась одна и та же сломанная функция median(), и каждая её починила.
Коротко
- Куда писать.
customModelsв~/.factory/settings.json(документация Factory по настройкам, проверена 30 октября 2026), с полямиmodel,baseUrl,apiKeyиprovider. - Какой provider.
anthropicдля Claude,openaiдля моделей GPT,generic-chat-completion-apiдля всего остального, что говорит на Chat Completions. - Куда ставить
/v1.anthropicполучает чистый хост, потому что Droid сам добавляет/v1/messages;openaiиgeneric-chat-completion-apiполучают URL, оканчивающийся на/v1. - ID для
droid exec.custom:, отображаемое имя с дефисами вместо пробелов, затем позиция с нуля:custom:Claude-Sonnet-5.5-[OmniaKey]-0. - Что показали прогоны. Все три исправили баг; 30,7 с у Flash, 33,7 с у Claude, 77,4 с у GPT-6.1 Terra.
Какой provider выбрать?
Выбирайте provider по API, на котором говорит ваш эндпоинт, а не по названию модели.
anthropicотправляет запросы в Anthropic Messages API. Подходит для Claude; базовый URL Anthropic —https://api.anthropic.com.openaiотправляет запросы в OpenAI Responses API. Подходит для моделей GPT; базовый URL OpenAI —https://api.openai.com/v1.generic-chat-completion-apiотправляет запросы в OpenAI Chat Completions. Подходит для большинства других моделей, шлюзов и локальных серверов — с URL/v1самого провайдера.
Factory указывает generic-chat-completion-api для OpenRouter, Fireworks, Together AI, Ollama, vLLM и большинства open-source провайдеров и советует этот вариант, пока вы не обращаетесь к официальному API OpenAI или Anthropic (документация Factory по BYOK, проверена 30 октября 2026).
Шлюз, который тоже понимает Messages API или Responses API, может использовать anthropic или openai. Наши записи для Claude и GPT-6.1 Terra работали так через OmniaKey, и обе запустились; OmniaKey отдаёт модели GPT на POST /v1/responses (документация OmniaKey о совместимости с OpenAI, проверена 30 октября 2026).
Есть и четвёртое значение — bedrock-converse, для моделей на Converse API в AWS Bedrock. Factory предупреждает, что полностью протестированы и прогнаны через бенчмарки только модели Anthropic и OpenAI на их официальных API, а модели меньше 30 миллиардов параметров заметно хуже справляются с агентным программированием (документация Factory по BYOK, проверена 30 октября 2026).
Наш settings.json
Droid создаёт ~/.factory/settings.json при первом запуске, поэтому добавьте customModels в уже существующий файл (документация Factory по настройкам, проверена 30 октября 2026). Наш выглядит так:
{
"customModels": [
{
"model": "claude-sonnet-5-5",
"displayName": "Claude Sonnet 5.5 [OmniaKey]",
"baseUrl": "https://api.omniakey.com",
"apiKey": "${OMNIAKEY_API_KEY}",
"provider": "anthropic",
"maxOutputTokens": 16000
},
{
"model": "gpt-6.1-terra",
"displayName": "GPT-6.1 Terra [OmniaKey]",
"baseUrl": "https://api.omniakey.com/v1",
"apiKey": "${OMNIAKEY_API_KEY}",
"provider": "openai",
"maxOutputTokens": 16000
},
{
"model": "minimax-m3.1-flash",
"displayName": "MiniMax M3.1 Flash [OmniaKey]",
"baseUrl": "https://api.omniakey.com/v1",
"apiKey": "${OMNIAKEY_API_KEY}",
"provider": "generic-chat-completion-api",
"maxOutputTokens": 16000
}
]
}
model— это id, который уходит в API; скопируйте его из списка моделей провайдера.displayName— ваша метка: она видна в/modelи образует idcustom:.baseUrl— чистый хост дляanthropicи адрес с/v1на конце для двух других.apiKey: "${OMNIAKEY_API_KEY}"читает ключ из переменной окружения, поэтому в файле его нет (документация Factory по BYOK, проверена 30 октября 2026).providerзадаёт API; опечатка здесь даёт ошибку «Invalid provider» ниже.maxOutputTokens: 16000ограничивает длину каждого ответа.
Один ключ и два базовых URL покрывают все три модели: чистый хост OmniaKey для Claude и хост /v1 для двух других. Если вы уже прошли настройку OmniaKey для кодовых агентов, тот же ключ работает и здесь.
Factory пишет, что ключи остаются локально и не загружаются на серверы Factory (документация Factory по BYOK, проверена 30 октября 2026). Старые руководства кладут модели в ~/.factory/config.json. Документация Factory по BYOK по-прежнему утверждает, что Droid копирует их в settings.json при старте. В pull request #76 в репозитории Factory на GitHub сказано, что изменение кода, слитое 15 октября 2026, эту копию убрало, так что новые модели сразу пишите в settings.json.
Как выбрать свою модель в Droid?
В приложении откройте /model и посмотрите раздел Custom Models; в командной строке передайте id custom: в droid exec.
Документация Factory говорит, что сохранённые модели показываются там с их displayName, а добавить модель можно ещё в /settings > Custom models или /model > Manage custom models (проверена 30 октября 2026).
ID для droid exec — это custom:, затем отображаемое имя с дефисами вместо пробелов, дефис и позиция модели в customModels с нуля (документация Factory по droid exec, проверена 30 октября 2026). У нас получились custom:Claude-Sonnet-5.5-[OmniaKey]-0, custom:GPT-6.1-Terra-[OmniaKey]-1 и custom:MiniMax-M3.1-Flash-[OmniaKey]-2.
Индекс идёт по порядку массива, поэтому вставка модели выше сдвигает все id под ней; скопируйте id заново после правки файла.
-r / --reasoning-effort в droid exec не действует для своих моделей (документация Factory по droid exec, проверена 30 октября 2026). Задайте reasoningEffort в самой записи.
Три модели на одном баге
Два файла, одна команда, один прогон на модель. stats.py:
def median(values):
"""Return the median of a non-empty list of numbers."""
ordered = sorted(values)
mid = len(ordered) // 2
return ordered[mid]
test_stats.py:
from stats import median
assert median([3, 1, 2]) == 2
assert median([4, 1, 3, 2]) == 2.5
assert median([5]) == 5
assert median([1.5, 2.5]) == 2.0
print("all tests passed")
Команда, где между прогонами меняется только значение --model:
droid exec --auto medium -o json --model "custom:Claude-Sonnet-5.5-[OmniaKey]-0" "python3 test_stats.py fails. Fix the bug in stats.py without changing the tests, run python3 test_stats.py again, and tell me in one sentence what you changed."
| Модель | Время | Шаги | Токены вывода |
|---|---|---|---|
| Claude Sonnet 5.5 | 33,7 с | 3 | 702 |
| GPT-6.1 Terra | 77,4 с | 4 | 451 |
| MiniMax M3.1 Flash | 30,7 с | 4 | 525 |
Это собственные цифры Droid (duration_ms, num_turns, output_tokens). Flash финишировал быстрее всех за 30,7 с, Claude сделал меньше всех шагов, а GPT-6.1 Terra работал дольше всех — 77,4 с. Первый токен Droid отдал через 8,7 с у Claude, 17,8 с у Terra и 7,0 с у Flash. Все три исправили баг, не тронув test_stats.py, и тесты напечатали all tests passed.
Изменение Claude:
- return ordered[mid]
+ if len(ordered) % 2:
+ return ordered[mid]
+ return (ordered[mid - 1] + ordered[mid]) / 2
GPT-6.1 Terra добавил ту же ветку над старой строкой возврата, а MiniMax M3.1 Flash написал её через % 2 == 1. Все три ответа описывали одно и то же исправление: усреднить два средних значения, когда длина списка чётная. Обзор MiniMax M3.1 Flash разбирает эту модель подробнее.
В JSON-результате Droid каждый раз печаталось ещё и factory_credits, хотя мы ни разу не входили в аккаунт: 31 534 для Claude Sonnet 5.5, 4 830 для GPT-6.1 Terra и 835 для MiniMax M3.1 Flash. Документация Factory не объясняет, что измеряет это число и как оно связано с лимитом BYOK (проверена 30 октября 2026).
Нужен ли аккаунт или план Factory?
В наших прогонах droid exec с моделью custom: обходился без аккаунта Factory. Собственные модели Factory и интерактивное приложение его требовали.
Droid CLI 1.0.0 вышел 29 октября 2026 (changelog Factory, проверен 30 октября 2026). В чистой домашней папке без входа в Factory каждый вызов droid exec с моделью custom: шёл на нашем собственном ключе. Та же команда без --model сразу останавливалась с «Authentication failed. Please log in using /login or set a valid FACTORY_API_KEY environment variable.» («Не удалось пройти аутентификацию. Войдите через /login или задайте действующую переменную окружения FACTORY_API_KEY.»). Запись changelog Factory v0.236.0 (8 октября 2026) описывает возобновление сессий: «Droid exec now resumes a session on your own model credentials without a Factory sign-in.» («Droid exec теперь продолжает сессию на ваших собственных учётных данных модели, без входа в Factory.»)
Запуск droid без аргументов в той же папке останавливался на «Please login with your Factory account to continue.» («Войдите в свой аккаунт Factory, чтобы продолжить.»). Без входа мы не смогли попробовать свои модели в интерактивном приложении и в приложении для десктопа, а ввод изображений, Bedrock, apiKeyHelper, reasoningEffort, настройки рассуждений, Windows, сессии длиннее одной задачи и старый файл config.json мы не проверяли.
Индивидуальные планы Factory стоят $20 (Pro), $100 (Plus) и $200 (Max) в месяц; на странице цен есть ещё Teams за $60 в месяц за команду плюс $40 за место, а бесплатного индивидуального плана нет (документация и страница цен Factory, проверены 30 октября 2026).
Документация по индивидуальным планам говорит: «BYOK is free up to an allowance on all Individual plans. After that, usage is charged according to your specific plan.» («BYOK бесплатен до определённого лимита на всех индивидуальных планах. Дальше использование оплачивается по вашему плану.») Каков размер этого лимита и как выглядит оплата после него, Factory не сообщает.
Личные свои модели работают в CLI и в приложении для десктопа и не появляются в облачных веб- и мобильном приложениях Factory (документация Factory по BYOK, проверена 30 октября 2026).
Какие ошибки встретятся и что их исправляет?
Каждая возникала из-за одного неверного значения в настройке, которая в остальном работала, на Droid 1.0.0.
-
anthropicс/v1в базовом URL. Через 0,9 с Droid вывел «Requested model was not found on the API provider» («Запрошенная модель не найдена у провайдера API»), а в логе было404наInvalid URL (POST /v1/v1/messages). Droid сам добавляет/v1/messages, поэтому наш/v1его удваивал. Решение: чистый хост,https://api.anthropic.comилиhttps://api.omniakey.com. -
openaiс чистым хостом. Через 1,4 с Droid вывел404и страницу nginx «404 Not Found»; Responses API живёт под/v1. Решение:https://api.openai.com/v1илиhttps://api.omniakey.com/v1. -
ID модели с точками,
claude-sonnet-5.5, вместоclaude-sonnet-5-5. Эндпоинт ответил503с кодомmodel_not_foundи сообщением «No available channel for model claude-sonnet-5.5» («Нет доступного канала для модели claude-sonnet-5.5»). В логе Droid каждая неудача помечалась как «overloaded», и он сделал 10 попыток за 259,7 секунды (около 4 минут 20 секунд), прежде чем выйти с этим сообщением. Формулировка от шлюза, повторные попытки от Droid. Решение: скопировать точный id из списка моделей провайдера. -
OMNIAKEY_API_KEYпустая в оболочке, из которой запустили Droid. Через 2,8 с Droid получил401с «Invalid token» («Недействительный токен»). Решение: экспортировать ключ в той оболочке, откуда вы запускаетеdroid, и начать новую сессию.
В списке решения проблем у Factory есть ещё два пункта. «Invalid provider» значит, что значение написано с ошибкой или с другой заглавной буквой, и должно быть ровно anthropic, openai, generic-chat-completion-api или bedrock-converse. Если модели нет в списке выбора, документация советует проверить синтаксис JSON в ~/.factory/settings.json и наличие обязательных полей в каждой записи (проверена 30 октября 2026).
FAQ
Где файл настроек Droid в Windows?
%USERPROFILE%\.factory\settings.json, тот же файл, что ~/.factory/settings.json в macOS и Linux (документация Factory по настройкам, проверена 30 октября 2026). customModels пишите туда.
Почему моя модель не появляется в /model?
Проверьте сначала синтаксис JSON в ~/.factory/settings.json, затем поля model, baseUrl и provider. Droid замечает сохранённые изменения через отслеживание файла (документация Factory по BYOK, проверена 30 октября 2026). В одном отчёте на Desktop 0.184.0 с CLI 0.227.0 свои модели на миг появлялись в десктопном списке выбора и исчезали, хотя droid exec --help по-прежнему перечислял все 14; сейчас эта проблема закрыта (Factory-AI issue #40, проверена 30 октября 2026).
Умеют ли свои модели читать изображения?
У anthropic и openai изображения включены по умолчанию, у generic-chat-completion-api выключены: там noImageSupport по умолчанию равен true (документация Factory по BYOK, проверена 30 октября 2026). Поставьте noImageSupport: false в универсальной записи, чтобы их разрешить. Согласно одному сообщению, изображения всё равно вырезались на CLI v0.205.1 с этим значением (Factory-AI issue #24, проверена 30 октября 2026).
Можно ли задать reasoning effort для своей модели?
-r / --reasoning-effort в droid exec не действует для своих моделей. Задайте reasoningEffort в записи: значение задаёт усилие по умолчанию для модели, которую Droid не знает, и добавляет off, low, medium и high в список выбора (документация Factory по BYOK, проверена 30 октября 2026).
Работают ли свои модели в приложении Droid для десктопа?
Да: личные свои модели доступны в CLI и в приложении для десктопа и не попадают в облачные веб- и мобильное приложения. Редакторы моделей в CLI и в десктопном приложении сохраняют всё в ~/.factory/settings.json (документация Factory по BYOK, проверена 30 октября 2026).
Проверенные источники
- Документация Factory по BYOK, проверена 30 октября 2026
- Документация Factory по настройкам, проверена 30 октября 2026
- Документация Factory по droid exec, проверена 30 октября 2026
- Release notes Factory, проверены 30 октября 2026
- Индивидуальные планы Factory, проверены 30 октября 2026
- Цены Factory, проверены 30 октября 2026
- Factory-AI issue #40: свои модели исчезают из десктопного списка, проверена 30 октября 2026
- Factory-AI issue #24: изображения вырезаются, проверена 30 октября 2026
- Factory-AI pull request #76: миграция config.json, проверена 30 октября 2026
Собственная документация OmniaKey, проверена 30 октября 2026: обзор API и API, совместимый с OpenAI.
Модели в этой статье
Похожие статьи
Как использовать API Claude и GPT в DeepSeek Harness
Один пользовательский провайдер по протоколу OpenAI запускает Claude Opus 5.5, Claude Sonnet 5.5 и GPT-6.1 в DeepSeek Harness, если у каждой модели есть уровни рассуждений и лимит вывода 128K. Встроенный провайдер DeepSeek отправляет настройку thinking, которую Claude отвергает.
Claude Code с OmniaKey
Направьте Claude Code на эндпоинт OmniaKey с нативным Anthropic API — две переменные окружения, модели Claude без молчаливой подмены, оплата за токены без месячной подписки.
Лучшая модель для Claude Code
Начинайте повседневную работу с Sonnet 5.5 за 2 доллара за миллион входных токенов, отдавайте задачи на несколько файлов Opus 5.5 за 4 доллара, держите Fable 5.1 для самых трудных и долгих сессий, а быстрые правки и субагентов оставляйте Haiku 5.5.
Недавние статьи
- Codex: генерация изображений через свой провайдер и imagegen
- Gemini 4 Carbon: дата выхода, цена и доступ по API
- GPT Image 2.5 API: генерация и редактирование изображений на Python
- Kling 3.0 API: генерация видео по тексту, код запроса и реальные клипы
- Обзор MiniMax M3.1 Flash: бенчмарки, скорость и сравнение с M3