Semantyczne składniki jądra

Semantyczne jądro udostępnia wiele różnych składników, które mogą być używane pojedynczo lub razem. Ten artykuł zawiera omówienie różnych składników i objaśnia relację między nimi.

Łączniki usług sztucznej inteligencji

Łączniki usługi AI jądra semantycznego zapewniają warstwę abstrakcji, która uwidacznia wiele typów usług sztucznej inteligencji od różnych dostawców za pośrednictwem wspólnego interfejsu. Obsługiwane usługi obejmują uzupełnianie czatów, generowanie tekstu, generowanie osadzeń, tekst na obraz, obraz na tekst, tekst na dźwięk i dźwięk na tekst.

Gdy implementacja zostanie zarejestrowana w jądrze, domyślnie będą używane usługi uzupełniania czatu lub generowania tekstu przy każdym wywołaniu metod do jądra. Żadna z innych obsługiwanych usług nie będzie używana automatycznie.

Napiwek

Aby uzyskać więcej informacji na temat korzystania z usług sztucznej inteligencji, zobacz Dodawanie usług sztucznej inteligencji do semantycznego jądra.

Łączniki pamięci magazynującej wektory

Łączniki magazynu wektorów Semantic Kernel zapewniają warstwę abstrakcji, która udostępnia magazyny wektorów od różnych dostawców za pośrednictwem wspólnego interfejsu. Jądro nie używa żadnego zarejestrowanego magazynu wektorów automatycznie, ale wyszukiwanie wektorów można łatwo uwidocznić jako wtyczkę jądra, w tym przypadku wtyczka jest udostępniana szablonom monitów i modelowi AI uzupełniania czatu.

Napiwek

Aby uzyskać więcej informacji na temat używania łączników pamięci, zobacz Dodawanie usług sztucznej inteligencji do semantycznego jądra.

Funkcje i wtyczki

Wtyczki są nazwane kontenerami funkcji. Każdy może zawierać co najmniej jedną funkcję. Wtyczki można zarejestrować w jądrze, dzięki czemu jądro może używać ich na dwa sposoby:

  1. Anonsuj je do sztucznej inteligencji ukończenia czatu, aby sztuczna inteligencja mogła wybrać je do wywołania.
  2. Udostępnij je do wywołania z szablonu podczas renderowania szablonu.

Funkcje można łatwo tworzyć z wielu źródeł, w tym z kodu natywnego, specyfikacji interfejsu OpenAPI, ITextSearch implementacji scenariuszy RAG, ale także z szablonów monitów.

PromptTemplates, NativeCode, specyfikacje interfejsu OpenAPI i textSearch można przekształcić w wtyczki.

Napiwek

Aby uzyskać więcej informacji na temat różnych źródeł wtyczek, zobacz Co to jest wtyczka?.

Napiwek

Aby uzyskać więcej informacji na temat reklamowania wtyczek do AI uzupełniającej czat, zobacz Function calling with chat completion.

Szablony monitów

Szablony monitów pozwalają deweloperowi lub inżynierowi projektującemu monity stworzyć szablon, który łączy kontekst i instrukcje dla sztucznej inteligencji z danymi wejściowymi i wyjściem funkcji. Na przykład szablon może zawierać instrukcje dotyczące modelu AI uzupełniania czatu oraz symbole zastępcze danych wejściowych użytkownika oraz zakodowane na stałe wywołania wtyczek, które zawsze muszą być wykonywane przed wywołaniem modelu AI uzupełniania czatu.

Szablony monitów można używać na dwa sposoby:

  1. Początkiem przepływu uzupełniania czatu jest poproszenie jądra o wyrenderowanie szablonu i wywołanie modelu AI uzupełniania czatu z uzyskanym wynikiem.
  2. Jako funkcja wtyczki, aby można ją było wywołać w taki sam sposób jak każdą inną funkcję.

