Wprowadzenie do Microsoft Semantic Kernel

Zapraszam do nowej serii artykułów poświęconych Semantic Kernel — innowacyjnemu rozwiązaniu stworzonemu przez Microsoft, które ma na celu ułatwienie programistom wykorzystanie generatywnej sztucznej inteligencji w ich aplikacjach. W dzisiejszym poście przedstawię ogólny zarys Semantic Kernel oraz przegląd możliwości, jakie to rozwiązanie oferuje. Dowiesz się, jak SK może zrewolucjonizować Twoje podejście do tworzenia inteligentnych systemów i jakie korzyści płyną z jego zastosowania.

W całym cyklu artykułów o Microsoft Semantic Kernel zajmiemy się wykorzystaniem usług OpenAI w praktyce. Warto zauważyć, że rozwijanie i trenowanie dużych modeli językowych (LLM) wymaga znacznych zasobów, dlatego korzystanie z tych zaawansowanych technologii wiąże się z pewnymi kosztami. Modele językowe, takie jak ChatGPT, oferują niesamowite możliwości w zakresie przetwarzania języka naturalnego, co może być niezwykle pomocne w różnych zastosowaniach, od automatyzacji obsługi klienta po tworzenie treści. Korzystanie z tych usług nie jest darmowe, ale korzyści, jakie można z nich uzyskać, często przewyższają koszty.

Ostatnio OpenAI wprowadziło na rynek nowy model GPT-4o Mini, który jest jeszcze tańszy niż GPT-3.5 Turbo. GPT-4o Mini to inteligentny i niedrogi model, który przewyższa GPT-3.5 Turbo pod względem inteligencji tekstowej (osiągając 82% w MMLU w porównaniu do 69,8% GPT-3.5 Turbo). Cena GPT-4o Mini jest ponad 60% niższa niż GPT-3.5 Turbo, wynosząc $0.15 za 1 milion tokenów wejściowych i $0.60 za 1 milion tokenów wyjściowych (co odpowiada około 2500 stron standardowej książki). GPT-4o Mini obsługuje obecnie możliwości tekstowe i wizualne, a w przyszłości planowane jest wsparcie dla wejść i wyjść audio oraz wideo. Model ten ma również lepsze zrozumienie wielojęzyczne w porównaniu do GPT-3.5 Turbo, obejmując szeroki zakres języków innych niż angielski. Dzięki niskim kosztom i opóźnieniom, GPT-4o Mini doskonale sprawdza się w zadaniach wymagających dużej ilości danych (np. przekazywanie pełnej bazy kodu lub historii konwersacji do modelu), zadaniach wrażliwych na koszty (np. podsumowywanie dużych dokumentów) oraz zadaniach wymagających szybkich odpowiedzi (np. chatboty do obsługi klienta).

Aby móc korzystać z usług OpenAI, będziemy potrzebować klucza API. Jest to unikalny kod, który umożliwia Twojej aplikacji dostęp do zasobów OpenAI. Aby wygenerować klucz, załóż konto w OpenAI lub zaloguj się na istniejące konto. Następnie przejdź do strony z kluczami API i wybierz opcję "Utwórz nowy tajny klucz", opcjonalnie nadając mu nazwę. Upewnij się, że zapiszesz ten klucz w bezpiecznym miejscu i nie udostępniaj go nikomu.

Aktualnie OpenAI zaleca używanie kluczy API opartych na projektach, w celu uzyskania bardziej szczegółowej kontroli nad zasobami. Link do dokumentacji tutaj.

Co to jest Microsoft Semantic Kernel?

Microsoft Semantic Kernel to otwartoźródłowy zestaw narzędzi programistycznych (SDK) zaprojektowany w celu ułatwienia integracji aplikacji napisanych w językach C#, Python oraz Javy z usługami sztucznej inteligencji, takimi jak te udostępniane przez OpenAI, Azure OpenAI oraz Hugging Face. Dzięki SK możliwe jest odbieranie żądań z aplikacji i przekazywanie ich do różnych usług AI. Ponadto, poprzez rozszerzanie funkcjonalności SK o własne funkcje, możliwe jest automatyczne wykrywanie, które funkcje muszą być użyte i w jakiej kolejności, aby zrealizować dane żądanie.

