ai-agents-for-beginners

Контекстно инженерство за AI агенти

Контекстно инженерство

(Кликнете върху изображението по-горе, за да гледате видеото на този урок)

Разбирането на сложността на приложението, за което изграждате AI агент, е важно за създаването на надежден такъв. Трябва да изграждаме AI агенти, които ефективно управляват информацията, за да отговорят на комплексни нужди извън пределите на prompt инженерството.

В този урок ще разгледаме какво е контекстното инженерство и ролята му в изграждането на AI агенти.

Въведение

Този урок ще обхване:

Какво е контекстно инженерство и защо то се различава от prompt инженерството.

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

Чести неуспехи в контекста, които могат да провалят вашия AI агент и как да ги поправите.

Цели на обучението

След завършването на този урок, ще разбирате как да:

Дефинирате контекстно инженерство и да го различавате от prompt инженерството.

Идентифицирате ключовите компоненти на контекста в приложения с големи езикови модели (LLM).

Прилагате стратегии за писане, подбор, компресиране и изолиране на контекста, за да подобрите представянето на агента.

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

Какво е контекстно инженерство?

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

Prompt инженерство срещу контекстно инженерство

Prompt инженерството се фокусира върху един набор от статични инструкции, за да ръководи ефективно AI агенти с набор от правила. Контекстното инженерство е управлението на динамичен набор от информация, включително началния prompt, за да се гарантира, че AI агентът има необходимото с течение на времето. Основната идея на контекстното инженерство е този процес да бъде повторяем и надежден.

Видове контекст

Видове контекст

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

Видовете контекст, които AI агент може да трябва да управлява, включват:

Инструкции: Те са като „правилата“ на агента – prompts, системни съобщения, few-shot примери (показват на AI как да направи нещо) и описания на инструменти, които може да използва. Това е мястото, където фокусът на prompt инженерството се обединява с контекстното инженерство.

Знания: Това обхваща факти, информация извлечена от бази данни или дълготрайни спомени, които агентът е натрупал. Включва интегриране на Retrieval Augmented Generation (RAG) система, ако агентът се нуждае от достъп до различни хранилища на знания и бази данни.

Инструменти: Това са дефинициите на външни функции, APIs и MCP сървъри, които агентът може да извиква, заедно с обратната връзка (резултатите), която получава от тях.

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

Потребителски предпочитания: Информация за предпочитания или отвращения на потребителя, научена с времето. Те могат да се съхраняват и използват при вземане на ключови решения в помощ на потребителя.

Стратегии за ефективно контекстно инженерство

Стратегии за планиране

Най-добри практики в контекстното инженерство

Добро контекстно инженерство започва с добро планиране. Ето един подход, който ще ви помогне да започнете да мислите как да приложите концепцията за контекстно инженерство:

  1. Определете ясни резултати – Резултатите от задачите, възложени на AI агенти, трябва да са ясно дефинирани. Отговорете на въпроса - „Какъв ще е светът, когато AI агентът приключи задачата си?“ Други думи, каква промяна, информация или отговор трябва да има потребителят след взаимодействие с AI агента.
  2. Картографирайте контекста – След като сте дефинирали резултатите на AI агента, трябва да отговорите на въпроса „Каква информация е нужна на AI агента, за да изпълни тази задача?“. По този начин можете да започнете да картографирате контекста къде може да се намира тази информация.
  3. Създайте контекстни потоци – Сега, когато знаете къде е информацията, трябва да отговорите на въпроса „Как агентът ще получи тази информация?“. Това може да стане по различни начини, включително RAG, използване на MCP сървъри и други инструменти.

Практически стратегии

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

Управление на контекста

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

  1. Бележник на агента Това позволява на AI агента да води бележки с релевантна информация за текущите задачи и взаимодействия с потребителите по време на една сесия. Той трябва да съществува извън контекстния прозорец в файл или обект по време на изпълнение, който агентът може да извлече по-късно в тази сесия, ако е необходимо.

  2. Спомени Бележниците са добри за управление на информация извън контекстния прозорец на една сесия. Спомените позволяват на агентите да съхраняват и извличат релевантна информация през множество сесии. Това може да включва резюмета, потребителски предпочитания и обратна връзка за подобрения в бъдеще.

  3. Компресиране на контекста Когато контекстният прозорец расте и се доближава до лимита си, могат да се използват техники като обобщаване и изрязване. Това включва да се запази само най-релевантната информация или да се премахнат по-старата комуникация.

  4. Мулти-агентски системи Разработването на мулти-агентски системи е форма на контекстно инженерство, защото всеки агент има свой собствен контекстен прозорец. Как този контекст се споделя и предава на различни агенти е друго нещо, което трябва да се планира при изграждането на тези системи.

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

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

