Modele i platformy AI

OpenAgents: Otwarta platforma dla agentów językowych w środowisku

mm
Dodaj Unite.AI do preferowanych źródeł w Google

Ostatnie rozwoje pokazały, że agenci językowi, w szczególności ci zbudowani na dużych modelach językowych (LLM), mają potencjał do wykonywania szerokiej gamy złożonych zadań w różnych środowiskach przy użyciu języka naturalnego. Jednak główny focus większości obecnych ram agentów językowych koncentruje się na ułatwieniu budowy prototypowych agentów językowych. Ten focus często wiąże się z brakiem uwagi do projektów na poziomie aplikacji i często ignoruje dostępność tych agentów dla użytkowników niebędących ekspertami.

Aby przezwyciężyć obecne ograniczenia doświadczane przez agenty językowe, deweloperzy stworzyli ramę OpenAgents, otwartą platformę do hostowania i wdrożenia agentów językowych w środowisku i w różnych codziennych zadaniach. Rama OpenAgents jest zbudowana wokół trzech agentów

  • Agent danych: Pomaga w analizie danych przy użyciu narzędzi do danych i języków zapytań, takich jak SQL, lub języków programowania, takich jak Python.
  • Agenci wtyczek: Pomaga, zapewniając dostęp do ponad 200+ narzędzi API przydatnych do codziennych zadań.
  • Agenci sieciowi: Pomaga w przeglądaniu sieci, utrzymując anonimowość.

Rama OpenAgents wykorzystuje interfejs użytkownika zoptymalizowany dla wspólnych błędów i szybkich odpowiedzi w celu umożliwienia ogólnym użytkownikom interakcji z funkcjonalnościami agenta, jednocześnie oferując badaczom i deweloperom bezproblemowe wdrożenie na ich lokalnych konfiguracjach. Można powiedzieć, że rama OpenAgents jest próbą stworzenia solidnej podstawy dla ułatwienia ocen świata rzeczywistego i tworzenia innowacyjnych, skutecznych i zaawansowanych agentów językowych.

W dzisiejszym artykule, będziemy się głębiej zajmowali ramą OpenAgents, i porozmawiamy o ramie w większych szczegółach. Będziemy rozmawiać o działaniu i architekturze ramy, a także o wspólnych wyzwaniach i wynikach. Zatem, zacznijmy.

OpenAgents i agenci językowi: Wprowadzenie

Agenci językowi, w swojej istocie, są pochodnymi inteligentnych agentów. Te inteligentne agenci są pojęciowe, aby posiadać autonomiczne zdolności rozwiązywania problemów, wraz z możliwością postrzegania ich środowiska, podejmowania decyzji i działań zgodnie z nimi. Z postępami w dużych modelach językowych, globalna społeczność developerska wykorzystała pojęcie inteligentnych agentów i LLM, aby stworzyć agenty językowe. Te agenci wykorzystują programowanie języka naturalnego (NLP), aby wykonywać szeroką gamę złożonych zadań w różnych środowiskach i ostatnio wykazały znaczący potencjał.

Obecne ramy agentów językowych, takie jak Gravitas i Chase, głównie zapewniają interfejs konsoli dostosowany do deweloperów, wraz z implementacjami prototypowymi. Jednak często ograniczają dostęp do szerszej publiczności, szczególnie tych, którzy nie są biegli w kodowaniu. Dodatkowo, obecne benchmarki agentów są konstruowane przez deweloperów z określonymi wymaganiami dla deterministycznej oceny, szczególnie w sytuacjach, które wymagają przeglądania sieci, kodowania, wykorzystania narzędzi lub kombinacji tych elementów.

W celu rozwoju LLM-zasilanych inteligentnych i agentów językowych dla szerszej bazy użytkowników, uznani gracze, tacy jak OpenAI i Microsoft (MSFT ), wdrożyli szereg dobrze zaprojektowanych produktów, w tym zaawansowaną analizę danych, również zwaną interpreterem kodu, i wtyczki przeglądarki. Chociaż te agenci są skuteczni w swoich funkcjach, oferują one ograniczoną pomoc społeczności developerskiej. To ograniczenie wynika z faktu, że logika biznesowa i implementacje modeli nie zostały udostępnione, utrudniając deweloperom i badaczom dalsze eksplorowanie ich, a także ograniczając swobodny dostęp dla użytkowników.

