Przejdź do głównej zawartości

Narzędzia chatu

Włączona tura działa wielorundowo: model żąda, Libre WebUI wykonuje jako użytkownik, wynik wraca, aż do odpowiedzi — maks. 8 rund i 8 wywołań na rundę. Stop anuluje model, narzędzie i zgodę.

Zdarzenia chat.tool-call.v1, chat.tool-result.v1, chat.approval.v1 płyną przez prywatny WebSocket i trwały stream, więc odświeżenie odtwarza stan.

Włączanie​

Domyślnie wyłączone. Administrator otwiera w Settings → Zarządzanie użytkownikami → Dostęp i zasady → Dostęp do narzędzi; każda tura wybiera kluczem francuskim dokładne narzędzia i serwery. Profil może zawęzić, nie rozszerzyć. Prywatny chat nie ma narzędzi.

Przełącznik Dostęp do narzędzi zapisuje się natychmiast. Kliknij go albo ustaw fokus klawiszem Tab i przełącz klawiszem Space. Zmiana dostępu zachowuje okno Settings i pozycję przewijania.

Wbudowane​

  • web_search
  • search_documents
  • list_documents
  • read_document
  • load_skill
  • read_skill_file
  • list_notes
  • read_note
  • create_note (zgoda)
  • update_note (zgoda, rewizja)
  • list_calendar_events
  • create_calendar_event (zgoda)
  • delete_calendar_event (zgoda)

Wyszukiwanie cytuje źródła; umiejętności są lazy; operacje zmian wymagają standardowej zgody.

Serwery​

  • OpenAPI: JSON 3.x pobrany raz i przypięty SHA-256. GET odczyt, inne efekt do override. Argumenty nie wybierają celu.
  • MCP (Streamable HTTP): lista JSON-RPC przypięta. annotations.readOnlyHint oznacza odczyt. stdio celowo niewspierane.

Zmiany po refresh admina; dostęp admin/wszyscy/grant.

Poświadczenia​

Per użytkownik (Bearer/header), szyfrowane i związane z dokładnym użytkownikiem/serwerem.

Interaktywny OAuth (MCP)​

Serwer MCP może też logować każdą osobę osobno. Zarejestruj go w trybie Interaktywny OAuth: Libre WebUI czyta wyzwanie WWW-Authenticate serwera, podąża do metadanych zasobu chronionego, potem do metadanych serwera autoryzacji i rejestruje klienta dynamicznie (RFC 7591), gdy serwer autoryzacji na to pozwala. Dostawcy bez automatycznej rejestracji przyjmują identyfikator klienta (i opcjonalny sekret) podany przez administratora w formularzu; sekret jest szyfrowany razem z odkrytymi punktami końcowymi.

Każda osoba naciska Połącz na karcie serwera i trafia do dostawcy. Przepływ używa PKCE (S256) ze stanem CSRF, a weryfikator PKCE trzyma ciasteczko HttpOnly ograniczone do tego serwera. Callback wymienia kod na serwerze, zapisuje tokeny zaszyfrowane z tym samym wiązaniem użytkownik–serwer co sekret statyczny i odsyła przeglądarkę z flagą stanu — tokeny dostępu i odświeżania nigdy nie trafiają na stronę. Tokeny dostępu odświeżają się automatycznie minutę przed wygaśnięciem, raz na osobę i serwer, nawet gdy kilka wywołań narzędzi ściga się jednocześnie. Gdy odświeżenie jest niemożliwe, wywołanie narzędzia wraca z prośbą o ponowne połączenie zamiast zawodzić po cichu. Rozłącz usuwa tokeny tej osoby, zostawiając rejestrację; usunięcie serwera zapomina też odkrytą konfigurację.

Serwer, który odmawia wylistowania narzędzi bez uwierzytelnienia, i tak zostaje zarejestrowany: jego lista jest przypinana przy pierwszym udanym połączeniu (i przy każdym odświeżeniu przez administratora), więc modelowi nic nie jest oferowane, zanim nie jest znane.

