Paweł Łukasiewicz: programista blogger
Paweł Łukasiewicz
2025-05-18
Paweł Łukasiewicz
2025-05-18
Udostępnij Udostępnij Kontakt
🧰 Wbudowane pluginy w Semantic Kernel

czyli nie musisz wszystkiego pisać sam — ktoś już to zrobił za Ciebie


W poprzednim wpisie rozkładaliśmy na części pluginy własne — promptowe, natywne i szablonowe. Dziś wejdziemy poziom wyżej i przyjrzymy się pluginom wbudowanym w Semantic Kernel.

Tak, dobrze czytasz — nie musisz od razu pisać wszystkiego od zera. Semantic Kernel dostarcza gotowe narzędzia, które możesz podpiąć w kilka linijek kodu i od razu z nich korzystać.


📦 Co to są wbudowane pluginy?

To zbiór gotowych funkcji, opakowanych w postaci pluginów, które rozwiązują popularne problemy. Dzięki temu możesz od razu:

  • pracować na plikach,

  • manipulować czasem,

  • zarządzać pamięcią kontekstu,

  • łączyć się z usługami zewnętrznymi,

  • wykonywać operacje matematyczne, tekstowe czy systemowe.

Bez pisania własnych klas i promptów.


🔧 Jak je podpiąć?

Używamy jednej metody:

kernel.ImportPluginFromObject(new TextPlugin(), "text");

Albo:

kernel.ImportPluginFromObject(new FileIOPlugin("data/"), "fileIO");

To wszystko. Teraz możesz wywoływać funkcje jak z pluginów własnych.


🧩 Przegląd dostępnych wbudowanych pluginów

Oto najważniejsze z nich:


📁 FileIOPlugin

Obsługa plików (czytanie/zapisywanie tekstu, JSON, CSV itd.)

  • ReadText — odczytaj plik tekstowy

  • WriteText — zapisz dane do pliku

  • ReadJson — parsowanie JSON-a

  • ReadLines — odczyt linii z pliku

🔧 Przykład:

var filePlugin = kernel.ImportPluginFromObject(new FileIOPlugin("data/"), "fileIO"); 
await kernel.InvokeAsync(filePlugin["ReadText"], new() { ["filePath"] = "sample.txt" }); 

TimePlugin

Operacje na czasie

  • Now — zwróć aktualną datę

  • AddMinutes, AddDays — manipulacja czasem

  • DayOfWeek, Month, Year — ekstrakcja informacji


💭 ConversationSummaryPlugin

Podsumowywanie rozmów i konwersacji — idealne przy pracy z chatami


🧠 TextPlugin

Operacje tekstowe: długość, split, case-conversion, czyszczenie stringów


🗂️ HttpPlugin

Wysyłanie zapytań HTTP (GET, POST) — tak, można bezpośrednio odpalać integracje z zewnętrznymi serwisami!


💾 MemoryPlugin

Dostęp do pamięci kontekstowej, czyli np. zapamiętywanie faktów, wcześniejszych promptów, odpowiedzi, kontekstu użytkownika.


🔢 MathPlugin

Proste działania matematyczne, m.in. Add, Subtract, Multiply, Divide, Round


💡 Inne warte uwagi

  • EmailPlugin (przygotowywany)

  • PlannerPlugin (o nim w kolejnym wpisie!)

  • MicrosoftGraphPlugin (dla integracji z Microsoft 365)


🤝 Kiedy warto po nie sięgnąć?

PotrzebaWbudowany plugin
Wczytywanie danych z plików📁 FileIOPlugin
Praca na datach i czasieTimePlugin
Wysyłanie zapytań HTTP🌐 HttpPlugin
Przetwarzanie danych tekstowych🧠 TextPlugin
Tworzenie kontekstu rozmowy/chatbotów💭 ConversationSummaryPlugin
Integracje z pamięcią SK💾 MemoryPlugin

🧪 Przykład: Łączenie pluginów

Możemy odczytać dane z pliku, podsumować je i zapisać wynik w innym pliku:

var file = kernel.ImportPluginFromObject(new FileIOPlugin("data/"), "fileIO"); 
var summary = kernel.ImportPluginFromObject(new ConversationSummaryPlugin(kernel), "summary"); 
var context = new SKContext(kernel); context["filePath"] = "chat.txt";
 
await kernel.InvokeAsync(file["ReadText"], context); 
await kernel.InvokeAsync(summary["SummarizeConversation"], context); context["filePath"] = "summary.txt";
await kernel.InvokeAsync(file["WriteText"], context); 

Tadam! ✨


🚦 Na co uważać?

  • Nie wszystkie pluginy są dostępne w każdej wersji (szczególnie MicrosoftGraphPlugin)

  • Czasem pluginy mają zależności — np. MemoryPlugin potrzebuje wcześniej skonfigurowanej pamięci


📘 Co dalej?

Skoro mamy już pluginy — własne i wbudowane — czas przejść do tego, co łączy je wszystkie:

🔮 Planery — czyli jak nauczyć Semantic Kernel planować działania, wybierać odpowiednie funkcje i budować łańcuchy zadań automatycznie.


Do przeczytania — i jak zwykle: jeśli masz pytania albo chcesz przykład w Twoim kontekście, pisz śmiało!


Gotowy na Planery?