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:
FileIOPluginObsł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" });
TimePluginOperacje na czasie
Now - zwróć aktualną datę
AddMinutes, AddDays - manipulacja czasem
DayOfWeek, Month, Year - ekstrakcja informacji
ConversationSummaryPluginPodsumowywanie rozmów i konwersacji - idealne przy pracy z chatami
TextPluginOperacje tekstowe: długość, split, case-conversion, czyszczenie stringów
HttpPluginWysyłanie zapytań HTTP (GET, POST) - tak, można bezpośrednio odpalać integracje z zewnętrznymi serwisami!
MemoryPluginDostęp do pamięci kontekstowej, czyli np. zapamiętywanie faktów, wcześniejszych promptów, odpowiedzi, kontekstu użytkownika.
MathPluginProste 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?