Open WebUI со своим API: подключение go2llm
Open WebUI подключается к любому серверу, который реализует OpenAI-совместимый API. Для go2llm достаточно одного подключения с URL https://go2llm.tech/v1 и ключом gk_sk_… — либо через интерфейс (Settings → Admin → Connections), либо через переменные окружения OPENAI_API_BASE_URL и OPENAI_API_KEY в docker-compose.yaml. После этого в селекторе моделей появятся Claude, GPT, Gemini, DeepSeek и Qwen.
Проверено живым запросом: нет. Инструкция составлена по документации Open WebUI. Если что-то не сходится — напишите в @go2llm_support, поправим. Живым запросом у go2llm проверены только Claude Code и OpenCode. Open WebUI относится к классу «клиент со своим base URL» — по документации Open WebUI такой режим поддерживается штатно.
Источник документации: Open WebUI — OpenAI-Compatible, Environment Variable Configuration.
Дата публикации: 11 сентября 2026.
Что понадобится
- Развёрнутый Open WebUI (Docker или любой другой способ) и права администратора в нём.
- Ключ go2llm с префиксом
gk_sk_. При регистрации начисляется $1, минимальное пополнение — $1, оплата рублями через СБП или криптой. - Base URL:
https://go2llm.tech/v1. - Понимание, что каталог go2llm отдаётся открыто:
curl https://go2llm.tech/v1/models. Это важно — именно этот эндпоинт Open WebUI дёргает при проверке подключения.
Пошаговая настройка
Способ А. Через интерфейс (быстрее)
- Откройте Open WebUI в браузере под учётной записью администратора.
- Перейдите в Settings → Admin → Connections и найдите список Manage OpenAI API Connections.
- Нажмите ➕ Add Connection.
- Заполните два поля:
- URL:
https://go2llm.tech/v1 - API Key: ваш ключ
gk_sk_…
- Нажмите Save.
Open WebUI при добавлении подключения проверяет его вызовом /models со стандартным Bearer-токеном. У go2llm эндпоинт /v1/models реализован и отдаётся даже без ключа, поэтому проверка должна пройти и список моделей (сейчас их 65) подтянется автоматически.
Если вы не хотите видеть в селекторе все модели (сейчас их 65) — в настройках подключения есть поле Model IDs (Filter): впишите нужный ID и нажмите +, повторите для каждой модели, затем сохраните. Повторный ввод того же ID Open WebUI отклоняет сообщением «Model ID is already added», пробелы по краям обрезает сам.
У каждого подключения есть toggle switch — можно выключить go2llm, не удаляя настройку.
Способ Б. Через переменные окружения
Open WebUI читает конфигурацию из окружения. Релевантные переменные по документации:
| Переменная | Тип | Что делает |
|---|---|---|
ENABLE_OPENAI_API | bool, по умолчанию True | Включает OpenAI-совместимые API. При False список моделей пустеет |
OPENAI_API_BASE_URL | str, по умолчанию https://api.openai.com/v1 | Адрес одного OpenAI-совместимого эндпоинта |
OPENAI_API_KEY | str | Ключ для него |
OPENAI_API_BASE_URLS | str | Несколько адресов через точку с запятой ; |
OPENAI_API_KEYS | str | Несколько ключей через точку с запятой ; |
Все они помечены в документации Open WebUI как ConfigVar — то есть значение сохраняется в базе Open WebUI и при последующих запусках берётся оттуда, а не из окружения.
Один провайдер:
OPENAI_API_BASE_URL=https://go2llm.tech/v1
OPENAI_API_KEY=gk_sk_ВАШ_КЛЮЧ
go2llm рядом с локальной моделью — разделитель именно ;, порядок URL и ключей должен совпадать:
OPENAI_API_BASE_URLS=https://go2llm.tech/v1;http://host.docker.internal:11434/v1
OPENAI_API_KEYS=gk_sk_ВАШ_КЛЮЧ;ollama
Способ В. Полный docker-compose.yaml
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
- 'ENABLE_OPENAI_API=True'
- 'OPENAI_API_BASE_URL=https://go2llm.tech/v1'
- 'OPENAI_API_KEY=${GO2LLM_API_KEY}'
- 'WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}'
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
volumes:
open-webui: {}
Рядом положите .env:
GO2LLM_API_KEY=gk_sk_ВАШ_КЛЮЧ
WEBUI_SECRET_KEY=длинная-случайная-строка
Запуск: docker compose up -d, интерфейс на http://localhost:3000.
Проверка, что заработало
Сначала убедитесь, что ключ живой, и заодно посмотрите, что именно увидит Open WebUI при проверке подключения:
curl https://go2llm.tech/v1/models
Ожидаемый результат: HTTP 200 и JSON со списком опубликованных моделей, их модальностями и эндпоинтами. Затем полноценный запрос:
curl https://go2llm.tech/v1/chat/completions \
-H "Authorization: Bearer gk_sk_ВАШ_КЛЮЧ" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":120,"messages":[{"role":"user","content":"Ответь одним словом: работает"}]}'
Ожидаемый результат: HTTP 200, choices[0].message.content = «работает», в блоке usage — cost_usd с фактической стоимостью.
В самом Open WebUI: создайте новый чат, выберите модель claude-sonnet-5 и отправьте «Ответь одним словом: работает». Ответ должен прийти стримом. Если модели нет в селекторе — идите в Settings → Admin → Connections и проверьте, не выключен ли toggle у подключения.
Какую модель выбрать
Open WebUI — это чат-интерфейс, а не кодинг-агент: кэш здесь работает слабее, чем у агентов, и основную стоимость даёт выход. Актуальные ставки по каждой модели — на странице цен и в GET /api/pricing.
| Модель | Для какого сценария |
|---|---|
claude-sonnet-5 | Универсальный чат и длинные разборы |
claude-haiku-4-5 | Быстрые ответы для команды |
gpt-5.6-luna | Массовый чат для большого числа пользователей |
deepseek-v4-flash | Самый дешёвый вариант в каталоге |
glm-5.3-flash | Черновые ответы, суммаризация |
gemini-3.8-flash | Длинный контекст |
Полный прайс на все модели (сейчас их 65) — go2llm.tech/pricing.
Если не работает
- 401
no-key. Ключ пустой или подставился не тот. При использованииOPENAI_API_BASE_URLSпорядок ключей вOPENAI_API_KEYSдолжен точно соответствовать порядку URL. - Подключение добавлено, а моделей нет. Проверьте
ENABLE_OPENAI_API— приFalseдокументация Open WebUI прямо пишет, что список моделей пустеет. - 404
model_not_found. В Model IDs (Filter) вписан ID, которого нет в каталоге. Сверьтесь сcurl https://go2llm.tech/v1/models. - 400
unsupported_content_type. Пользователь приложил в чат картинку или PDF. Текстовые эндпоинты go2llm бинарь не принимают. Для картинок у go2llm отдельный эндпоинт/v1/images/generations, и он требует заголовокIdempotency-Key. - 402
insufficient_balance. Общий баланс закончился. Баланс не уходит ниже нуля — шлюз резервирует оценочную стоимость до вызова и списывает фактическую. - 429
rate_limit. Лимит 20 RPM на ключ. Если Open WebUI обслуживает команду, один общий ключ упирается в этот лимит быстрее всего — заведите несколько ключей и разложите их черезOPENAI_API_BASE_URLS/OPENAI_API_KEYS.
Разбор кодов — go2llm.tech/docs/errors.
FAQ
Переменные окружения перестали применяться после первого запуска — почему? Потому что OPENAI_API_BASE_URL и OPENAI_API_KEY помечены в документации Open WebUI как ConfigVar: значение уходит в базу при первом старте, дальше правится в Settings → Admin → Connections. Менять его в docker-compose.yaml после этого бесполезно.
Можно ли раздать доступ команде без раздачи ключа? Да, это основной сценарий Open WebUI: ключ go2llm знает только администратор, пользователи заходят по своим учёткам Open WebUI. На ключ при этом можно поставить квоту в долларах, список разрешённых моделей и срок действия.
Работает ли генерация картинок через go2llm в Open WebUI? У go2llm опубликован /v1/images/generations с моделями gpt-image-2, nano-banana-2, nano-banana-pro, gemini-3.1-flash-image, grok-imagine-image, и он требует обязательный заголовок Idempotency-Key (8–128 печатных ASCII). Пробрасывает ли Open WebUI этот заголовок в настройках Image Generation — мы живым запросом не проверяли и не утверждаем ни что это работает, ни что не работает. Если запрос уйдёт без Idempotency-Key, go2llm его отклонит. Надёжный вариант на сегодня — вызывать /v1/images/generations напрямую, задав заголовок самостоятельно.
Что дальше
Подключение кодинг-агентов и редакторов — в хабе go2llm.tech/docs/coding-tools. Эндпоинты, лимиты и приватность — go2llm.tech/docs.