Wyjście​

Rozwiązuje i przypina adres, odrzuca private/loopback/metadata, redirects, ogranicza rozmiar/timeout. TOOLS_PRIVATE_NETWORK_ALLOWLIST pozwala dokładne hosty. Wynik jest niezaufanym tekstem.

Zgody​

Odczyt bez pytania. Efekt: raz, ten chat, zawsze dla narzędzia/serwera, odmowa. "Zawsze" trwa i można cofnąć. Wygasa po dwóch minutach jako odmowa. Wszystko audytowane.

Przykłady​

web_search z {"query": "SQLite latest release changelog"}; search_documents z {"query": "termination clause"}; load_skill {"slug": "release-notes"} dla $release-notes.

OpenAPI: Weather, https://api.example-weather.dev, https://api.example-weather.dev/openapi.json, bearer, narzędzia getForecast, createAlert, wywołanie weather__getForecast {"city": "Montreal"}.

MCP: Issues, https://mcp.example-tracker.dev/mcp, header, X-Api-Key; search_issues odczyt, create_issue efekt; issues__search_issues, issues__create_issue.

web_search — wyszukiwanie​

Model wyszukuje informacje w sieci.

search_documents — własne pliki​

Model przeszukuje dokumenty użytkownika.

load_skill — zapisana umiejętność​

Wpisanie $ otwiera umiejętności.

Serwer OpenAPI​

Wywołanie weather__createAlert wymaga zgody.

Exa MCP — wyszukiwanie i pobieranie z sieci​

W Settings → Narzędzia → Zacznij od szablonu wybierz Exa, aby wstępnie wypełnić rejestrację MCP wartością:

https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa

Adres wybiera web_search_exa i web_fetch_exa przez parametr wyboru narzędzi Exa. Szablon nie używa uwierzytelniania i domyślnie ogranicza dostęp do administratorów. Sprawdź formularz i wybierz Zapisz, aby połączyć się i przypiąć listę narzędzi. Otwarcie lub anulowanie szablonu nie kontaktuje się z Exa. Zapytania i żądane adresy trafiają do Exa dopiero przy uruchomieniu tych narzędzi.

Serwer MCP​

Serwer MCP udostępnia przypięte narzędzia.

Zmienne​

| TOOLS_ACCESS_MODE | admins/all-users | | TOOLS_PRIVATE_NETWORK_ALLOWLIST | dokładne hosty |

Granice​

WebSocket i trwały path, nie legacy REST. Wzmianki @model w kanałach uruchamiają tę samą pętlę na katalogu wspominającego członka, z jedną różnicą: nikt nie może odpowiedzieć na pytanie o zgodę, więc narzędzie ze skutkiem ubocznym bez stałej zgody jest od razu odrzucane zamiast czekać; narzędzia tylko do odczytu działają normalnie. Agenci Work używają tych samych serwerów przez tę samą bramę: tylko uruchomienia z siecią, serwery bez poświadczeń odfiltrowane przy ofercie, narzędzia ze skutkami ubocznymi pod zatwierdzeniami Work. Gemini/agent CLI bez tools; Ollama/OpenAI/Responses/Anthropic z tools. Interaktywny OAuth działa tylko dla MCP — serwer OpenAPI nadal używa statycznego poświadczenia per użytkownik. Przepływ to authorization-code z PKCE; device-code i client-credentials nie są oferowane, a serwera autoryzacji bez publikowanych metadanych (albo bez punktu rejestracji i bez identyfikatora klienta od administratora) nie da się połączyć. Odkryte punkty OAuth muszą być https; zwykłe http jest akceptowane tylko dla loopback, dla dostawcy uruchomionego na tej samej maszynie podczas developmentu. Adres przekierowania pochodzi z BASE_URL (albo pierwszego CORS_ORIGIN), więc ta wartość musi być adresem, który faktycznie osiąga przeglądarka, i musi być zarejestrowana u dostawców przypinających adresy przekierowania.