Czym są AI Skills & Tools

Jak AI agents używają pakietowych możliwości — od function calls do MCP servers. Praktyczny przewodnik dla deweloperów tworzących z wykorzystaniem LLMs.

7 min czytaniaZaktualizowano: kwiecień 2026

🔧 Co to jest Skill?

W kontekście agentów AI, skill (zwane także tool or function) jest opakowaną, wielokrotnego użytku zdolnością, którą LLM może wywołać, aby wchodzić w interakcje ze światem poza swoim oknem kontekstowym. Skills wypełniają lukę między rozumieniem języka a działaniem w świecie rzeczywistym.

Każdy skill ma cztery komponenty:

  • Name — unikalny identyfikator, którego model używa do odwołania się do skilla (np., web_search)
  • Description — tekst w języku naturalnym wyjaśniający, co robi skill i kiedy go używać; LLM czyta to, aby zdecydować, kiedy wywołać skill
  • Schemat wejścia — strukturalna definicja argumentów (JSON Schema); model wypełnia je w oparciu o zadanie
  • Implementation — rzeczywisty kod, który jest uruchamiany: wywołanie API, zapytanie do bazy danych, polecenie shell lub inna operacja

Przykład: A get_weather skill ma opis "Pobiera aktualną pogodę dla miasta", akceptuje { "city": "string" } jako wejście i wywołuje API pogodowe. LLM nigdy nie widzi klucza API ani wywołania HTTP — otrzymuje tylko wynik zwrócony jako tekst.

⚙️ Jak działa wywoływanie narzędzi

Gdy agent ma dostęp do skills, LLM nie wywołuje ich bezpośrednio — requests wywołanie poprzez wygenerowanie strukturalnego outputu. Runtime (twój kod aplikacji) wykonuje faktyczne wywołanie i zwraca wynik. Oto pełny cykl:

  1. Rejestracja narzędzia — Twój kod wysyła modelowi listę dostępnych skills z ich opisami i schematami
  2. Rozumowanie modelu — LLM czyta zadanie i dostępne narzędzia, decyduje, które narzędzie wywołać i z jakimi argumentami
  3. Żądanie wywołania narzędzia — Model wypisuje strukturalną wiadomość "tool call" (np., { "tool": "web_search", "args": { "query": "current Gemini models" } })
  4. Execution — Twój runtime wywołuje faktyczną funkcję, API lub usługę
  5. Wstrzyknięcie wyniku — Wynik jest dodawany z powrotem do kontekstu rozmowy
  6. Kontynuowane rozumowanie — Model czyta wynik i albo wywołuje kolejne narzędzie, zadaje pytanie uzupełniające, albo generuje ostateczną odpowiedź

Ta pętla może powtarzać się wiele razy w jednym obrocie. Złożone zadanie agentyczne może wywołać 10–20 narzędzi po kolei zanim wygeneruje ostateczną odpowiedź.

📊 Skills vs Plugins vs MCP Servers

Terminologia szybko ewoluowała. Oto, jak koncepcje historycznie się odnoszą:

EraNameJak to działałoStatus
2023ChatGPT PluginsRozszerzenia instalowane przez użytkownika z OpenAPI spec; ChatGPT wywoływał je przez HTTPPrzestarzałe (zastąpione przez GPTs + tools)
2023OpenAI Function CallingAPI-level JSON Schema definitions; model zwraca strukturalne wywołanie funkcji, twój kod je wykonujeAktywne — przemianowane na "tool use"
2023–Tool Use / SkillsTak samo jak function calling; Anthropic ukuł termin "tool use", inni używają "skills" lub "functions"Aktywne — obecny standard
2024–MCP ServersStandardowy protokół (Anthropic, Dec 2024) do pakowania i dystrybucji serwerów narzędzi; dowolny klient MCP może połączyć się z dowolnym MCP serverAktywne — rozwijający się ekosystem

Kluczowa różnica: Tradycyjne użycie narzędzi jest definiowane inline w twoim kodzie aplikacji. MCP servers to oddzielne procesy, które udostępniają narzędzia przez standardowy protokół — czyniąc je wielokrotnego użytku dla różnych klientów AI (Claude Desktop, Cursor, VS Code, custom agents). Czytaj więcej: Co to jest MCP.

🗂️ Kategorie narzędzi i poziomy ryzyka

Nie wszystkie narzędzia niosą takie samo ryzyko. Grupowanie według poziomu ryzyka pomaga zdefiniowaćprzestrzeń działańi gdzie dodać punkty human-in-the-loop:

CategoryExamplesRiskRecommendation
Read-onlyweb_search, read_file, get_weather, list_dirLowZezwól na autonomiczne wykonanie; loguj wszystkie wywołania
Write (local)write_file, create_dir, edit_codeMediumOgranicz do katalogu roboczego w sandboxie
Network / Externalsend_email, post_to_slack, call_apiŚrednie–WysokieZatwierdzenie HITL dla nieodwracalnych wysyłek
OS / Shellrun_command, execute_script, install_packageHighOgraniczyć do środowiska kontenerowego; wymagane HITL
Destructivedelete_file, drop_table, revoke_accessCriticalZawsze wymagaj wyraźnego potwierdzenia człowieka

