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ć.
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.
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.
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
EmailPlugin
(przygotowywany)
PlannerPlugin
(o nim w kolejnym wpisie!)
MicrosoftGraphPlugin
(dla integracji z Microsoft 365)
Potrzeba | Wbudowany plugin |
---|---|
Wczytywanie danych z plików | 📁 FileIOPlugin |
Praca na datach i czasie | ⏰ TimePlugin |
Wysyłanie zapytań HTTP | 🌐 HttpPlugin |
Przetwarzanie danych tekstowych | 🧠 TextPlugin |
Tworzenie kontekstu rozmowy/chatbotów | 💭 ConversationSummaryPlugin |
Integracje z pamięcią SK | 💾 MemoryPlugin |
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! ✨
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
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?