Hop til hovedindhold

Chatværktøjer

Chat kan lade modellen kalde værktøjer. En tur med værktøjer aktiveret kører et indbygget flertrinsloop: modellen anmoder om et værktøj, Libre WebUI kører det under den kaldende brugers identitet og tilladelser, resultatet sendes til modellen, og loopet fortsætter, indtil modellen svarer. Højst otte runder pr. tur og otte kald pr. runde tillades. Stop afbryder modelkaldet, igangværende værktøjskald og ventende godkendelser.

Værktøjskald registreres som normaliserede hændelser (chat.tool-call.v1, chat.tool-result.v1, chat.approval.v1), der flyder ens over den private WebSocket-vej og den vedvarende hændelsesstrøm. En opdatering eller genforbindelse afspiller derfor samme tilstand. Den afsluttede tur gemmer kaldene med afgrænsede resultatforhåndsvisninger i assistentbeskeden.

Aktivér værktøjer

Værktøjer er deaktiveret som standard. En administrator åbner dem under Indstillinger → Brugeradministration for kun administratorer eller alle brugere. Hver tur vælger derefter værktøjer gennem skruenøglen i editoren, som åbner en hovedkontakt og et afkrydsningsfelt pr. indbygget værktøj og registreret server. Vælgeren kan begrænse profilens bindinger, aldrig udvide dem. Private inkognito-chats tilbyder ingen værktøjer, fordi et kald er en udadrettet handling, der kan efterlade godkendelser og revisionsposter.

En assistentprofil (persona) kan afgrænse værktøjerne: bundne værktøjsservere, en delmængde af indbyggede værktøjer, bundne færdigheder og videnssamlinger begrænser, hvad modellen ser.

Indbyggede værktøjer

Chat indeholder tretten førstepartsværktøjer. Alle er skrivebeskyttede bortset fra værktøjerne, der ændrer noter og kalendere, som går gennem godkendelsesflowet for sideeffekter:

  • web_search — den administratorkonfigurerede søgemaskine, som følger adgangstilstanden for websøgning.
  • search_documents — hybridsøgning i brugerens uploadede dokumenter og videnssamlinger, inklusive delte samlinger; hver passage citeres med segment og kildeplacering.
  • list_documents — viser dokumenterne i chattens omfang med ID, type og størrelse, så modellen kan vælge, hvad der skal læses.
  • read_document — læser et afgrænset vindue i et tilgængeligt dokument efter ID og offset, mærket med kildeplacering, til filer som hentning alene ikke kan besvare.
  • load_skill — indlæser komplette færdighedsinstruktioner efter slug; beskrivelsen indeholder manifestet over aktiverede færdigheder, så de forbliver dovne, til modellen behøver dem. Medfølgende filer vises til sidst.
  • read_skill_file — læser én medfølgende fil efter slug og relativ sti, så et stort referencedokument ikke bruger kontekst, før det åbnes.
  • list_notes — viser brugerens egne og delte noter med ID.
  • read_note — læser en notes fulde indhold efter ID.
  • create_note — opretter en note og kræver godkendelse af sideeffekt.
  • update_note — erstatter notens indhold og bevarer den tidligere tilstand som gendannelig version; kræver godkendelse.
  • list_calendar_events — viser egne og delte kalenderbegivenheder i et epoch-millisekundinterval.
  • create_calendar_event — opretter en kalenderbegivenhed og kræver godkendelse.
  • delete_calendar_event — sletter en kalenderbegivenhed efter ID og kræver godkendelse.

Værktøjsservere

Administratorer registrerer eksterne værktøjsservere under Indstillinger → Værktøjer. Startskabeloner forudfylder formularen, inklusive et sikkert offentligt demo-API:

  • OpenAPI: en JSON OpenAPI 3.x-specifikation hentes én gang og fastgøres med SHA-256-digest. Hver operation bliver et værktøj; GET klassificeres som skrivebeskyttet og resten som sideeffekt, indtil en administrator tilsidesætter pr. værktøj. Kørsel bygger kaldet fra den fastgjorte operation—modelargumenter vælger aldrig destinationen.
  • MCP (streambar HTTP): serverens værktøjsliste hentes over JSON-RPC og fastgøres tilsvarende. annotations.readOnlyHint markerer skrivebeskyttet. stdio-MCP understøttes bevidst ikke; eksterne processer kører aldrig i webprocessen.

En ændret oversigt gælder først, når en administrator opdaterer serveren, hvilket fremfører den fastgjorte version og bevarer tilsidesættelser pr. værktøj. Tilgængeligheden pr. server kan være kun administratorer, alle brugere eller tilladelsesbaseret gennem den fælles ressourcemodel.

Legitimationsoplysninger

Servere, der kræver godkendelse, bruger legitimationsoplysninger pr. bruger, bearer-token eller navngivet header. Hver hemmelighed krypteres med yderligere godkendte data, der binder den til præcis bruger og server, angives under Indstillinger → Værktøjer og deles aldrig mellem konti.

Politik for udgående trafik

