Data publikacji: 13 stycznia 2024 r.
To pierwsza z 3 części serii dotyczącej LLM-ów i czatbotów. Część 2 dotycząca tworzenia chatbota za pomocą WebLLM oraz część 3 dotycząca korzystania z Prompt API są już dostępne.
Duże modele językowe (LLM) stają się ważnym elementem w rozwoju oprogramowania: dobrze nadają się do generowania i przetwarzania tekstu w języku naturalnym, co umożliwia tworzenie takich aplikacji jak wyodrębnianie danych, ich streszczanie czy prowadzenie dialogów z danymi użytkowników.
W tej serii omawiam zalety i wady LLM na urządzeniu oraz pokazuję, jak dodać funkcje chatbota do istniejącej aplikacji za pomocą dwóch metod: lokalnej i offline, opartych na WebLLM i eksperymentalnym interfejsie Prompt API w Chrome.
Możliwe przypadki użycia
Utworzymy chatbota na podstawie klasycznej aplikacji do zarządzania listą zadań. Kod źródłowy każdego kroku jest dostępny na GitHub. Użytkownicy mogą dodawać nowe zadania, oznaczać je jako wykonane i usuwać.
Możesz dodać funkcję, która pozwoli użytkownikom dowiedzieć się więcej o danych z listy zadań lub wykonać dodatkowe funkcje. Funkcja chatbota umożliwia użytkownikom:
- Zapytaj o liczbę otwartych zadań.
- wykrywać duplikaty lub bardzo podobne zadania,
- Pogrupuj zadania.
- otrzymywać rekomendacje dotyczące nowych zadań na podstawie ukończonych,
- Tłumaczenie zadań na różne języki.
- Wyeksportuj listę zadań w formacie XML.
To tylko kilka przykładów zadań, które mogą wykonywać LLM.
Czym są duże modele językowe?
LLM to sztuczne sieci neuronowe, które przetwarzają i generują tekst w języku naturalnym. Większość obecnych modeli LLM opiera się na architekturze opartej na Transformerach, opracowanej przez Google. Przykłady to modele Gemini i Gemma od Google, seria modeli GPT od OpenAI oraz modele open source, takie jak LLaMa od Meta AI i Mistral od Mistral AI.
Dzięki trenowaniu na ogromnych ilościach danych modele LLM mają imponujący zakres możliwości. Rozumie wiele języków, zna ciekawostki, potrafi tłumaczyć między językami lub generować kod programowania. Zakres tych możliwości może się znacznie różnić w zależności od rozmiaru modelu, jak opisano w artykule Rozmiar modelu LLM.
Duże modele językowe prowadzą do zmiany paradygmatu w architekturze oprogramowania, ponieważ język naturalny staje się teraz podstawową funkcją w inżynierii oprogramowania. Zamiast wywoływać interfejsy API za pomocą dobrze zdefiniowanych interfejsów, wystarczy wyrazić intencję w języku naturalnym w tzw. promptach.
Ograniczenia LLM
LLM mają też pewne ograniczenia:
- Zachowanie niedeterministyczne: duże modele językowe mogą generować różne, a czasem nawet sprzeczne odpowiedzi na ten sam prompt, ponieważ ich wyniki zależą od modeli probabilistycznych, a nie od stałych reguł.
- Halucynacje: te modele mogą czasami generować nieprawidłowe lub bezsensowne informacje, ponieważ polegają na wyuczonych wzorach, a nie na dokładności faktów.
- Wstrzykiwanie promptów: modele LLM mogą być podatne na ataki polegające na wstrzykiwaniu promptów, w których użytkownicy tworzą prompty wejściowe, które manipulują modelem, powodując odstępstwo od jego zamierzonego działania lub generowanie niepożądanych wyników.
Dlatego przed podjęciem jakichkolwiek działań użytkownicy muszą zweryfikować wyniki wygenerowane przez LLM.
W przypadku LLM na urządzeniu należy wziąć pod uwagę ich rozmiar. Ich rozmiary sięgają kilku gigabajtów i przed pierwszym użyciem muszą zostać pobrane na urządzenie użytkownika. Mniejsze modele zwykle zapewniają odpowiedzi o gorszej jakości, zwłaszcza w porównaniu z modelami opartymi na chmurze.
Wybieranie lokalnych rozwiązań
Aby zintegrować LLM z aplikacją internetową, możesz użyć usług dostawcy usług w chmurze. Wielu dostawców oferuje wysokiej jakości modele LLM, z których niektóre są dostępne wyłącznie dla określonych dostawców. LLM w chmurze zapewniają szybkie wnioskowanie przy rozsądnym koszcie, który jest zwykle obliczany na podstawie przetworzonego tokena.
Z kolei rozwiązania lokalne mają wiele zalet. Lokalne modele językowe działają bezpośrednio na urządzeniu użytkownika, dzięki czemu zapewniają większą niezawodność czasów odpowiedzi, są dostępne nawet wtedy, gdy użytkownik jest offline, i nie wymagają od deweloperów uiszczania opłat abonamentowych ani innych bieżących kosztów. Mogą one znacznie zwiększyć bezpieczeństwo użytkowników. Zachowanie wszystkich działań na urządzeniu pozwala uniknąć przesyłania informacji umożliwiających identyfikację do zewnętrznych dostawców lub regionów.
Prezentacje
Zanim dowiesz się, jak stworzyć chatbota samodzielnie, możesz zapoznać się z gotowymi wersjami demonstracyjnymi z zastosowaniem chatbota.
- Pierwotna aplikacja do zarządzania zadaniami
- Aplikacja do zarządzania zadaniami z WebLLM
- Aplikacja do zarządzania zadaniami z interfejsem Prompt API
- Kod źródłowy na GitHubie
Następnie użyjesz WebLLM, aby dodać chatbota do aplikacji do zarządzania zadaniami.