Плагины
Libre WebUI использует плагины для внешних поставщиков и возможностей моделей рядом с локальной Ollama.
Типы
Chat/completion, embedding, изображения, TTS, STT, audio и video. Плагины могут иметь статические карты и live discovery.
Встроенные семейства
OpenAI, Anthropic, Google Gemini, Groq, Kimi Code от Moonshot AI, Mistral, OpenRouter, Hugging Face, GitHub Models, MLX LM, ComfyUI, ElevenLabs. Текущий UI — источник актуального каталога.
Владение и авторизация
Определения — общая конфигурация. Все /api/plugins требуют аутентификации; только admin загружает, устанавливает, меняет и удаляет. Активация на пользователя, сохраняется в SQLite независимо.
При обновлении .status.json один раз копируется существующим аккаунтам только для точных compiled trust anchors. Custom/shadow остаются в карантине. Новые аккаунты начинают без активных плагинов.
Встроенное определение доверено только при совпадении нормализованного hash. Записываемое утверждается в SQLite по пути/hash. Admin install/update/import записывает утверждение; прямое изменение аннулирует. Замена очищает активации и требует повторной. Старые custom нужно импортировать заново до каталога, discovery, credentials и выполнения.
Только admin сохраняет routing:
endpoint, base_url, api_path, models_endpoint, api_url, image_endpoint, embedding_endpoint, stt_endpoint, tts_endpoint, voice_clone_endpoint, api_mode, model, model_id, а также config.endpoint_variable, config.models_endpoint_variable, config.voice_clone_endpoint_variable.
Остальные сохраняют генерацию. Старый routing не-admin игнорируется и удаляется reset, чтобы не ожить после повышения.
Учётные данные
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GROQ_API_KEY=gsk_...
GEMINI_API_KEY=...
MISTRAL_API_KEY=...
OPENROUTER_API_KEY=sk-or-...
KIMI_API_KEY=...
GITHUB_API_KEY=github_pat_...
ELEVENLABS_API_KEY=...
На пользователя предпочтительнее в общей среде; окружение — single-user/demo/managed.
Ключ окружения — fallback только для неизменённого встроенного routing/auth. Imported, writable с встроенным ID или custom route требуют ключ того же аккаунта. Libre сравнивает root endpoint, auth, capabilities, selectors и defaults. Compiled hash остаётся главным.
Это действует для discovery, Chat, Work, availability и catalogs, защищая секреты admin от custom destinations.
Сохранённые credentials связаны с source, hash, contract, endpoints/selectors и routing. Изменение отменяет их до нового сохранения. Legacy без binding принимается только на точной встроенной route и связывается при первом использовании.
OpenAI-совместимые поставщики
Плагин задаёт полный URL, переменную ключа, Chat, embedding, discovery и fallback map. Без discovery используется map. JSON поддерживает уже совместимые OpenAI Chat Completions, OpenAI Responses, Anthropic Messages или Gemini. Иной протокол требует backend adapter.
Изображения OpenAI
Endpoint https://api.openai.com/v1/images/generations; текущая gpt-image-2, а gpt-image-1.5, gpt-image-1, gpt-image-1-mini — совместимость.
Использует тот же эффективный ключ Chat. Отдельный image_endpoint не отправляет изображения в custom Chat; пустой наследует.
Выбор включает provider. Равный ID идёт только выбранному. Base64 сохраняется в галерею. Прямой запрос требует pluginId и model; n — JSON integer 1–10, не строка/дробь.
Chat Completions и Responses
chat_completions или responses в Настройки → Плагины.
- Полный
endpoint. base_url+api_path.- Legacy
endpoint.
Равное manifest значение — default, не override. Путь /chat/completions или /responses; root как https://api.example.com/v1, относительный path; известный suffix задаёт api_mode.
{
"endpoint": "https://api.example.com/v1/chat/completions",
"api_mode": "responses",
"base_url": "https://api.example.com/v1",
"api_path": "/responses"
}
Responses использует input, max_output_tokens, flattened functions, store: false и зашифрованный reasoning. Replay только при полном массиве максимум 64 Items/90 KB, без усечения. Требуются уникальные ID/types и валидные структуры. Большой Chat использует видимую историю; raw function-call удаляется. Work без точного replay отклоняется до эффекта.
SQLite Chat шифрует provider state; Work хранит скрытый context. Hash scope связывает provider, model, mode, endpoint и credential fingerprint. Смена/rotation даёт fallback. Work проверяет перед каждым round.
Tool state должен поместиться в полный wrapper 100 KB. Прерванный batch восстанавливает пропущенные results с call ID и outcome-unknown. Неполный Responses не считается успехом; incomplete_details.reason показывается.
Discovery выводит /models: https://api.example.com/v1/responses → https://api.example.com/v1/models; иначе model_map. Результаты на пользователя. Запускается при активации, refresh, смене key/route/reset; сохранение генерации не вызывает сеть.
Автоматически при отсутствии или старше PLUGIN_MODEL_DISCOVERY_TTL_MS, с backoff/deadline. Конечный URL проверяется до credentials/Authorization. Redirects не следуются. Настраивайте Chat, Work, models, image, embedding, transcription, speech, clone, audio, video напрямую.
HTTP не шифрует keys/prompts/results; только доверенная сеть. Запросы из backend; в container используйте http://ai-gateway:8080/v1, localhost — container. Нет неаутентифицированного single-user.
Endpoint возможностей
Chat override изолирован. Возможны image_endpoint, embedding_endpoint, stt_endpoint, tts_endpoint, config.endpoint_variable, config.voice_clone_endpoint_variable. Пустой использует manifest; общий endpoint не заменяет capability.
GitHub Models наследует models.github.ai/inference/chat/completions; Hugging Face использует hf-inference/models/{model}.
Переопределение endpoint
endpoint полный, например https://provider.example/v1/chat/completions, не только https://provider.example. api_url legacy alias; endpoint выигрывает. Только абсолютный HTTP(S), без redirects. В container используйте service name или host.docker.internal.
Обнаружение моделей
Подключения поставщиков в Настройки → Плагины показывают состояние/каталог, конфигурация закрыта до Настроить.
Обновить модели выполняет discovery и перезагружает plugin/Chat. Catalog read-only из user IDs и maps; labels не healthcheck.
При активации используются effective endpoint/credentials. Custom route требует user key; environment только trusted. Вывод:
/modelsбез изменений;/chat/completions,/completions,/responses,/embeddings,/messagesзаменяются/models;- иначе добавляется.
models_endpoint выигрывает, без redirects. Save/reset endpoint, api_url, models_endpoint, base_url, api_path, api_mode очищает и обновляет.
Ожидается array data. Результаты на пользователя, JSON не переписывается. Обычная ошибка сохраняет прошлое; route change сначала очищает и использует model_map.
Точный выбор поставщика в Chat
ID не глобальны: Ollama и плагины могут иметь example-model. Chat сохраняет:
providerType: "ollama";providerType: "plugin"иproviderId.
Encoded values только ключ селектора; запрос отправляет raw ID. Дубли раздельны. Явный provider безопасно отказывает, не выбирая одноимённый.
Legacy может иметь пустые providerType/providerId или null, продолжает name-only и показывает «provider не записан». Новый выбор закрепляет. Персоны сохраняют persona:<id>, новые — Ollama-backed.
Настройки и наследование
Панели закрыты. Admin управляет definition/routing; остальные активируют, сохраняют key/generation без install/export/delete/route.
Connection сначала, sampling в Расширенные параметры. Унаследованное — пустое поле с подсказкой, не сохраняется.
Save отправляет только изменения. Пустое nonsensitive удаляет override; пустое masked не меняет. Восстановить defaults удаляет разрешённые overrides.
Плагины в Work
Активные completion/chat используются, когда plugin active, model в catalog/map и credential доступен. Type/ID в task/run, имя не перехватывает. Work адаптирует OpenAI/Anthropic/Gemini tools; модель должна поддерживать tools, без fallback.
Remote run может сделать много calls и отправить system prompt, conversation, tools и results с files/commands. Оцените pricing, retention, training.
Embedding
Libre распознаёт nomic-embed-text, bge, e5, gte; без discovery nomic-embed-text — локальный кандидат.
Разработка
Описывайте реальные capabilities, держите maps небольшими, используйте надёжный discovery.
- Definition.
- Credential fields.
- Discovery.
- Mapping chat/embedding/image/TTS/STT.
- Тест отсутствующего/неверного key и provider error.