Gdy zostanie użyty szablon monitu, zostanie on najpierw renderowany, a także wszystkie zakodowane na stałe odwołania do funkcji, które zawiera, zostaną wykonane. Renderowany monit zostanie następnie przekazany do modelu AI uzupełniania czatu. Wynik wygenerowany przez AI zostanie zwrócony do wywołującego. Jeśli szablon monitu został zarejestrowany jako funkcja wtyczki, funkcja mogła zostać wybrana do wykonania przez model AI do uzupełniania czatu, a w tym przypadku wywołującym jest Semantic Kernel na rzecz modelu sztucznej inteligencji.

Użycie szablonów monitów jako funkcji wtyczki w ten sposób może spowodować raczej złożone przepływy. Rozważmy na przykład scenariusz, w którym szablon monitu A jest zarejestrowany jako wtyczka. W tym samym czasie do jądra może zostać przekazany inny szablon monitu B, aby rozpocząć proces zakończenia czatu. B może mieć zakodowane na stałe wywołanie A. Spowoduje to wykonanie następujących czynności:

  1. B renderowanie rozpoczyna się, a wykonanie polecenia znajduje odwołanie do A
  2. A został renderowany.
  3. Zwizualizowane dane wyjściowe A są przekazywane do modelu sztucznej inteligencji do uzupełniania czatu.
  4. Wynik modelu AI uzupełniania czatu jest zwracany do B.
  5. Renderowanie B zostało ukończone.
  6. Zwizualizowane dane wyjściowe B są przekazywane do modelu sztucznej inteligencji do uzupełniania czatu.
  7. Wynik modelu AI uzupełniania czatu jest zwracany do wywołującego.

Rozważ również scenariusz, w którym nie ma zakodowanego na stałe wywołania z B do A. Jeśli wywoływanie funkcji jest włączone, model AI uzupełniania czatu może nadal zdecydować, że A powinien być wywołany, ponieważ wymaga danych lub funkcji, które A może zapewnić.

Rejestrowanie szablonów monitów jako funkcji wtyczek umożliwia tworzenie funkcji opisanych przy użyciu języka ludzkiego zamiast rzeczywistego kodu. Rozdzielenie funkcjonalności do wtyczki, takiej jak ta, pozwala modelowi sztucznej inteligencji rozpatrywać to oddzielnie od głównego przepływu wykonywania i może prowadzić do wyższych wskaźników sukcesu dla modelu sztucznej inteligencji, ponieważ może skupić się na jednym problemie naraz.

Spójrz na poniższy diagram, aby zobaczyć prosty przepływ uruchamiany z szablonu monitu.

PromptTemplates może być uruchamiany przez jądro, gdzie renderuje szablon, wywołuje wymagane funkcje, a następnie uruchamia model AI uzupełniania czatu, aby uzyskać odpowiedź lub więcej funkcji do wywołania.

Napiwek

Aby uzyskać więcej informacji na temat szablonów monitów, zobacz Co to są monity?.

Filtry

Filtry umożliwiają wykonywanie akcji niestandardowej przed określonymi zdarzeniami i po nim podczas przepływu ukończenia czatu. Te zdarzenia obejmują:

  1. Przed i po wywołaniu funkcji.
  2. Przed i po wyświetleniu okna dialogowego.

Filtry muszą być zarejestrowane w jądrze, aby mogły być wywołane podczas procesu uzupełniania czatu.

Należy pamiętać, że ponieważ szablony monitów są zawsze konwertowane na Funkcje jądra przed wykonaniem, zarówno funkcje, jak i filtry monitów zostaną wywołane dla szablonu monitu. Ponieważ filtry są zagnieżdżone, gdy jest dostępnych więcej niż jeden, filtry funkcji pełnią rolę filtrów zewnętrznych, a filtry monitów - wewnętrznych.

integracja filtru z potokiem semantycznego jądra.

Napiwek

Aby uzyskać więcej informacji na temat filtrów, zobacz Co to są filtry?.