czyli jak z pluginów, planera i pamięci zbudować cyfrowego asystenta
Agent to kompozycja kilku komponentów:
🎭 Tożsamość – kim agent jest, jakie ma kompetencje i styl
🧰 Funkcje (pluginy) – jego zestaw narzędzi
🧠 Pamięć (Memory) – dostęp do przeszłych kontekstów, dokumentów, faktów
🗺️ Planowanie (Planner) – zdolność rozbijania celów na zadania
🧑💻 Profil działania – np. jak reagować, co pomijać, jak się przedstawiać
To tu decydujesz, kim jest Twój agent i jak ma się zachowywać.
var systemPrompt = """ Jesteś pomocnym i konkretnym asystentem technologicznym. Odpowiadasz zwięźle, ale nie unikasz trudnych tematów. Jeśli nie wiesz – przyznaj to. Unikaj zbyt marketingowego tonu. """;
Podłącz funkcje, z których agent może korzystać:
var builder = Kernel.CreateBuilder() .AddOpenAIChatCompletion("gpt-4", "key") .AddAzureOpenAITextEmbeddingGeneration("embedding", "model", "key", "endpoint"); var kernel = builder.Build(); // Dodajemy pluginy kernel.ImportPluginFromObject(new FileIOPlugin("data/"), "fileIO"); kernel.ImportPluginFromPromptDirectory("Plugins/TextSummary", "summary");
Pamięć pozwala agentowi przechowywać i przeszukiwać informacje.
var memoryStore = new VolatileMemoryStore(); // lub Azure, Redis itp. kernel.UseMemory(new MemoryBuilder() .WithMemoryStore(memoryStore) .Build());
Możesz teraz zapisywać fakty lub historię:
await kernel.Memory.SaveInformationAsync( collection: "user-memories", text: "Użytkownik pracuje nad agentem AI w Semantic Kernel", id: "user-project" );
Bez planera agent nie będzie wiedział, jak używać pluginów do złożonych zadań.
var planner = new SequentialPlanner(kernel);
var goal = "Wczytaj plik raport.txt, streść go i zapisz streszczenie do summary.txt"; var plan = await planner.CreatePlanAsync(goal); var result = await plan.InvokeAsync(kernel); Console.WriteLine(result);
Agent:
dobiera pluginy
tworzy plan działania
wykonuje zadania
może zapisać wynik do pamięci
📜 Agent może mieć historię rozmów i na jej podstawie podejmować decyzje
🔁 Może iterować swoje odpowiedzi (np. przy autokorekcie)
🌐 Można go połączyć z API, bazą wiedzy, grafem wiedzy
🔒 Można mu ograniczyć dostęp do niektórych funkcji (sandbox)
Załóżmy, że agent ma pomagać zespołowi developerskiemu. Możesz dodać:
Plugin do przeszukiwania dokumentacji (prompt + kontekst)
Plugin do czytania z repozytorium kodu
Plugin do analizowania błędów z logów
Celu nie definiujesz na sztywno – użytkownik pisze:
"Znajdź w dokumentacji sposób konfiguracji tokenów i porównaj z tym, co mamy w pliku konfiguracyjnym"
Agent działa. 💪
Co? | Dlaczego? |
---|---|
✍️ Jasna osobowość | Agent nie będzie "nijaki" |
🧩 Dobrze opisane pluginy | Lepsze decyzje planera |
🧠 Używaj pamięci | Agent może być kontekstowy i uczący się |
📊 Loguj plan i jego wykonanie | Ułatwia debugowanie i rozwój |
W kolejnych krokach pokażę Ci:
jak zarządzać pamięcią i kontekstem
jak przeszukiwać pamięć semantyczną
jak zintegrować pamięć w aplikacji