Один 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

How to Configure Claude Code with CC Switch and Ace Data Cloud

How to Build a Server-Side Image Editing Workflow with GPT-Image-2