W celu rozwiązania tego problemu, deweloperzy stworzyli OpenAgents, otwartą platformę do hostowania i korzystania z agentów, i obecnie jest zbudowana na fundamencie trzech wewnętrznych agentów

  • Agent danych: Pomaga w analizie danych przy użyciu narzędzi do danych i języków zapytań, takich jak SQL, lub języków programowania, takich jak Python.
  • Agenci wtyczek: Pomaga, zapewniając dostęp do ponad 200+ narzędzi API przydatnych do codziennych zadań.
  • Agenci sieciowi: Pomaga w przeglądaniu sieci, utrzymując anonimowość.

Poniższy rysunek demonstruje platformę OpenAgents dla ogólnych użytkowników, deweloperów i badaczy.

  1. Zamiast korzystania z programu lub konsoli, ogólni użytkownicy mogą wchodzić w interakcje z trzema agentami w ramie OpenAgents przy użyciu interfejsu sieciowego.
  2. Deweloperzy mogą korzystać z logiki biznesowej i kodu badawczego dostarczonego przez ramę OpenAgents, aby bezproblemowo wdrożyć backend i frontend do dalszych rozwojów.
  3. Badacze mają elastyczność budowania nowych agentów językowych od podstaw lub wdrażania metod związanych z agentami przy użyciu współdzielonych komponentów i przykładów, a także oceny ich wydajności przy użyciu interfejsu sieciowego.

Podsumowując, rama OpenAgents jest pierwotnie przeznaczona do być holistyczną i realistyczną platformą do oceny agentów językowych, która pozwala użytkownikom wchodzić w interakcje z tymi agentami, aby wykonać szeroką gamę zadań, a te interakcje użytkowników i opinie są przechowywane i analizowane do dalszych rozwojów i ocen.

Dla tych, którzy nie wiedzą, LLM prompting jest procesem, który pozwala deweloperom tworzyć instrukcje, które zabezpieczają przed niepożądanymi lub błędnymi wejściami, poprawiają estetykę wyjścia i dostosowują się do logiki backendu. Podczas fazy rozwoju, deweloperzy pracujący nad ramą OpenAgents wykorzystują technikę LLM prompting, aby podkreślić znaczenie skutecznego określania wymagań aplikacji. Jednak deweloperzy szybko zauważyli, że budowa tych instrukcji lub LLM promptów może być znacząca i może wpłynąć na zdolności agentów LLM do obsługi kontekstu, a także ograniczenia tokenów. Deweloperzy również zauważyli, że aby wdrożyć te agenty skutecznie w świecie rzeczywistym, modele agentów powinny nie tylko wykazywać wyjątkową wydajność, ale także być w stanie radzić sobie z szeroką gamą interaktywnych scenariuszy w czasie rzeczywistym. Chociaż obecne ramy agentów mają pokryte wydajność, często ignorują rozważania świata rzeczywistego, szczególnie w czasie rzeczywistym, co często przesłania prawdziwy potencjał ram LLM, wymieniając responsywność lub dokładność.

Na poniższym rysunku, porównujemy ramę OpenAgents bezpośrednio z istniejącymi pracami na benchmarkach agentów i budowaniu prototypów.

OpenAgents: Projekt i wdrożenie platformy

Systematyczny projekt lub architektura platformy OpenAgents można podzielić na dwa główne komponenty: Interfejs użytkownika, w tym zarówno backend, jak i frontend, oraz Agent językowy, składający się z narzędzi, modeli językowych i środowisk. Rama OpenAgents zapewnia interfejs do komunikacji między użytkownikami a agentami. Przepływ interakcji w ramie jest następujący.

Agenci wykorzystują dostępne narzędzia, aby zaplanować i wykonać wymagane akcje w środowiskach, gdy tylko otrzymają dane wejściowe od użytkowników. Architektura lub systematyczny projekt ramy jest demonstrowany na poniższym rysunku.

Interfejs użytkownika

Deweloperzy ramy OpenAgents położyli duży nacisk na stworzenie nie tylko funkcjonalnego, ale także przyjaznego interfejsu użytkownika, po przezwyciężeniu dużej ilości agentów i ponownie wykorzystywanej logiki biznesowej. W efekcie, rama OpenAgents może pochwalić się wsparciem dla szerokiej gamy zadań technicznych, w tym obsługi błędów, operacji serwera backendu, przesyłania strumieniowego danych i wielu innych, z głównym celem, aby uczynić ramę OpenAgents przyjazną, ale również wysoce skuteczną i użyteczną.

Agent językowy

W ramie OpenAgents, agent językowy składa się z trzech podstawowych komponentów: interfejsu narzędzi, modelu językowego i samego środowiska. Metoda promptingu wdrożona w ramie OpenAgents tworzy sekwencyjny proces dla agentów, który zaczyna się od Obserwacji -> Deliberacji -> Akcji. Rama również nakazuje LLM generować tekst parsowalny z zwiększoną wydajnością, a interfejs narzędzi składa się z parserów, które mogą tłumaczyć teksty parsowalne wygenerowane przez LLM na wykonywalne akcje, takie jak wywołania API lub generowanie kodu. Te akcje są następnie wykonywane przez ramę w granicach odpowiedniego środowiska.

