Основна навигация

Насоки за проектиране на агентни системи

Практически насоки помагат на екипите да решат кое поведение на Агент да се реализира в езиков модел и кое изисква изричен софтуер.

Резюме

  • Важно е внимателно да обмислите как и къде се вземат решенията във вашата агентна система.

  • Възлагането на повече решения на големи езикови модели може да позволи на системата да се справя с повече задачи, но потенциално за сметка на скоростта, надеждността и устойчивостта.

  • Където е възможно, опитайте да изнесете възможно най-голяма част от процеса на вземане на решения от големи езикови модели в изричен програмен код. Това важи особено за високорискови и/или производствени работни процеси.

Въведение

При проектирането на агентна система, базирана на големи езикови модели, едно от най-важните решения е каква част от вземането на решения да бъде поверена на модел с големи езикови модели и каква — на изричен софтуер.

За по-лесно разбиране можем да разглеждаме този избор като спектър между следните подходи:

  • Архитектурите с маршрутизатор определят изрично последователността и логиката в кода, което осигурява възможност за тестване, предвидимост и устойчивост при задачи в тесни области (наричат се още „агенти за работни процеси“).

  • Агентите оркестратори разчитат на големи езикови модели, за да определят динамично хода на задачите чрез подкани на естествен език. Те са идеални за отворени взаимодействия, при които предварително зададената логика е недостатъчна или невъзможна.

Диаграма, илюстрираща въведението.

За високорискови производствени работни процеси обикновено препоръчваме повече функции, базирани на маршрутизатор, а оркестраторите да се запазят за приложения, изискващи гъвкави разговори с общо предназначение.

Маршрутизатор или оркестратор: каква е разликата

Архитектури с маршрутизатор

Агентните системи с маршрутизатор:

  • Определят изрично потока за вземане на решения чрез код или софтуер и използват големи езикови модели, за да изберат кой маршрут да следва софтуерът.

  • Приличат повече на традиционните софтуерни системи, тъй като имат ясни и предвидими пътища, които водят до по-последователни резултати.

  • Идеални са за задачи, които могат да бъдат строго дефинирани.

Следва опростен пример за Агент за резервации чрез чатбот на авиокомпания, който използва „подход с маршрутизатор“. Макар големите езикови модели да ни помагат да класифицираме намерението на въпроса сред три възможности, в крайна сметка софтуерът свързва това намерение с шаблонен текстов отговор. Тъй като големите езикови модели са силно ограничени, потребителят получава по-последователно поведение.

Диаграма, илюстрираща разликата между маршрутизатор и оркестратор.

Архитектури с оркестратор

За разлика от системите с маршрутизатор, агентните системи с оркестратор:

  • Определят логическите потоци чрез подкани на естествен език вместо чрез софтуер. Забележка: в сравнение с език за програмиране естественият език по своята същност е двусмислен и гъвкав — едновременно положителна и отрицателна характеристика, както ще обсъдим по-късно. Разглеждаме това като „намерение вместо инструкция“.

  • Могат да предложат множество възможности за обработка, като големите езикови модели определят реда и начина на изпълнение.

  • Могат динамично да създават нови логически пътища, които трудно се дефинират изрично в софтуер.

  • Тази двусмисленост може да доведе до непоследователни резултати, но когато подходът работи, усещането може да е „магическо“.

Следващият пример прилага подход с оркестратор към същия опростен проблем с авиокомпания. Вместо софтуерът да определя подходящия отговор, вземането на решения се възлага на слоя с големи езикови модели. Тук имаме многоагентна система, в която „главен“ Агент оркестратор преценява потребителското запитване и го предава на Агент, създаден специално за промяна на полети, който в крайна сметка отговаря на потребителя.

В този пример слоят с големи езикови модели изпълнява ролята на класификатор, маршрутизатор и автор на отговора. В примера с маршрутизатора той изпълняваше само ролята на класификатор, а софтуерът се грижеше за останалото.

Диаграма, илюстрираща разликата между маршрутизатор и оркестратор.

Предимства и предизвикателства на архитектурите с маршрутизатор

Където е възможно, препоръчваме подходи с маршрутизатор заради следните предимства:

  • Бързина и ефективност: Локалните изчисления са по-бързи от оркестраторите, зависещи от външни API. Освен това е много по-евтино да обработвате логиката „IF/ELSE“ в Python, отколкото да плащате на доставчик на големи езикови модели, за да я изпраща през своя модел с 400 милиарда параметъра.

  • Възможност за тестване и предвидимост: Значително по-лесно отстраняване на грешки, тестване и поддръжка чрез утвърдени софтуерни практики.

  • Прозрачност и надеждност: По-малките вариации в поведението улесняват отстраняването на проблеми. Освен това по-голяма част от потока на приложението е изразена чрез прозрачен софтуер с контрол на версиите, а не чрез непрозрачните и неразбираеми тегла на големи езикови модели.