Проверка на контекста

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

Зареди ли агентът твърде много контекст, грешен контекст или пропусна важен контекст?

Не е нужно да логвате сурови prompts, резултати от инструменти или съдържание на спомени, за да отговорите на този въпрос. В продукция предпочитайте малки записи за инспекция на контекста, които улавят брой, идентификатори, хешове и етикети на политики:

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

Пример за контекстно инженерство

Да кажем, че искаме AI агент да “Резервира пътуване до Париж.”

• Прост агент, използващ само prompt инженерство, може просто да отговори: “Добре, кога искате да отидете в Париж?” Той обработва само директния ви въпрос в момента, в който потребителят пита.

• Агент, използващ стратегии за контекстно инженерство, описани по-горе, би направил много повече. Преди да отговори, неговата система може да:

  ◦ Провери вашия календар за налични дати (извличане на данни в реално време).

 ◦ Възпроизведе предишни предпочитания за пътуване (от дългосрочната памет), като предпочитана авиокомпания, бюджет или дали предпочитате директни полети.

 ◦ Идентифицира налични инструменти за резервации на полети и хотели.

Чести неуспехи в контекста

Отравяне на контекста

Какво е: Когато халюцинация (фалшива информация, генерирана от LLM) или грешка влязат в контекста и се препращат многократно, карайки агента да преследва невъзможни цели или да развива безсмислени стратегии.

Какво да правите: Прилагайте валидиране на контекста и карантина. Валидирайте информацията преди да се добави в дългосрочната памет. Ако се открие потенциално отравяне, стартирайте нови нишки на контекста, за да предотвратите разпространение на лошата информация.

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

Решение: Включете стъпка, която валидира съществуването на полети и маршрути с реално време API преди да добавите подробностите за полета в работния контекст на агента. Ако валидацията се провали, грешната информация се “карантинира” и не се използва повече.

Разсейване в контекста

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

Какво да правите: Използвайте обобщаване на контекста. Периодично компресирайте натрупаната информация в по-кратки резюмета, като запазвате важните детайли и премахвате излишната история. Това помага за „рестартиране“ на фокуса.

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

Решение: След определен брой ходове или когато контекстът стане твърде голям, агентът трябва да обобщи най-новата и релевантна част от разговора – съсредоточавайки се върху текущите ви дати на пътуване и дестинация – и да използва това кондензирано резюме за следващото повикване на LLM, като изхвърля по-малко важната историческа чат комуникация.

Объркване на контекста

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

Какво да правите: Прилагайте управление на натоварването от инструменти чрез RAG техники. Съхранявайте описания на инструментите в векторна база данни и избирайте само най-релевантните инструменти за всяка конкретна задача. Изследвания показват, че е добре броят на избраните инструменти да е под 30.

Пример с резервация на пътуване: Вашият агент има достъп до десетки инструменти: book_flight, book_hotel, rent_car, find_tours, currency_converter, weather_forecast, restaurant_reservations и др. Вие питате, „Кой е най-добрият начин да се придвижвам в Париж?“ Поради големия брой инструменти, агентът се обърква и се опитва да извика book_flight в рамките на Париж, или rent_car въпреки че предпочитате обществения транспорт, защото описанията на инструментите могат да се припокриват или агентът просто не може да определи най-добрия.

Решение: Използвайте RAG по описанията на инструментите. Когато попитате за придвижване в Париж, системата динамично извлича само най-релевантните инструменти като rent_car или public_transport_info въз основа на вашето запитване, предоставяйки фокусиран „набор“ от инструменти на LLM.

Конфликт в контекста

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

Какво да правите: Използвайте подрязване на контекста и изнасяне. Подрязването означава премахване на остаряла или противоречива информация при пристигане на нови данни. Изнасянето дава на модела отделно работно поле „бележник“, за да обработва информация без да задръства основния контекст.

Пример за резервация на пътуване: Първоначално казвате на агента си, “Искам да летя в икономична класа.” По-късно в разговора променяте мнението си и казвате, “Всъщност, за това пътуване, нека да изберем бизнес класа.” Ако и двете инструкции останат в контекста, агентът може да получи противоречиви резултати от търсенето или да се обърка коя предпочитания да приоритизира.

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

Имате още въпроси относно инженерството на контекста?

Присъединете се към Microsoft Foundry Discord, за да се срещнете с други обучаващи се, да посетите работни срещи и да получите отговори на въпросите си за AI агентите.

Предходен урок

Agentic Protocols

Следващ урок

Memory for AI Agents


Отказ от отговорност: Този документ е преведен с помощта на AI преводачески услуга Co-op Translator. Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.