Agenci OpenAgents

W sercu OpenAgents znajdują się trzy odrębne agenty: Agent danych, który pomaga w analizie danych przy użyciu narzędzi do danych i języków zapytań, takich jak SQL, lub języków programowania, takich jak Python, Agenci wtyczek, które pomagają, zapewniając dostęp do ponad 200+ narzędzi API przydatnych do codziennych zadań, i Agenci sieciowi, które pomagają w przeglądaniu sieci, utrzymując anonimowość. Te agenty mają indywidualne doświadczenie w dziedzinie, podobne do wtyczek ChatGPT, jednak w odróżnieniu od ChatGPT, implementacja na OpenAgents jest oparta wyłącznie na otwartym języku API.

Agent danych

Agent danych w ramie OpenAgents został zaprojektowany i wdrożony w taki sposób, aby radzić sobie z szeroką gamą zadań związanych z danymi, które użytkownicy końcowi spotykają na co dzień. Agent danych obsługuje generowanie i wykonywanie kodu w dwóch językach programowania: SQL i Python, a agent również ma do dyspozycji kilka narzędzi do danych, w tym Profiling danych do zapewnienia podstawowych informacji o danych, Wyszukiwanie danych Kaggle do wyszukiwania zestawów danych, i Narzędzie ECharts do tworzenia interaktywnych wykresów ECharts. Ponadto, rama OpenAgents nakazuje agentowi danych, aby proaktywnie wykorzystywać te narzędzia, aby skutecznie odpowiedzieć na żądania użytkowników końcowych. Dodatkowo, biorąc pod uwagę wyczerpujące wymagania kodowania, rama OpenAgents wybiera wbudowane modele językowe dla agenta danych, i zamiast generowania kodu przez agenta, są to narzędzia, takie jak Python, ECharts i SQL, które generują kod. Dzięki temu podejściu, rama jest w stanie w pełni wykorzystać możliwości modeli językowych i zmniejszyć obciążenie agenta danych.

Z pomocą tych narzędzi do danych, agent danych jest w stanie zarządzać licznymi żądania związanymi z danymi, i wykonuje wizualizację, manipulację i zapytania danych w sposób wydajny, przekraczając granice generowania kodu i tekstu. Poniższy rysunek przedstawia agenta danych w działaniu i dostępne narzędzia dla ogólnych użytkowników.

Agenci wtyczek

Agent wtyczek w ramie OpenAgents został starannie zaprojektowany przez deweloperów, aby zaspokoić wielowymiarowe wymagania użytkowników do codziennych zadań, w tym wyszukiwania w sieci, zakupów online, czytania wiadomości, tworzenia stron internetowych i aplikacji, zapewniając dostęp do ponad 200 wtyczek, z uwzględnieniem szczególnego uwagi na interfejs wywołania funkcji, pingi API i długości odpowiedzi API. Niektóre z wybitnych wtyczek obejmują

  1. Wyszukiwarka Google
  2. Wolfram Alpha
  3. Zapier
  4. Klarna
  5. Coursera
  6. Pokaż mi
  7. Mów
  8. Zapytaj mój PDF
  9. BizTok
  10. Klook

Na podstawie swoich potrzeb i wymagań, użytkownicy mogą wybrać liczbę wtyczek, które chcą, aby agenci wtyczek wykorzystali, a sposób działania jest przedstawiony na poniższym rysunku.

Ponadto, aby pomóc użytkownikom w sytuacjach, w których nie są pewni, jaka wtyczka najlepiej odpowiada ich wymaganiom, rama OpenAgents oferuje użytkownikom funkcję, która automatycznie wybiera wtyczki najbardziej odpowiednie do ich instrukcji.

Agenci sieciowi

Rama OpenAgents przedstawia agenta sieciowego jako specjalistyczne narzędzie, którego zadaniem jest zwiększenie wydajności i możliwości agenta czatu. Chociaż agent czatu nadal posiada główny interfejs interakcji, płynnie integruje agenta sieciowego, gdy jest to konieczne. Ostateczna odpowiedź jest następnie dostarczona użytkownikowi końcowemu przez agenta sieciowego, a proces jest ilustrowany na poniższym rysunku.

