Один API-ключ вместо десятка подписок: подключаем Open WebUI к 60+ моделям

Разработчики, которые пробуют несколько LLM параллельно — GPT, Claude, Gemini, Grok, DeepSeek — быстро упираются в неудобство: каждая модель живёт за своим SDK, своим ключом и своим биллингом. Open WebUI решает часть проблемы на уровне интерфейса (единый чат для команды, RBAC, база знаний), но модели всё равно нужно куда-то подключить. Ace Data Cloud закрывает вторую половину: один OpenAI-совместимый endpoint и один токен для доступа к десяткам моделей сразу.

Что такое Open WebUI и зачем ему прокси-эндпоинт

Open WebUI (бывший Ollama WebUI) — open-source клиент для команд: многопользовательский доступ с ролями, база знаний с RAG, параллельное сравнение моделей и расширение через Pipelines. Разворачивается полностью на своей инфраструктуре. Он изначально поддерживает произвольные OpenAI-совместимые эндпоинты — этим и пользуемся: указываем базовый URL Ace Data Cloud вместо api.openai.com и получаем доступ к Claude, GPT, Gemini, Grok, DeepSeek, Kimi, GLM и другим моделям без отдельной интеграции для каждой.

Как это работает

Сначала получаем API-токен в консоли Ace Data Cloud — после регистрации доступна бесплатная квота, которой хватает, чтобы проверить работоспособность интеграции без первого пополнения счёта.

Open WebUI конфигурируется через переменные окружения и разворачивается одной командой Docker:

docker run -d \
  --name open-webui \
  -p 3000:8080 \
  -e WEBUI_SECRET_KEY=$(openssl rand -base64 32) \
  -e OPENAI_API_BASE_URL=https://api.acedata.cloud/v1 \
  -e OPENAI_API_KEY={token} \
  -v open-webui:/app/backend/data \
  ghcr.io/open-webui/open-webui:main
  • OPENAI_API_BASE_URL — точка входа Ace Data Cloud, обязательно с суффиксом /v1
  • OPENAI_API_KEY — ваш токен из консоли
  • WEBUI_SECRET_KEY — ключ шифрования сессии, генерируется автоматически
  • -v open-webui:/app/backend/data — том для истории диалогов и пользователей, без него данные пропадут при перезапуске контейнера

Важный нюанс — правило пути для базового URL. Ошибка здесь — самая частая причина 404:

  • https://api.acedata.cloud/v1 → запрос идёт на /v1/chat/completions — корректно
  • https://api.acedata.cloud/openai → запрос идёт на /openai/chat/completions — тоже работает
  • https://api.acedata.cloud/openai/v1 → 404, потому что у /openai нет вложенного /v1

После первого запуска открываем http://ваш-сервер:3000 — первый зарегистрированный аккаунт автоматически становится администратором. Дальше идём в Admin Panel → Settings → Connections и нажимаем «Verify Connection». В Settings → Models можно отфильтровать и закрепить часто используемые модели.

Если не хочется пересобирать контейнер ради смены ключа, соединение можно добавить и через интерфейс: Admin Settings → Connections → ➕ → указать URL (https://api.acedata.cloud/v1) и API Key. Open WebUI сам вызовет /models и подтянет список доступных моделей.

Проверенные модели

Через GET /v1/models и POST /v1/chat/completions Ace Data Cloud подтверждённо отдаёт следующие семейства:

  • GPT: gpt-5, gpt-5-mini, gpt-4o — флагман, экономичная версия, классика с мультимодальностью
  • Claude: claude-opus-4-8, claude-sonnet-4-6 — флагман и сбалансированная модель Anthropic
  • Gemini: gemini-3.1-pro, gemini-3-flash-preview — мультимодальность и скорость от Google
  • Grok: grok-4 — модель xAI, подключена напрямую
  • DeepSeek: deepseek-v3 — высокое соотношение цена/качество
  • Kimi: kimi-k3 —длинный контекст и рассуждения

Полный список актуальных моделей смотрите в документации сервисов Ace Data Cloud.

Проверка интеграции напрямую через curl

Если непонятно, где проблема — в Open WebUI или в сети, — проще всего сначала дернуть endpoint напрямую:

curl -X POST 'https://api.acedata.cloud/v1/chat/completions' \
  -H 'Authorization: Bearer {token}' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gpt-5",
    "messages": [{"role": "user", "content": "ping"}]
  }'

Аналогичный запрос на Python:

import requests

resp = requests.post(
    "https://api.acedata.cloud/v1/chat/completions",
    headers={
        "Authorization": "Bearer {token}",
        "Content-Type": "application/json",
    },
    json={
        "model": "claude-sonnet-4-6",
        "messages": [{"role": "user", "content": "ping"}],
    },
)
print(resp.status_code, resp.json())

Ответ в формате стандартного chat.completion означает, что токен и endpoint работают исправно. Ошибка HTTP 403 used_up означает, что токен валиден, но баланс исчерпан — пополнить его можно в консоли приложений.

База знаний и многопользовательский режим

RAG в Open WebUI по умолчанию хранит векторы в ChromaDB, а в качестве embedding-модели можно указать text-embedding-3-large через Ace Data Cloud. Сам исходный документ остаётся на вашем сервере — модели отправляются только релевантные фрагменты. В Admin Panel → Users управляются роли (Pending / User / Admin); разумно выставить роль по умолчанию в pending, чтобы новые регистрации проверялись вручную и не расходовали баланс без контроля. При работе через nginx как reverse proxy стоит добавить proxy_buffering off; и client_max_body_size 100M;.

Типичные проблемы

Connection error / 404 — почти всегда значит, что OPENAI_API_BASE_URL указан как .../openai/v1 либо без /v1 вообще. Правильное значение — https://api.acedata.cloud/v1.

Чат не отвечает после загрузки документов — в настройках RAG нужно явно указать embedding-модель text-embedding-3-large с провайдером OpenAI.

Данные пропадают после перезапуска контейнера — забыт том -v open-webui:/app/backend/data при первом запуске.

Итог

Для команды, которая хочет сравнивать модели вживую и не собирать интеграцию для каждого провайдера отдельно, связка Open WebUI + единый endpoint снимает большую часть инфраструктурной рутины: один токен, один URL, десятки моделей одновременно. Подробности по всем сервисам и актуальные лимиты — на платформе Ace Data Cloud.

Comments

Popular posts from this blog

Artistic QR Code API Integration Guidance

A Small Tip for Using AI Agents: Don’t Ask for the Plan Too Soon