# Понимание AI Агентов через цикл Мысль - Действие - Наблюдение.

В предыдущих разделах мы узнали:

- **Как инструменты становятся доступны агенту в системной подсказке**.
- **Как AI агенты являются системами, которые могут 'рассуждать', планировать и взаимодействовать с окружающей средой**.

В этом разделе **мы рассмотрим рабочий процесс агента AI полностью**, цикл, который мы определили как "Мысль - Действие - Наблюдение". 

А затем мы углубимся в каждый из этих этапов.

## Основные компоненты

Агенты работают в непрерывном цикле: **думать (Мысль) → действовать (Действие) и наблюдать (Наблюдение)**.

Давайте разложим эти действия на составляющие:

1. **Мысль**: LLM-часть Агента решает, каким должен быть следующий шаг.
2. **Действие:** Агент выполняет действие, вызывая инструменты с соответствующими аргументами.
3. **Наблюдение:** Модель размышляет над ответом, полученным от инструмента.

## Цикл "Мысль-Действие-Наблюдение"

Все три компонента работают вместе в непрерывном цикле. Если воспользоваться аналогией из программирования, агент использует **цикл while**: цикл продолжается до тех пор, пока не будет выполнена поставленная перед агентом задача.

Визуально это выглядит следующим образом:

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

В упрощенном варианте наша системная подсказка может выглядеть следующим образом:

Здесь мы видим, что в системном сообщении мы определили :

- *Поведение Агента*.
- *Инструменты, к которым имеет доступ наш Агент*, как мы описали в предыдущем разделе.
- Цикл *Мысль-Действие-Наблюдение*, который мы заложили в инструкции LLM.

Давайте рассмотрим небольшой пример, чтобы понять суть процесса, прежде чем углубляться в каждый его шаг.

## Альфред, Агент сообщающий погоду

Мы создали Альфреда, погодного агента.

Пользователь спрашивает Альфреда: «Какая сегодня погода в Нью-Йорке?».

Задача Альфреда - ответить на этот запрос, используя инструмент API погоды. 

Вот как выглядит этот цикл:

### Мысль

**Внутренние рассуждения:**

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

*"Пользователю нужна текущая информация о погоде в Нью-Йорке. У меня есть доступ к инструменту, который получает данные о погоде. Сначала мне нужно обратиться к API погоды, чтобы получить актуальную информацию."*

Этот шаг показывает, что агент разбивает проблему на этапы: сначала собирает необходимые данные.

### Действие

**Использование инструмента:**.

Основываясь на своих рассуждениях и на том факте, что Альфред знает об инструменте `get_weather`, Альфред подготавливает команду в формате JSON, которая вызывает инструмент API погоды. Например, его первым действием может быть:

Мысль: Мне нужно проверить текущую погоду в Нью-Йорке.

 ```
    {
      "action": "get_weather",
      "action_input": {
        "location": "New York"
      }
    }
 ```

Здесь действие четко указывает, какой инструмент следует вызвать (например, get_weather) и какой параметр передать ("location": "New York").

### Наблюдение

**Обратная связь от окружающей среды:**.

После вызова инструмента Альфред получает наблюдение. Это могут быть необработанные данные о погоде из API, например:

*"Текущая погода в Нью-Йорке: частично облачно, 15°C, влажность 60%."*

Это наблюдение затем добавляется к подсказке в качестве дополнительного контекста. Оно функционирует как обратная связь в реальном мире, подтверждая успешность действия и предоставляя необходимые детали.

### Обновленная мысль

**Рефлексия:**

Получив данные наблюдения, Альфред обновляет свои внутренние рассуждения:

*"Теперь, когда у меня есть данные о погоде в Нью-Йорке, я могу подготовить ответ для пользователя."*

### Финальное Действие

Затем Алфред генерирует окончательный ответ, отформатированный так, как мы ему сказали:

Мысль: У меня есть данные о погоде. Текущая погода в Нью-Йорке частично облачная, температура 15 °C и влажность 60 %».

Окончательный ответ : Текущая погода в Нью-Йорке частично облачно с температурой 15 °C и влажностью 60 %.

Это заключительное действие возвращает ответ пользователю, закрывая цикл.

Что мы видим в этом примере:

- **Агенты проходят цикл до тех пор, пока цель не будет достигнута:**

**Процесс Альфреда цикличен**. Он начинает с мысли, затем действует, вызывая инструмент, и, наконец, наблюдает за результатом. Если бы наблюдение показало ошибку или неполноту данных, Альфред мог бы снова войти в цикл, чтобы скорректировать свой подход.

- **Интеграция инструментов:**

Способность вызывать инструменты (например, API погоды) позволяет Альфреду выходить **за пределы статических знаний и получать данные в реальном времени**, что является важным аспектом многих AI Агентов.

- **Динамическая адаптация:**

Каждый цикл позволяет агенту включать свежую информацию (наблюдения) в свои рассуждения (мысли), гарантируя, что окончательный ответ будет хорошо обоснованным и точным.

Этот пример демонстрирует основную концепцию цикла *ReAct* (концепцию, которую мы будем развивать в следующем разделе): **взаимодействие мыслей, действий и наблюдений позволяет AI агентам решать сложные задачи итеративно**. 

Понимая и применяя эти принципы, вы сможете разрабатывать агентов, которые не только рассуждают о своих задачах, но и **эффективно используют внешние инструменты для их выполнения**, при этом постоянно совершенствуя свои действия на основе обратной связи от окружающей среды.

---

Теперь давайте углубимся в изучение Мысли, Действия, Наблюдения как отдельных этапов этого процесса.

