Łańcuch podpowiedzi
Pojawiają się narzędzia programowania wizualnego ułatwiające łączenie monitów dużego modelu językowego w aplikację; który jest głównie konwersacyjnym interfejsem użytkownika.
Niektóre tło
Szereg platform programistycznych chatbotów zawiera LLM w swojej funkcjonalności. Funkcjonalność ta ma uzupełniać istniejące możliwości rozwoju chatbota. Jednak te implementacje platformy LLM dla chatbotów mają bardzo podobny charakter .
Po tej początkowej implementacji nastąpiła druga fala generowania przepływu konwersacji i asystentów projektowania konwersacji; na czele której stał Cognigy . A następnie Yellow AI i Kore AI.
L LM są bardzo wszechstronne z otwartymi możliwościami.
Voiceflow i Botpress wprowadziły funkcjonalność przypominającą łańcuch podpowiedzi, w zakresie, w jakim monit może zostać przesłany do LLM, a wartości mogą zostać wyodrębnione z wygenerowanej odpowiedzi.
W tym artykule chcę rozważyć zasady leżące u podstaw projektowania i budowania natywnego wizualnego interfejsu programowania łańcuchowego.
Natywny interfejs użytkownika z łańcuchem podpowiedzi
Podczas łączenia monitów w modelu dużego języka za pomocą interfejsu programowania wizualnego, największą częścią funkcjonalności będzie interfejs GUI, który ułatwia proces tworzenia.
Poniżej znajduje się obraz tego, jak mógłby wyglądać taki GUI do szybkiej inżynierii i szybkiego tworzenia łańcucha. Ten projekt powstał na podstawie badań przeprowadzonych przez University of Washington i Google.
Interfejs musi oferować szczegółowość na wielu poziomach procesu tworzenia. Biorąc pod uwagę proces łańcuchowania, oczywiste jest, że między łańcuchami istnieją połączenia.
Każde narzędzie łańcuchowe monitów lub narzędzie łańcuchowe LLM musi obsługiwać transformację danych między etapami łańcucha. Biorąc pod uwagę, że w większości przypadków LLM zwróci dane nieustrukturyzowane, wymagany będzie pewien poziom strukturyzowania i transformacji danych.
Drugim elementem jest nieco nieprzewidywalny charakter LLM. LLM może generować wiele odpowiedzi na ten sam monit. Rodzi to wyzwanie kaskadowania niepożądanych odpowiedzi w szybkich łańcuchach. Gdzie nieoczekiwane dane są propagowane w łańcuchach.
Ponieważ nie ma kompilacji kodu, monity można dostosowywać w czasie wykonywania bez konieczności specjalnego szkolenia modelu.
Nowe zadania mogą być łatwo przyswajane przez aplikację LLM Chained, po prostu przyjmując instrukcje w języku naturalnym zwane monitami.
To prawda, że wiele rzeczywistych aplikacji obejmuje złożone i często równoległe, wieloetapowe zadania, które stanowią wyzwanie dla pojedynczej instancji łańcuchów.
Biorąc pod uwagę poniższy stos funkcjonalności, szybka aplikacja łańcuchowa oparta na dużych modelach językowych (LLM) i generatywnej sztucznej inteligencji powinna składać się z trzech głównych elementów:
⏺ LLM
⏺ Pomocnicy
⏺ Komunikacja
LLM
W przypadku wielu łańcuchów/węzłów dane wyjściowe LLM mogą być używane bez edycji, tak jak są dostarczane przez LLM. W większości przypadków ten widok zostanie przedstawiony użytkownikowi lub transformacja danych może być wymagana dla następnego łańcucha w aplikacji LLM (aka Gen App).
Dane wyjściowe LLM określą, do którego łańcucha należy się rozgałęzić, dlatego te krawędzie łańcucha/węzłów muszą zawierać reguły i warunki.
Ostatnią kwestią jest użycie LLM jako klasyfikatora . LLM można wdrożyć w charakterze generatywnym lub predykcyjnym . Generatywna sztuczna inteligencja to najpopularniejsza i najbardziej dostępna strona LLM. Przewidywanie jest trudniejsze i wymaga dokładniejszego dostrojenia lub przynajmniej precyzyjnych podpowiedzi.
Wykorzystanie LLM jako klasyfikatora (a więc predykcyjnego) w łańcuchu sprawia, że węzły decyzyjne aplikacji łączącej łańcuchy są inteligentne i elastyczne.
Zawsze będzie istniała pokusa, aby szybko podejmować decyzje związane z kodem/skryptem; określane również jako punkty przejściowe łańcucha. To jest szybka poprawka; ale ponownie wprowadza sztywność do aplikacji LLM Chaining.
Pomocnicy
Pomocnicy pomagają w ocenie wyników LLM, biorąc pod uwagę takie aspekty, jak uprzejmość, empatia itp. Pomocnicy mogą również ponownie uszeregować lub ponownie przesłać monity.
Ponieważ szczegółowość jest wymogiem każdej implementacji produkcyjnej, ważne będzie ulepszenie szybkiej aplikacji łańcuchowej. Do przetwarzania i transformacji danych wymagana będzie forma skryptów.
Skrypty obejmują afordancje rozwojowe przyznane autorowi łańcucha w celu wdrożenia środków kontroli, transformacji danych i nie tylko.
Komunikacja
Komunikacja odbywa się na kilku poziomach, wprowadzane są dane użytkownika w postaci nieustrukturyzowanych danych konwersacyjnych.
Inne działania użytkownika, takie jak poproszenie użytkownika o wybranie najlepszej odpowiedzi lub ujednoznacznienie na podstawie kilku możliwości.
I oczywiście systemy innych firm (API) będą przesłuchiwane w przypadku każdej implementacji przedsiębiorstwa lub produkcji.
Biorąc pod uwagę projekt PromptChainer
Interfejs PromptChainer posiada wizualizator widoku łańcucha, w którym można tworzyć, edytować, odczytywać i usuwać strukturę łańcucha z krawędziami węzłów lub „pomiędzy łańcuchami” [A].
Przeglądarka węzłów obsługuje wdrażanie, ulepszanie i testowanie każdego pojedynczego węzła lub łańcucha [B]. Tutaj można przeprowadzić edycję monitów dla każdego węzła.
PromptChainer obsługuje również uruchamianie łańcucha od końca do końca [C] z opcjami czyszczenia pamięci podręcznej, przeglądania dzienników uruchamiania itp.
Na podstawie badań ilościowych przeprowadzonych przez University of Washington i Google Research dokonano odkryć dotyczących sposobu, w jaki użytkownicy budują i debugują łańcuchy:
[1] Użytkownicy chcą budować łańcuchy, aby nie tylko łagodzić ograniczenia LLM, ale także aby ich aplikacje były rozszerzalne i skalowalne.
[2] Niektórzy użytkownicy budowali łańcuch po jednym etapie, podczas gdy inni szkicowali abstrakcyjne symbole zastępcze dla wszystkich etapów przed ich wypełnieniem.
[3] Interakcje między wieloma monitami i łańcuchami LLM mogą być złożone i wymagać zarówno lokalnego, jak i globalnego debugowania monitów.
Biorąc pod uwagę poniższy obraz, oto opis każdego węzła lub łańcucha:
[1] Zdefiniuj wejście do łańcucha
[2,3] Użyj danych wyjściowych LLM do filtrowania i rozgałęziania danych wejściowych.
[4] Użyj danych wyjściowych LLM bezpośrednio jako danych wyjściowych węzła.
[5] Wstępnie zaimplementowane funkcje JavaScript do typowej transformacji danych.
[6] Użyj danych wyjściowych LLM bezpośrednio jako danych wyjściowych węzła.
[7] Wywołaj funkcje zewnętrzne, aby połączyć profesjonalne usługi z LLM.
[8] Funkcje JS zdefiniowane przez użytkownika, w przypadku gdy predefiniowane helpery są niewystarczające.
[9] Użyj danych wyjściowych LLM bezpośrednio jako danych wyjściowych węzła.
[10] Filtruj lub zmieniaj ranking wyników LLM według kryteriów zaprojektowanych przez człowieka, np. uprzejmości. Umożliwia edycję zewnętrzną (użytkownika końcowego) w pośrednich punktach danych.
Podsumowując
Istnieje kilka terminów używanych obecnie w przypadku aplikacji opartych na modelach podstawowych i modelach dużego języka. Te warunki to Gen Apps, Generative Apps, LLM Apps, Prompt Chaining, LLM Chaining i inne.
Dość powiedzieć, że istnieje potrzeba budowania na Dużych Modelach i jakoś okiełznania mocy LLM.
Potrzeba ta będzie oparta na następujących zasadach:
- Monity
- Wykorzystanie możliwości przewidywania i generowania LLM.
- Łańcuch podpowiedzi; zarówno w sposób równoległy, jak i szeregowy.
- Wizualny edytor do programowania łańcuchów/węzłów i krawędzi, pomiędzy węzłami/łańcuchami.
- Transformacja danych odpowiedzi LLM.
- Połączone aplikacje LLM będą konwersacyjne zarówno dla danych wejściowych, jak i wyjściowych, lub dane wyjściowe mogą również obejmować komponent RPA.
Obecnie jestem Głównym Ewangelistą @ HumanFirst . Odkrywam i piszę o wszystkich rzeczach na styku sztucznej inteligencji i języka; począwszy od LLM , Chatbotów , Voicebotów , Frameworków programistycznych, ukrytych przestrzeni Data-Centric i innych.
PromptChainer: łączenie monitów modelu dużego języka za pomocą programowania wizualnego.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