Hver værktøjsanmodning opløser selv destinationen, afviser private, loopback- og metadataadresser og fastgør forbindelsen til den opløste adresse, så DNS-rebinding ikke kan omdirigere. Omdirigeringer afvises. Svar størrelsesbegrænses, og hvert kald har en fast tidsgrænse. Nøjagtige interne værtsnavne kan tillades med TOOLS_PRIVATE_NETWORK_ALLOWLIST; de forbliver fastgjorte og begrænsede. Værktøjsoutput vender tilbage til modellen som upålidelig tekst.

Godkendelser

Skrivebeskyttede værktøjer kører uden spørgsmål. Et værktøj med sideeffekt pauser turen og spørger: tillad én gang, for denne chat, altid på serveren eller afvis. Beslutninger er vedvarende; "altid" overlever genstarter og kan tilbagekaldes under Indstillinger → Værktøjer. En ventende anmodning udløber efter to minutter og ses som afvist. Afvisninger og tidsgrænser kører aldrig kaldet. Hver beslutning og hvert kald efterlader en maskeret sikkerhedsrevisionshændelse.

Eksempler

Slå først skruenøglen til i editoren; hvert eksempel nedenfor er en normal chatbesked.

web_search — slå noget op

Hvad ændrede sig i den seneste SQLite-udgivelse? Søg på nettet, før du svarer.

Modellen kalder web_search med en forespørgsel som {"query": "SQLite latest release changelog"}, kaldkortet viser de modtagne uddrag, og svaret citerer resultaterne. Websøgning skal være konfigureret og tilladt for kontoen.

search_documents — spørg dine egne filer

Upload en PDF, eller føj dokumenter til en videnssamling, og skriv:

Søg efter opsigelsesklausulen i mine dokumenter, og citér den nøjagtigt.

Modellen kalder search_documents med {"query": "termination clause"} og modtager matchende passager mærket med kildedokument, så svaret kan citere og angive kilden.

load_skill — anvend en gemt færdighed

Opret en færdighed under Indstillinger → Færdigheder (f.eks. $release-notes, hvordan udgivelsesnoter skal skrives), og skriv:

Skriv et udkast til udgivelsesnoter for denne diff med $release-notes.

Modellen ser færdigheden i manifestet, kalder load_skill {"slug": "release-notes"} for de fulde instruktioner og følger dem. $ i editoren autofuldfører færdighedsslugs.

En OpenAPI-server — f.eks. et vejr-API

  1. Indstillinger → Værktøjer → Registrer server: navn Weather, type OpenAPI, basis-URL https://api.example-weather.dev, specifikations-URL https://api.example-weather.dev/openapi.json, godkendelsestilstand bearer.

  2. Specifikationen fastgøres, og operationerne vises som værktøjer, f.eks. getForecast (GET, skrivebeskyttet) og createAlert (POST, sideeffekt).

  3. Hver bruger gemmer sin API-nøgle på serverkortet.

  4. I chatten:

    Hvordan bliver vejret i Montreal i weekenden?

    Modellen kalder weather__getForecast {"city": "Montreal"}, og det kører straks; skrivebeskyttede værktøjer spørger aldrig.

    Advar mig, hvis temperaturen falder under -20 i aften.

    weather__createAlert har en sideeffekt, så turen pauses med valgene Tillad én gang, Tillad for denne chat, Tillad altid eller Afvis. Intet sendes før valget.

En MCP-server — f.eks. en problemsporing

  1. Indstillinger → Værktøjer → Registrer server: navn Issues, type MCP, basis-URL https://mcp.example-tracker.dev/mcp, godkendelsestilstand header med navnet X-Api-Key.

  2. Værktøjslisten fastgøres. Skrivebeskyttede værktøjer som search_issues kører frit, mens andre som create_issue spørger først.

  3. I chatten:

    Find åbne issues, der nævner "database lock", og opret et nyt, som sammenfatter mønstret.

    issues__search_issues kører straks; issues__create_issue viser de nøjagtige argumenter i godkendelseskortet, så du kan læse indholdet før godkendelse.

Miljøvariabler

VariabelEffekt
TOOLS_ACCESS_MODEFastgør værktøjsfunktionen til admins eller all-users, og lås kontakten.
TOOLS_PRIVATE_NETWORK_ALLOWLISTNøjagtige værtsnavne, der må opløses til private adresser, kommasepareret.

Grænser

  • Værktøjskald kører på WebSocket-vejen (privat sessionstransport er bevidst udeladt) og den vedvarende genereringsvej til gemte chats. Det ældre REST-streamingendpoint kører ikke værktøjsloopet.
  • Work-agenter kalder de samme servere gennem den samme gateway: kun kørsler med netværk, servere uden gemte legitimationsoplysninger filtreres fra allerede når værktøjerne tilbydes, og værktøjer med sideeffekter styres af Works godkendelser.
  • Gemini- og agent-CLI-modeller modtager ingen værktøjer; Ollama-, OpenAI-kompatible, Responses-API- og Anthropic-udbydere gør.
  • MCP-servere godkender med statiske oplysninger pr. bruger; en server, der kun understøtter interaktiv OAuth, kan endnu ikke registreres.