Недостатъкът на подходите с маршрутизатор е, че могат да бъдат твърди и негъвкави и да се затрудняват с по-отворени проблеми. Потребителите може да сметнат чатбот, който винаги дава едни и същи отговори, за скучен и еднообразен.

Предимства и предизвикателства на архитектурите с оркестратор

Проектите с оркестратор предлагат мощни възможности:

  1. Планиране: Могат динамично да планират отговорите.

  2. Избор на инструмент/предаване към Агент: Избират подходящи инструменти или възлагат задачи на агенти.

  3. Итеративно комбиниране на резултати: Итеративно обработват и творчески съчетават резултатите.

  4. Определяне на завършеността: Преценяват кога е събрана достатъчно информация за окончателен отговор.

Рамки като Pydantic-AI или Agents SDK на OpenAI правят оркестрацията лесна и бърза за внедряване. Затова този подход е чудесен за демонстрации или доказване на концепция.

Недостатъците на този подход са следните:

  • Няма гаранция, че стъпките за планиране на големи езикови модели и последващите действия ще бъдат правилни или подходящи. Системата с маршрутизатор има същия проблем, но тъй като е по-ограничена, поведението ѝ е по-предвидимо.

  • За прости и добре дефинирани задачи едва ли са ни необходими всички възможности на многоагентна система. Например в примера ни с Агент за авиокомпания вероятно има само ограничен брой видове заявки, които човек би отправил към система за обслужване на клиенти на авиокомпания.

  • Тъй като в големи езикови модели се съдържа повече логика, злонамерени лица могат много по-лесно да извършат джейлбрейк или друга злоупотреба.

  • Подходът скрива вземането на решения в големи езикови модели и така затруднява разбирането на системата, макар инструменти за наблюдение като Langfuse или Braintrust да могат отчасти да помогнат.

Нашите насоки за проектиране на агентни системи

Бележка към читателя: въпреки че възможностите на моделите се променят бързо, изложеното по-долу едва ли ще се промени в близко бъдеще.

Разберете какви решения изисква приложението ви

Определете обхвата на проблема си.

  • Можете ли лесно да представите желаната логика за вземане на решения в диаграма?

  • Недопустими ли са за приложението ви неуспехите или неочакваното поведение?

Отговор „да“ на който и да е от тези въпроси подсказва, че функциите с маршрутизатор са по-подходящи.

Първо маршрутизатор, след това хибридни подходи

Където е възможно, препоръчваме да използвате подходи с маршрутизатор, докато са достатъчни. Общият принцип е: ако дадена част от системата може да се изрази в код, изразете я в код — не използвайте прекомерно големи езикови модели, когато не са необходими.

Когато тези подходи достигнат границите си, някои от предимствата на отворените оркестратори могат да бъдат възпроизведени по контролиран начин. Например:

  1. Избор на инструмент/предаване към Агент: Реализира се лесно чрез условни разклонения или класификатори с големи езикови модели.

  2. Определяне на завършеността: Прости класификатори с големи езикови модели могат да проверят дали отговорът е пълен, преди да го върнат на потребителя.

„Планирането“ и „итеративното комбиниране на резултати“ обаче несъмнено се постигат много по-трудно в строга система с маршрутизатор. Затова, когато дадена задача ги изисква — според класификатор с големи езикови модели или друга логика — предлагаме да създадете по-слабо ограничен клон с оркестратор в системата си.

Заключение и поглед към бъдещето

Изборът между архитектура с маршрутизатор и такава с оркестратор трябва да отразява яснотата и сложността на приложението ви, както и стила на взаимодействие. Понастоящем подходите с маршрутизатор предлагат надеждност, ефективност и лесно тестване при ясно дефинирани задачи. Оркестраторите предлагат по-голяма гъвкавост за по-широки разговорни взаимодействия.

С развитието на големи езикови модели балансът между тези подходи може да се промени. За производствени натоварвания предпочитаме архитектури с маршрутизатор или хибридни архитектури, а оркестраторите запазваме за отворени проблеми, изискващи динамично взаимодействие, наподобяващо човешкото.

Автор

Andrew Liubinas