Ga naar hoofdinhoud

Plugins

Libre WebUI gebruikt plugins om externe providers en modelcapaciteiten naast lokale Ollama te verbinden.

Plugintypen

TypeDoel
Chat/completionTekst/chat van provider-API's
EmbeddingsVectoren voor documenten/geheugen
AfbeeldingModellen en ComfyUI-backends
Tekst-naar-spraakSpraaksynthese
Spraak-naar-tekstTranscriptie
AudioGeluid
VideoAsynchrone video

Plugins kunnen statische modelmappen en live ontdekking bieden.

Ingebouwde providerfamilies

OpenAI, Anthropic, Google Gemini, Groq, Kimi Code van Moonshot AI, Mistral, OpenRouter, Hugging Face, GitHub Models, MLX LM, ComfyUI en ElevenLabs. Catalogi veranderen vaak; de live UI is leidend.

Eigendom en autorisatie

Definities zijn gedeelde instantieconfiguratie. Iedere /api/plugins-route vereist authenticatie; alleen beheerders uploaden, installeren, wijzigen of verwijderen. Activering is per gebruiker, opgeslagen in SQLite en onafhankelijk.

Bij upgrade wordt .status.json eenmaal gekopieerd naar bestaande accounts, alleen voor exacte compiled trust anchors. Custom/shadow blijft in quarantaine. Latere accounts starten zonder actieve plugins.

Ingebouwde definities zijn alleen vertrouwd bij dezelfde genormaliseerde hash. Schrijfbare definities worden in SQLite goedgekeurd per pad en hash. Admin-install/update/import registreert; directe wijziging maakt ongeldig. Vervanging wist alle activeringen en vereist heractivering. Oude customdefinities moeten opnieuw worden geïmporteerd vóór catalogus, ontdekking, referentie of uitvoering.

Alleen beheerders bewaren 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, plus config.endpoint_variable, config.models_endpoint_variable, config.voice_clone_endpoint_variable.

Anderen bewaren generatie-instellingen. Oude routing van niet-beheerders wordt genegeerd en bij volledige reset verwijderd, zodat promotie die niet herleeft.

Referenties

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=...

Per gebruiker is beter in gedeelde omgevingen; omgeving voor single-user/demo/beheerd.

Een omgevingssleutel is alleen fallback voor ongewijzigde ingebouwde routing/auth. Geïmporteerd, schrijfbaar met ingebouwd ID of customroute vereist sleutel van hetzelfde account. Libre vergelijkt rootendpoint, auth, capaciteit, selectors en standaardwaarden. De compiled hash blijft leidend, ook bij gedeelde directories.

Dit geldt voor ontdekking, Chat, Work, beschikbaarheid en catalogi en voorkomt dat custombestemmingen beheerdersgeheimen ontvangen.

Opgeslagen referenties worden gebonden aan bron, hash, contract, endpoints/selectors en routing. Wijziging maakt ze onbruikbaar tot opnieuw opgeslagen. Legacy zonder binding alleen op exacte ingebouwde route, en wordt bij eerste gebruik gebonden.

OpenAI-compatibele providers

Een plugin kan volledig URL, omgevingssleutel, chatgedrag, embedding, ontdekking en fallbackmap definiëren. Zonder ontdekking wordt de map gebruikt. Geïmporteerde JSON configureert bestaande OpenAI Chat Completions, OpenAI Responses, Anthropic Messages of Gemini-protocollen. Een ander protocol vereist backendadapter.

OpenAI-afbeeldingen

Ingebouwd endpoint https://api.openai.com/v1/images/generations; huidig model gpt-image-2. gpt-image-1.5, gpt-image-1, gpt-image-1-mini blijven voor compatibiliteit.

Gebruikt dezelfde effectieve OpenAI-sleutel als Chat. Apart image_endpoint voorkomt dat custom Chat beelden krijgt. Leeg erft.

Keuze bevat provider. Bij gelijk ID gaat alleen naar gekozen. Base64 wordt opgeslagen in galerij. Directe aanvragen vereisen pluginId en model; n is JSON-integer 1–10, geen string/fractie.

Chat Completions en Responses

chat_completions of responses in Instellingen → Plugins.

Volgorde:

  1. Volledige endpoint.
  2. base_url + api_path.
  3. Legacy endpoint.

Waarde gelijk aan manifest is standaard, niet override. Standaardpad /chat/completions of /responses. base_url is root zoals https://api.example.com/v1; api_path is relatief. Bekende suffix bepaalt api_mode.

{
"endpoint": "https://api.example.com/v1/chat/completions",
"api_mode": "responses",
"base_url": "https://api.example.com/v1",
"api_path": "/responses"
}

Responses gebruikt input, max_output_tokens, afgevlakte functies, store: false en versleutelde reasoning. Uitvoer wordt genormaliseerd. Replay alleen bij volledig geordend array maximaal 64 Items/90 KB, exact en niet veld-afgekapt. Unieke IDs/typen en geldige structuren vóór tools. Te grote Chat gebruikt zichtbaar verleden; raw function-call wordt verwijderd. Work zonder exact replay wordt vóór effect geweigerd.