Strategia projektowa wdrożona w tych agentach sieciowych okazuje się być bardzo korzystna, ponieważ agent czatu przetwarza ważne parametry lub inicjuje adresy URL w sposób systematyczny, zanim zostaną one przekazane do agenta sieciowego, co gwarantuje lepsze dopasowanie między wymaganiami użytkownika a wygenerowanym wyjściem, co skutkuje klarowną komunikacją. Ponadto, strategia ta pozwala również agentom sieciowym na dostosowanie się do warstwowych i adaptacyjnych zapytań użytkowników, wykorzystując dynamiczną, wieloobrotową nawigację sieciową w połączeniu z dialogami czatu. Dlatego, wyznaczając role i odpowiedzialności agentów czatu i wieloobrotowych agentów sieciowych w sposób wyraźny, rama OpenAgents umożliwia udoskonalenie i ewolucję każdego modułu.

OpenAgents: Praktyczne zastosowania i wdrożenie w świecie rzeczywistym

W tej sekcji, będziemy rozmawiać o trajektorii ramy OpenAgents od teorii do wdrożenia w świecie rzeczywistym, wraz z wyzwaniami, które się pojawiły, i wnioskami wyciągniętymi wraz z złożonością oceny, z którą zmagali się deweloperzy.

Wykorzystanie promptów do przekształcenia dużych modeli językowych w aplikacje świata rzeczywistego

Podczas korzystania z promptów LLM do budowy aplikacji świata rzeczywistego dla użytkowników końcowych, rama OpenAgents wykorzystuje instrukcje promptów, aby określić pewne wymagania. Celem niektórych instrukcji jest zapewnienie, aby wyjście było zgodne z określonym formatem, co pozwala logice backendu na przetworzenie, podczas gdy celem innych instrukcji jest poprawienie estetyki wyjścia, a reszta chroni ramę przed potencjalnymi atakami.

Niekontrolowane czynniki świata rzeczywistego

Gdy deweloperzy wdrożyli ramę OpenAgents w świecie rzeczywistym, spotkali się z szeregiem niekontrolowanych czynników świata rzeczywistego, wywołanych przez infrastrukturę sieciową, użytkowników, logikę biznesową i wiele innych. Te niekontrolowane czynniki zmusiły deweloperów do ponownej oceny i dostosowania niektórych założeń na podstawie wcześniejszych badań, co mogło ostatecznie prowadzić do sytuacji, w których użytkownicy końcowi nie będą zadowoleni z odpowiedzi generowanej przez ramę.

Złożoność oceny

Chociaż agenci zbudowani bezpośrednio do aplikacji mogą mieć szersze zastosowanie i ułatwić ocenę, dodaje to do złożoności budowy aplikacji zasilanych przez LLM, co utrudnia analizę wydajności aplikacji. Ponadto, ten podejście dodaje również do niestabilności i rozszerza łańcuch systemu LLM, co utrudnia ramie adaptację do różnych komponentów. Dlatego też ma sens, aby udoskonalić projekt systemu i logiki operacyjnej tych agentów, aby uprościć procedury i zapewnić skuteczne wyjście.

Końcowe myśli

W tym artykule, rozmawialiśmy o ramie OpenAgents, otwartej platformie do hostowania i wdrożenia agentów językowych w środowisku i w różnych codziennych zadaniach. Rama OpenAgents jest zbudowana wokół trzech agentów: agenta danych, który pomaga w analizie danych przy użyciu narzędzi do danych i języków zapytań, takich jak SQL, lub języków programowania, takich jak Python, agentów wtyczek, które pomagają, zapewniając dostęp do ponad 200+ narzędzi API przydatnych do codziennych zadań, i agentów sieciowych, które pomagają w przeglądaniu sieci, utrzymując anonimowość. Rama OpenAgents wykorzystuje interfejs użytkownika zoptymalizowany dla wspólnych błędów i szybkich odpowiedzi, aby umożliwić ogólnym użytkownikom interakcje z funkcjonalnościami agenta, jednocześnie oferując badaczom i deweloperom bezproblemowe wdrożenie na ich lokalnych konfiguracjach. Poprzez zapewnienie przejrzystej, holistycznej i wdrożonej platformy, OpenAgents dąży do tego, aby potencjał LLM był dostępny dla szerszego zakresu użytkowników, nieograniczonych do badaczy i deweloperów, ale także użytkowników końcowych z ograniczonymi umiejętnościami technicznymi.

Kunal Kejriwal jest inżynierem backendu specjalizującym się w Pythonie, PostgreSQL, Redis oraz infrastrukturze chmurowej w GCP i AWS. Z trzyletnim doświadczeniem w budowaniu i skalowaniu systemów produkcyjnych pisze o infrastrukturze AI, systemach rozproszonych i architekturze wdrażania obciążeń uczenia maszynowego.