🏗️ Anatomia dobrego Skilla

Najważniejsza decyzja projektowa dla skilla to jego description. LLM czyta opisy, aby zdecydować, które narzędzie wywołać — źle napisany opis prowadzi do błędnego wyboru narzędzia, przegapionych wywołań lub niejednoznacznych argumentów.

Co czyni opis skutecznym

  • Bądź precyzyjny, kiedy go używać — "Użyj tego narzędzia, gdy użytkownik pyta o dane w czasie rzeczywistym lub bieżące wydarzenia" jest lepsze niż "Wyszukuje w sieci"
  • Określ, czego NIE robi — "Nie zwraca danych historycznych starszych niż 30 dni"
  • Opisz format wyjścia — "Zwraca tablicę JSON wyników wyszukiwania z polami title, url i snippet"
  • Utrzymaj poniżej 200 słów — opisy dłuższe niż ~200 tokenów mogą przeciążyć uwagę modelu, gdy zarejestrowanych jest wiele narzędzi

Zasady projektowania schematu

  • Wymagane vs opcjonalne — Oznacz pola jako wymagane tylko jeśli naprawdę konieczne; pola opcjonalne z domyślnymi wartościami zmniejszają błędy modelu
  • Używaj enumów dla ograniczonych wartości — "format": {"enum": ["json", "markdown", "text"]} zapobiega wartościom wytworzonym z halucynacji
  • Preferuj idempotentne narzędzia — Narzędzia, które można bezpiecznie ponowić (odczyty, zapytania), są bezpieczniejsze niż jednorazowe akcje (wysyłki, usunięcia)
  • Zwracaj dane strukturalne — Odpowiedzi w JSON są łatwiejsze dla modelu do wnioskowania niż niestrukturalne bloki tekstu

💡 Przykłady z rzeczywistego świata

Nazwa skillaCo robiKluczowe argumentyRisk
web_searchZapytaj silnik wyszukiwania i zwróć najlepsze wynikiquery: string, num_results?: numberLow
read_fileOdczytaj plik z katalogu roboczegopath: string, offset?: number, limit?: numberLow
write_fileUtwórz lub nadpisz plikpath: string, content: stringMedium
run_testsUruchom testy projektu i zwróć wynikifilter?: stringMedium
browser_screenshotPrzejdź do URL i zwróć zrzut ekranuurl: stringMedium
send_emailWyślij email do jednego lub więcej odbiorcówto: string[], subject: string, body: stringWysokie — zawsze HITL
run_shellWykonaj dowolne polecenie shellcommand: string, cwd?: stringWysokie — wymagany sandbox

✅ Dobre praktyki

Minimalne uprawnienia

Przyznaj agentowi tylko te narzędzia, których potrzebuje do swojego konkretnego zadania. Agent odpowiadający na FAQ nie potrzebuje write_file or send_email. Im mniejsza przestrzeń działań, tym mniejszy promień szkód, jeśli agent zostanie zmanipulowany. Zobacz:Nadmierna autonomia agenta.

Audytuj wszystkie wywołania narzędzi

Loguj każde wywołanie narzędzia z jego argumentami i wynikiem. Umożliwia to debugowanie, przypisywanie kosztów i wykrywanie anomalnego zachowania (np. agent czytający ~/.ssh/ gdy powinien ma mieć dostęp tylko do katalogu projektu). Platformy AgentOps takie jak LangSmith ułatwiają to.

Człowiek w pętli dla działań nieodwracalnych

Każde działanie, które jest trudne lub niemożliwe do cofnięcia — wysyłanie wiadomości, usuwanie danych, dokonywanie zakupów — powinno wymagać wyraźnego potwierdzenia człowieka przed wykonaniem. Wbuduj punkty HITL w runtime agenta, a nie tylko w prompt. Promptów można nadpisać; kodu nie.

Uważaj na tool poisoning

Jeśli pozwolisz agentom na dynamiczne instalowanie lub odkrywanie MCP servers, złośliwy serwer może zarejestrować narzędzie z opisem zawierającym ukryte instrukcje. Zawsze przeglądaj opisy narzędzi przed dodaniem ich do rejestru agenta. Zobacz:Zatrucie narzędzia (Tool Poisoning).

Zwracaj klarowne błędy

Gdy narzędzie zawiedzie, zwróć strukturalny błąd z wystarczającym kontekstem, aby model mógł się odwołać lub eskalować — a nie surowy stack trace wyjątku. Przykład: { "error": "rate_limited", "retry_after": 5 }. Dobrze opisany błąd pozwala agentowi spróbować ponownie, użyć narzędzia zapasowego lub łagodnie poinformować użytkownika.