SQLite Chat versleutelt providerstate; Work bewaart verborgen context. Hashscope bindt provider, model, modus, endpoint en credentialfingerprint. Wijziging/rotatie valt terug. Work valideert vóór elke ronde.

Toolstate moet ook in volledige 100 KB-wrapper passen. Onderbroken batch herstelt ontbrekende resultaten met exacte call ID en outcome-unknown-waarschuwing. Onvolledige Responses is geen succes; incomplete_details.reason blijft.

Ontdekking leidt /models af: https://api.example.com/v1/responseshttps://api.example.com/v1/models. Anders model_map. Resultaten per gebruiker. Na activering, refresh, sleutel/route/reset; generatie opslaan niet.

Automatisch bij ontbrekend of ouder dan PLUGIN_MODEL_DISCOVERY_TTL_MS, met backoff en deadline. Eind-URL wordt vóór referentie/Authorization gevalideerd. Geen redirects. Configureer Chat, Work, modellen, afbeelding, embedding, transcriptie, spraak, kloon, audio en video direct.

HTTP versleutelt geen sleutels/prompts/resultaten. Gebruik alleen vertrouwd. Aanvragen komen uit backend; in container http://ai-gateway:8080/v1, en localhost is container. Geen ongeauthenticeerde single-usermodus.

Capaciteitsspecifieke endpoints

Chatoverride is geïsoleerd. Plugins kunnen image_endpoint, embedding_endpoint, stt_endpoint, tts_endpoint, config.endpoint_variable en config.voice_clone_endpoint_variable bieden. Leeg gebruikt manifest; algemeen endpoint vervangt capaciteit nooit.

GitHub Models erft models.github.ai/inference/chat/completions; Hugging Face gebruikt hf-inference/models/{model}.

Endpointoverrides

endpoint is compleet, zoals https://provider.example/v1/chat/completions, niet alleen https://provider.example. api_url is legacyalias; endpoint wint. Alleen absolute HTTP(S), geen redirects. In container gebruik servicenaam of host.docker.internal.

Modelontdekking

Providerverbindingen in Instellingen → Plugins toont toestand/catalogus en houdt configuratie dicht tot Configureren.

Modellen vernieuwen ontdekt en herlaadt plugin/Chat. Catalogus is read-only uit gebruikers-IDs en modelmappen; labels zijn geen healthcheck.

Bij activering worden effectief endpoint/referentie gebruikt. Customroute vereist gebruikerssleutel; omgeving alleen trusted. Afleiding:

  • eindigt /models: onveranderd;
  • bekende /chat/completions, /completions, /responses, /embeddings, /messages: /models;
  • anders toevoegen.

models_endpoint wint, zelfde beleid, geen redirects. Opslaan/resetten van endpoint, api_url, models_endpoint, base_url, api_path, api_mode wist/ververst.

Verwacht data-array. Resultaten per gebruiker, JSON niet herschreven. Normale mislukking houdt vorige; routewijziging wist eerst en gebruikt model_map.

Exacte providerkeuze in Chat

IDs zijn niet globaal; Ollama en plugins kunnen example-model hebben. Chat bewaart:

  • providerType: "ollama";
  • providerType: "plugin" met providerId.

Gecodeerde waarden zijn alleen selectiesleutel; aanvraag stuurt raw ID. Duplicaten blijven apart. Expliciete provider faalt veilig wanneer weg, zonder homoniem te kiezen.

Legacyrecords kunnen providerType/providerId leeg of null hebben en tonen "provider niet vastgelegd". Nieuwe selectie fixeert. Persona's houden persona:<id> en nieuwe zijn Ollama-backed.

Instellingen en overerving

Panelen zijn standaard dicht. Admin beheert definitie/routing; anderen activeren, bewaren sleutel/generatie, zonder installatie/export/verwijdering/route.

Verbinding eerst, sampling onder Geavanceerde parameters. Geërfd is leeg veld met hint, niet opgeslagen.

Opslaan stuurt alleen wijzigingen. Niet-gevoelig leeg verwijdert override; gemaskeerd leeg verandert niet. Standaard herstellen verwijdert toegestane overrides. Fout houdt waarden.

Plugins in Work

Actieve completion/chat worden gebruikt wanneer plugin actief, model in catalogus/map en referentie beschikbaar. Type/ID staat in taak/run, dus naam kaapt niet. Work past OpenAI/Anthropic/Gemini tools aan; model moet tools ondersteunen, geen fallback.

Remote run kan meerdere oproepen doen en systeem, gesprek, tools en resultaten met bestanden/commando's sturen. Beoordeel prijzen, behoud en training.

Embeddings

Libre herkent nomic-embed-text, bge, e5, gte; zonder ontdekking is nomic-embed-text lokale kandidaat.

Ontwikkeling

Beschrijf echte capaciteit, houd maps klein en gebruik betrouwbare discovery.

  1. Definitie.
  2. Referentievelden.
  3. Discovery.
  4. Mapping chat/embedding/image/TTS/STT.
  5. Test ontbrekende/foute sleutel en providerfout.

Gerelateerde documenten