Chattverktyg
Chatt kan låta modellen anropa verktyg. En tur med verktyg aktiverade kör en inbyggd flervarvsloop: modellen begär ett verktyg, Libre WebUI kör det under den anropande användarens identitet och behörigheter, resultatet skickas till modellen och loopen fortsätter tills modellen svarar. Högst åtta varv per tur och åtta anrop per varv tillåts. Stopp avbryter modellanropet, pågående verktygsanrop och väntande godkännanden.
Verktygsanrop registreras som normaliserade händelser (chat.tool-call.v1, chat.tool-result.v1, chat.approval.v1) som flödar likadant över den privata WebSocket-vägen och den beständiga händelseströmmen. En uppdatering eller återanslutning spelar därför upp samma tillstånd. Den slutförda turen lagrar anropen med begränsade resultatförhandsvisningar i assistentmeddelandet.
Aktivera verktyg
Verktyg är avstängda som standard. En administratör öppnar dem under Inställningar → Användarhantering för endast administratörer eller alla användare. Varje tur väljer sedan verktyg genom skiftnyckeln i redigeraren, som öppnar en huvudbrytare och en kryssruta per inbyggt verktyg och registrerad server. Väljaren kan begränsa profilens bindningar men aldrig utöka dem. Privata inkognitochattar erbjuder inga verktyg eftersom ett anrop är en utåtriktad åtgärd som kan lämna godkännanden och revisionsposter.
En assistentprofil (persona) kan avgränsa verktygen: bundna verktygsservrar, en delmängd av inbyggda verktyg, bundna färdigheter och kunskapssamlingar begränsar vad modellen ser.
Inbyggda verktyg
Chatt innehåller tretton förstapartsverktyg. Alla är skrivskyddade utom verktygen som ändrar anteckningar och kalendrar, vilka går genom godkännandeflödet för sidoeffekter:
web_search— den administratörskonfigurerade sökmotorn som följer åtkomstläget för webbsökning.search_documents— hybridsökning i användarens uppladdade dokument och kunskapssamlingar, inklusive delade samlingar; varje passage citeras med segment och källplats.list_documents— listar dokumenten i chattens omfång med ID, typ och storlek så modellen kan välja vad som ska läsas.read_document— läser ett begränsat fönster i ett tillgängligt dokument efter ID och offset, märkt med källplats, för filer som hämtning ensam inte kan besvara.load_skill— läser in fullständiga färdighetsinstruktioner efter slug; beskrivningen innehåller manifestet över aktiverade färdigheter så de förblir latenta tills modellen behöver dem. Medföljande filer listas sist.read_skill_file— läser en medföljande fil efter slug och relativ sökväg, så ett stort referensdokument använder ingen kontext förrän det öppnas.list_notes— listar användarens egna och delade anteckningar med ID.read_note— läser en antecknings fullständiga innehåll efter ID.create_note— skapar en anteckning och kräver godkännande av sidoeffekt.update_note— ersätter anteckningens innehåll och behåller föregående tillstånd som återställbar version; kräver godkännande.list_calendar_events— listar egna och delade kalenderhändelser inom ett intervall av epoch-millisekunder.create_calendar_event— skapar en kalenderhändelse och kräver godkännande.delete_calendar_event— tar bort en kalenderhändelse efter ID och kräver godkännande.
Verktygsservrar
Administratörer registrerar externa verktygsservrar under Inställningar → Verktyg. Startmallar förifyller formuläret, inklusive ett säkert offentligt demo-API:
- OpenAPI: en JSON OpenAPI 3.x-specifikation hämtas en gång och fästs med SHA-256-digest. Varje operation blir ett verktyg;
GETklassificeras skrivskyddat och övriga som sidoeffekt tills en administratör åsidosätter per verktyg. Körningen bygger anropet från den fästa operationen—modellargument väljer aldrig destination. - MCP (strömmande HTTP): serverns verktygslista hämtas över JSON-RPC och fästs likadant.
annotations.readOnlyHintmarkerar skrivskydd. stdio-MCP stöds avsiktligt inte; externa processer körs aldrig i webbprocessen.
En ändrad inventering gäller först när en administratör uppdaterar servern, vilket flyttar den fästa versionen och bevarar åsidosättningar per verktyg. Tillgängligheten per server kan vara endast administratörer, alla användare eller behörighetsbaserad genom den gemensamma resursmodellen.
Autentiseringsuppgifter
Servrar som kräver autentisering använder uppgifter per användare, bearer-token eller namngivet huvud. Varje hemlighet krypteras med ytterligare autentiserade data som binder den till exakt användare och server, anges under Inställningar → Verktyg och delas aldrig mellan konton.
Policy för utgående trafik
Varje verktygsbegäran löser själv sin destination, nekar privata, loopback- och metadataadressrymder och fäster anslutningen vid löst adress så DNS-rebindning inte kan omdirigera. Omdirigeringar nekas. Svar storleksbegränsas och varje anrop har en strikt tidsgräns. Exakta interna värdnamn kan tillåtas med TOOLS_PRIVATE_NETWORK_ALLOWLIST; de förblir fästa och begränsade. Verktygsutdata återgår till modellen som obetrodd text.
Godkännanden
Skrivskyddade verktyg kör utan fråga. Ett verktyg med sidoeffekt pausar turen och frågar: tillåt en gång, för chatten, alltid på servern eller neka. Beslut är beständiga; "alltid" överlever omstarter och kan återkallas under Inställningar → Verktyg. En väntande begäran löper ut efter två minuter och ses som nekad. Nekanden och tidsgränser kör aldrig anropet. Varje beslut och anrop lämnar en maskerad säkerhetsrevisionshändelse.
Exempel
Slå först på skiftnyckeln i redigeraren; varje exempel nedan är ett vanligt chattmeddelande.
web_search — slå upp något
Vad ändrades i den senaste SQLite-utgåvan? Sök på webben innan du svarar.
Modellen anropar web_search med en fråga som {"query": "SQLite latest release changelog"}, anropskortet visar mottagna utdrag och svaret citerar fynden. Webbsökning måste vara konfigurerad och tillåten för kontot.
search_documents — fråga dina egna filer
Ladda upp en PDF eller lägg till dokument i en kunskapssamling och skriv:
Sök i mina dokument efter uppsägningsklausulen och citera den exakt.
Modellen anropar search_documents med {"query": "termination clause"} och får matchande passager märkta med källdokument, så svaret kan citera och ange källa.
load_skill — tillämpa en sparad färdighet
Skapa en färdighet under Inställningar → Färdigheter (exempelvis $release-notes, hur versionsinformation ska skrivas) och skriv:
Skriv ett utkast till versionsinformation för diffen med $release-notes.
Modellen ser färdigheten i manifestet, anropar load_skill {"slug": "release-notes"} för fullständiga instruktioner och följer dem. $ i redigeraren autokompletterar färdighetsslugs.
En OpenAPI-server — exempelvis ett väder-API
-
Inställningar → Verktyg → Registrera server: namn
Weather, typOpenAPI, bas-URLhttps://api.example-weather.dev, specifikations-URLhttps://api.example-weather.dev/openapi.json, autentiseringslägebearer. -
Specifikationen fästs och operationerna visas som verktyg, exempelvis
getForecast(GET, skrivskyddad) ochcreateAlert(POST, sidoeffekt). -
Varje användare sparar sin API-nyckel på serverkortet.
-
I chatten:
Hur blir vädret i Montreal i helgen?
Modellen anropar
weather__getForecast {"city": "Montreal"}och det körs direkt; skrivskyddade verktyg frågar aldrig.Varna mig om temperaturen sjunker under -20 i natt.
weather__createAlerthar en sidoeffekt, så turen pausas med valen Tillåt en gång, Tillåt för chatten, Tillåt alltid eller Neka. Inget skickas före valet.
En MCP-server — exempelvis en ärendespårare
-
Inställningar → Verktyg → Registrera server: namn
Issues, typMCP, bas-URLhttps://mcp.example-tracker.dev/mcp, autentiseringslägeheadermed huvudnamnetX-Api-Key. -
Verktygslistan fästs. Skrivskyddade verktyg som
search_issueskör fritt, övriga somcreate_issuefrågar först. -
I chatten:
Hitta öppna ärenden som nämner "database lock" och skapa ett nytt som sammanfattar mönstret.
issues__search_issueskör direkt;issues__create_issuevisar exakta argument i godkännandekortet så du kan läsa vad som lämnas in.
Miljövariabler
| Variabel | Effekt |
|---|---|
TOOLS_ACCESS_MODE | Fäst verktygsfunktionen till admins eller all-users och lås reglaget. |
TOOLS_PRIVATE_NETWORK_ALLOWLIST | Exakta värdnamn som får lösas till privata adresser, kommaseparerade. |
Gränser
- Verktygsanrop körs på WebSocket-vägen (privat sessionstransport är avsiktligt utesluten) och den beständiga genereringsvägen för sparade chattar. Äldre REST-strömningsendpoint kör inte verktygsloopen.
- Work-agenter anropar samma servrar via samma gateway: endast körningar med nätverk, servrar utan lagrade uppgifter filtreras bort redan när verktygen erbjuds, och verktyg med sidoeffekter styrs av Works godkännanden.
- Gemini- och agent-CLI-modeller får inga verktyg; Ollama-, OpenAI-kompatibla, Responses-API- och Anthropic-leverantörer får dem.
- MCP-servrar autentiserar med statiska uppgifter per användare; en server som endast stöder interaktiv OAuth kan ännu inte registreras.