ReAct Prompting (BG)
ReAct (съкр. от Reason + Act, в превод от англ. — „Разсъждавай и Действай") — това е парадигма за проектиране на заявки (промптинг) за големи езикови модели (LLM), която им позволява да решават сложни задачи чрез редуване на вербални разсъждения (мисли) и действия, взаимодействащи с външната среда[1]. Методът е предложен през 2022 г. от изследователи от Google Research и Принстънския университет и се е превърнал в фундаментален подход в развитието на интелигентни агенти.
Ключовата иновация на ReAct се състои в обединяването на логически разсъждения, характерни за техники от типа Chain-of-Thought (CoT), с изпълнение на външни действия, като търсене на информация или взаимодействие с програмни интерфейси (API). Това позволява на модела динамично да коригира своя план, да проверява факти и да преодолява ограниченията на собствените си, нерядко остарели или непълни знания[2].
Предпоставки и история на създаването
Преди появата на ReAct съществуваха два основни, но разобщени подхода за използване на LLM при решаване на сложни задачи:
- Верига на разсъжденията (Chain-of-Thought, CoT): Моделът генерира стъпка по стъпка логически разсъждения за решаване на задача, но го прави в „информационен вакуум", опирайки се единствено на вътрешните си знания. Това често води до фактически грешки и „халюцинации"[1].
- Планиране на действия (Act-Only): Моделът генерира последователност от действия за взаимодействие с външната среда (например в текстови игри), но без явно високо ниво на планиране. Подобни системи се справят слабо с грешки и не могат да адаптират стратегията си при сблъсък с непредвидени обстоятелства.
ReAct е създаден за синергично обединяване на силните страни на двата подхода. Той позволява на модела не само да разсъждава, но и да заземява своите разсъждения върху факти от външния свят, както и да адаптира действията си въз основа на получената обратна връзка.
Механизъм на работа: цикъл „Мисъл — Действие — Наблюдение"
ReAct работи в рамките на итеративен цикъл, включващ три ключови компонента. Моделът последователно генерира траектория, съставена от стъпките Thought, Action и Observation.
Пример за структура на промпт:
Въпрос: Каква е столицата на града, в който е роден изобретателят, известен с променливия ток?
Thought 1: Трябва да установя кой е изобретил променливия ток. След това да намеря мястото му на раждане и да проверя дали този град е столица.
Action 1: Search[изобретател на променлив ток]
Observation 1: Променливият ток (AC) е разработен и популяризиран от Никола Тесла.
Thought 2: Сега трябва да разбера къде е роден Никола Тесла.
Action 2: Search[място на раждане на Никола Тесла]
Observation 2: Никола Тесла е роден в селото Смиляни, Австрийска империя (днешна Хърватия).
Thought 3: Смиляни не е столица. Следователно въпросът няма еднозначен отговор в тази формулировка. Тесла обаче дълго е живял и работил в САЩ. Възможно е да се има предвид столицата на страната, където е направил главните си открития. Това е по-сложен въпрос. Трябва да констатирам факта въз основа на мястото на раждане. Градът, в който е роден, не е столица.
Final Answer: Изобретателят, свързан с променливия ток, Никола Тесла, е роден в Смиляни (Хърватия), който не е столица.
Мисъл (Thought)
Моделът генерира вътрешно разсъждение, в което анализира задачата, я декомпозира на подзадачи, формира или коригира план за действие и оценява текущото състояние. Тази стъпка не влияе на външната среда, но служи за вътрешно планиране.
Действие (Action)
Въз основа на своето разсъждение моделът извършва външно действие, обръщайки се към един от наличните инструменти. Примери за действия:
- Search [заявка] — за търсене на информация в база от знания (например Уикипедия).
- Click [елемент] — за навигация по уеб страница.
- API_call [параметри] — за извикване на външен API.
Наблюдение (Observation)
Системата или външният инструмент изпълнява действието и връща резултат (наблюдение). Това може да бъде фрагмент от текст, отговор от API или съобщение за грешка. Моделът използва това наблюдение за формиране на следващата мисъл, затваряйки цикъла на обратна връзка[2].
Експериментални резултати и ефективност
Авторите на ReAct са тествали метода върху широк спектър от задачи, демонстрирайки неговото превъзходство над подходите CoT и Act-Only.
| Benchmark | Задача | ReAct (успех/точност) | Chain-of-Thought (успех/точност) | Act-Only (успех/точност) |
|---|---|---|---|---|
| FEVER | Проверка на факти | 87.6% | 82.8% | 70.1% |
| HotpotQA | Въпроси с множество преходи | 31.8% | 36.3% | 17.0% |
| ALFWorld | Текстова игра (планиране) | 71% | 10% | 13% |
| WebShop | Уеб навигация | 40% | - | 30.1% |
- При задачи, изискващи проверка на факти (FEVER), ReAct значително превъзхожда CoT, тъй като може да верифицира информацията.
- При задачи за интерактивно планиране (ALFWorld, WebShop) ReAct демонстрира огромно предимство, тъй като може да се адаптира към променяща се среда.
- При задачи за чисто разсъждение (HotpotQA), CoT може да показва сравними или дори по-добри резултати. Въпреки това хибридният подход ReAct+CoT показа най-добра производителност, достигайки 35% при HotpotQA[1].
Критика и ограничения
Независимо от своята ефективност, ReAct има редица ограничения и уязвимости.
- „Крехкост" (Brittleness): По-късни изследвания показват, че успехът на ReAct може да е свързан не толкова с истинска синергия между разсъждение и действие, колкото със синтактичното сходство между примерите в промпта и текущата задача. Моделът може да следва шаблона `Thought-Action-Observation`, без да разбира напълно семантиката на разсъжденията[3].
- Изчислителни разходи: Всеки цикъл на ReAct изисква поне едно извикване на LLM и едно обръщение към външен инструмент, което го прави бавен и скъпоструващ в сравнение със стандартния промптинг.
- Зависимост от инструменти: Ефективността на агента пряко зависи от качеството и надеждността на наличните инструменти. Некоректен или зашумен отговор от API може да насочи разсъжденията на модела по погрешен път.
Значение и по-нататъшно развитие
ReAct се превърна във важна крачка в развитието на ИИ, бележейки прехода от генеративни системи към агентни системи. Той постави концептуалната и практическата основа за повечето съвременни framework-ове за създаване на агенти, като:
- LangChain
- LlamaIndex
- AutoGen
Идеите на ReAct послужиха като отправна точка за по-сложни архитектури на разсъждения, като Reflexion (добавя цикъл на саморефлексия след неуспехи) и Tree of Thoughts (ToT) (изследва няколко пътя на разсъждение паралелно).
Препратки
- Официална страница на проекта ReAct
- Описание на ReAct в ръководството Learn Prompting
- Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.
Литература
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
- Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
- Shinn, N. et al. (2023). Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366.
- Verma, V. et al. (2024). On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models. arXiv:2405.13966.
- Yao, S. et al. (2022). WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. arXiv:2207.01206.
- Shridhar, M. et al. (2020). ALFWorld: Aligning Text and Embodied Environments for Interactive Learning. arXiv:2010.03768.
- Qin, L. et al. (2023). AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Collaboration. arXiv:2308.08155.
- Thorne, J. et al. (2018). FEVER: A Large-Scale Dataset for Fact Extraction and Verification. arXiv:1803.05355.
- Yang, Z. et al. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600.
Бележки
- ↑ 1.0 1.1 1.2 1.3 Yao, S., Zhao, J., Yu, D., et al. (2022). «ReAct: Synergizing Reasoning and Acting in Language Models». arXiv preprint arXiv:2210.03629. [1]
- ↑ 2.0 2.1 «ReAct: Synergizing Reasoning and Acting in Language Models». Google Research Blog. [2]
- ↑ Verma, V., et al. (2024). «On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models». arXiv preprint arXiv:2405.13966. [3]