Semantic Kernel został pierwotnie zaprojektowany do zasilania różnych wersji Microsoft Copilot, takich jak Microsoft 365 Copilot i Bing Copilot, a następnie udostępniony społeczności deweloperów jako otwartoźródłowy pakiet. Deweloperzy mogą używać SK do tworzenia wtyczek, które wykonują skomplikowane działania z wykorzystaniem usług AI, a także łączyć te wtyczki przy użyciu kilku linijek kodu.

Jedną z unikalnych cech Semantic Kernel jest jego zdolność do automatycznej orkiestracji różnych wtyczek za pomocą planera. Dzięki planerowi użytkownik może poprosić aplikację o osiągnięcie złożonego celu. Na przykład, jeśli masz funkcję, która tłumaczy tekst na różne języki oraz inną funkcję, która wysyła e-maile, użytkownik może powiedzieć: „Przetłumacz ten tekst na hiszpański i wyślij e-mail do mojego hiszpańskojęzycznego klienta”, a planer automatycznie zrozumie, że najpierw trzeba wywołać funkcję tłumaczącą, a następnie funkcję wysyłającą e-mail. SK automatycznie wyszuka i połączy wtyczki, aby osiągnąć ten cel i stworzyć plan.

Co oferuje Microsoft Semantic Kernel?

Jednym z najważniejszych aspektów Semantic Kernel jest jego zdolność do integracji z dużymi modelami językowymi, takimi jak GPT-4. Co więcej, SK umożliwia łączenie się z innymi modelami dostępnymi w ramach Azure OpenAI, Hugging Face, oraz lokalnymi modelami. Dzięki implementacjom tych abstrakcji dla usług OpenAI, Azure OpenAI, Hugging Face oraz dla różnych baz danych wektorowych, takich jak Chroma, Qdrant, Milvus i Azure, deweloperzy mogą łatwo włączać zaawansowane funkcje przetwarzania języka naturalnego do swoich aplikacji. To otwiera drzwi do szerokiego zakresu zastosowań, od chatbotów, przez systemy rekomendacyjne, aż po narzędzia do analizy tekstu.

Semantic Kernel wprowadza rozróżnienie między funkcjami natywnymi a semantycznymi. Funkcje natywne to standardowe funkcje napisane w języku aplikacji, podczas gdy funkcje semantyczne integrują się z zewnętrznymi usługami AI. To rozróżnienie pozwala na tworzenie bardziej modularnych i elastycznych aplikacji.

Jednym z kluczowych atutów Semantic Kernel jest możliwość tworzenia wtyczek semantycznych. Wtyczki te są niezależne od języka programowania i składają się z kolekcji funkcji semantycznych. Dzięki temu deweloperzy mogą oddzielić swój kod od funkcji AI, co ułatwia utrzymanie aplikacji i pozwala na łatwiejszą współpracę nad promptami.

Semantic Kernel wyposażony jest w zaawansowane narzędzia do planowania, które pozwalają na dynamiczne tworzenie planów działania na podstawie celów użytkownika. Planery mogą korzystać z obu typów funkcji — natywnych i semantycznych — aby realizować zadania w sposób najbardziej efektywny.

Zastosowania Praktyczne

Dzięki swojej elastyczności Semantic Kernel może być wykorzystany w różnorodnych zastosowaniach praktycznych. Przykłady obejmują:

  • Chatboty: Tworzenie inteligentnych asystentów, którzy mogą prowadzić naturalne rozmowy z użytkownikami.
  • Systemy rekomendacyjne: Analiza preferencji użytkowników i sugerowanie produktów lub treści.
  • Analiza tekstu: Przetwarzanie i analiza dużych zbiorów danych tekstowych w celu wyciągania wartościowych wniosków.
  • Automatyzacja zadań: Tworzenie skryptów i narzędzi, które automatyzują codzienne zadania administracyjne.

Semantic Kernel to świetne narzędzie, które otwiera nowe możliwości w zakresie integracji zaawansowanych modeli językowych z aplikacjami. Dzięki elastyczności, modularności i zaawansowanym funkcjom planowania, SK stanowi solidną podstawę dla tworzenia inteligentnych systemów przyszłości. W kolejnych artykułach zagłębimy się w konkretne przykłady użycia, konfigurację funkcji semantycznych oraz praktyczne wskazówki dotyczące implementacji SK w Twoich projektach.

Zapraszamy do lektury kolejnych części naszej serii, gdzie krok po kroku omówimy, jak w pełni wykorzystać potencjał Microsoft Semantic Kernel.

Do zobaczenia w kolejnych postach!