Niedawno otrzymałem wiadomość e-mail od utalentowanego naukowca z pytaniem, w jaki sposób Botpress łączy się z LLMs.
Pisał artykuł na temat unikania uzależnienia od dostawcy i chciał wiedzieć, czy być może korzystamy z frameworka takiego jak LangChain lub Haystack.
Z przyjemnością podzieliłem się z nim informacją, że stworzyliśmy własne abstrakcje, które pozwalają konstruktorom Botpress współpracować z LLMs.
Biorąc pod uwagę szersze zainteresowanie tematem, chciałem upublicznić te informacje. Mogą one być przydatne dla innych deweloperów lub użytkowników naszej platformy. Mam nadzieję, że okaże się ona równie interesująca, jak jej tworzenie.
Dwa sposoby interfejsu Botpress z LLMs
Botpress stworzyła własne abstrakcje, które działają na dwa sposoby:
1. Integracje
Integracje mają koncepcję akcji, które mają określone typy danych wejściowych i wyjściowych.
Na platformie mamy komponenty open source, więc społeczność może tworzyć własne integracje, które mogą być prywatne lub dostępne do użytku publicznego.
Tak więc dostawcy LLM - OpenAI, Anthropic, Groq itp. - każdy z nich ma integrację. To jeden ze sposobów, w jaki nasi użytkownicy mogą się z nimi łączyć.
2. LLM interfejsy integracyjne
Do koncepcji integracji dodaliśmy "interfejsy".
Są to po prostu standardowe definicje schematów, które integracje mogą rozszerzać. Stworzyliśmy standardowy schemat dla LLMs.
Dopóki integracja rozszerza ten schemat, integracja jest uważana za dostawcę LLM . Działa więc od razu w Botpress.
Oto kilka przykładów integracji Botpress dla różnych dostawców LLM :
Mamy podobne interfejsy dla text2image, image2text, voice2text, text2voice itp.
Konfiguracje modeli
Wewnątrz Botpress Studio mamy dwie ogólne konfiguracje: "Najlepszy model" i "Szybki model". Stwierdziliśmy, że ogólnie większość zadań z łatwością pasuje do jednego z tych dwóch trybów.
Jednak oprócz samego wyboru modelu, odkryliśmy, że różni dostawcy zbytnio różnili się w kwestii wywoływania narzędzi i formatów wiadomości, aby móc łatwo zamienić jeden model na drugi i oczekiwać dobrych wyników.
Silnik wnioskowania Botpress
Z tego powodu stworzyliśmy nasz własny silnik wnioskowania o nazwie LLMz, który działa z dowolnym modelem bez (lub z bardzo minimalną) zmianą monitu. Zapewnia on znacznie lepsze wywoływanie narzędzi i często znacznie lepszą wydajność pod względem kosztu tokena i LLM roundtripów.
Ten silnik działa z typami skryptów za sceną dla definicji narzędzi, markdown dla formatu wyjściowego wiadomości i kodu oraz natywną piaskownicą wykonawczą LLM do wnioskowania.
LLMz zapewnia wiele optymalizacji i funkcji debugowania, które są wymagane w zaawansowanych przypadkach użycia, takich jak:
- Kompresja tokenów wejściowych
- Inteligentne obcinanie tokenów
- Pamięć do kontekstu zoptymalizowana pod kątem tokenów
- Równoległe i złożone wywoływanie narzędzi
- Połączenie wielu wiadomości + wywołań narzędzi w jednym wywołaniu LLM
- W pełni bezpieczne narzędzia (wejście i wyjście)
- Długotrwałe sesje dzięki serializacji piaskownicy
- Szydzenie, owijanie i śledzenie narzędzi
- Pełna izolacja wykonania w lekkich izolatach V8 (pozwala na szybkie i tanie uruchamianie tysięcy współbieżnych wykonań)
- Automatyczne iteracje i odzyskiwanie błędów
Wszystkie te rzeczy były niezbędne dla naszych przypadków użycia. Były one jednak niemożliwe lub bardzo trudne do wykonania przy użyciu zwykłych narzędzi.
Argument przeciwko lekkim modelom routerów
Długo zastanawialiśmy się nad stworzeniem lekkiego modelu routera, który działałby na istniejących modelach i automatycznie wybierał odpowiedni model do danego zadania.
Zdecydowaliśmy się jednak tego nie robić z wielu powodów:
1. Przewidywalność
Większość naszych klientów - co zrozumiałe - oczekuje wiarygodnych i przewidywalnych wyników.
Idea dynamicznego routera modelu jest więc nieco przerażająca dla agentów wysokiego poziomu. Wprowadza kolejną warstwę nieprzewidywalności do LLMs.
2. Prędkość
Opóźnienie jest bardzo ważne dla naszych przypadków użycia. Aby router był szybki, model musi być bardzo mały (i prawdopodobnie głupszy) niż modele, do których będzie kierował - prawdopodobnie tradycyjny klasyfikator.
Chociaż generalnie radzą sobie dobrze, gdy są szkolone w zakresie określonych zadań, a) ich krótkie rozmiary kontekstu stanowią problem w przypadku długich podpowiedzi i b) nie generalizują na inne podpowiedzi poza tymi, na których zostały przeszkolone.
3. Modelowa supremacja lub modelowa równość
Choć benchmarki mogą twierdzić inaczej, w naturze rzadko widzieliśmy modele przewyższające GPT-4o (jak dotąd).
Wciąż nie jest jasne, czy LLMs rzeczywiście będzie z czasem osiągać lepsze wyniki w zadaniu X niż w zadaniu Y, czy też wszystkie LLMs będą w końcu wyjątkowo dobre w większości rzeczy. W przypadku tego drugiego, wybieranie modeli nie będzie warte wysiłku.
Przyszłościowe LLMs z informacją zwrotną
LLMs będzie towarem w ciągu kilku lat, a wybór modelu nie będzie miał znaczenia.
Z tych powodów zdecydowaliśmy się zainwestować nasz wysiłek w zapewnienie dobrego mechanizmu dostarczania przykładów LLMs .
Stworzyliśmy więc system do przechwytywania informacji zwrotnych. Przechowuje on "wnioski" do wykorzystania w przyszłości. I dynamicznie dostarcza najistotniejsze wnioski w czasie rzeczywistym dla przyszłych egzekucji, aby zapewnić niezawodne i ciągłe ulepszenia w czasie.
W miarę jak LLMs coraz bardziej zwiększa swoją wydajność, jesteśmy gotowi i podekscytowani, aby jak najlepiej wykorzystać je dla użytkowników naszej platformy.
Spis treści
Bądź na bieżąco z najnowszymi informacjami na temat agentów AI
Udostępnij to na: