Buckets:

rtrm's picture
|
download
raw
11 kB
# Действия: Обеспечение взаимодействия Агента с его Окружением
> [!TIP]
> В этом разделе мы рассмотрим конкретные действия AI агента по взаимодействию с окружением.
>
> Мы расскажем о том, как представляются действия (с помощью JSON или кода), о важности подхода "остановить и разобрать", а также представим различные типы агентов.
Действия - это конкретные шаги, которые **AI агент предпринимает для взаимодействия с окружением**.
Будь то просмотр информации в Интернете или управление физическим устройством, каждое действие - это целенаправленная операция, выполняемая агентом.
Например, агент, помогающий в службе поддержки клиентов, может получать данные о клиентах, предлагать статьи по поддержке или передавать проблемы представителю компании.
## Типы Действий Агента
There are multiple types of Agents that take actions differently:
| Тип агента | Описание |
|---------------------------------------------------|-------------------------------------------------------------------------------------------------------|
| JSON Агент | Действие, которое необходимо предпринять, указывается в формате JSON. |
| Агент кода (Code Agent) | Агент пишет блок кода, который интерпретируется извне. |
| Агент вызывающий функции (Function-calling Agent) | Это подкатегория агента JSON, который был дообучен генерировать новое сообщение для каждого действия. |
Сами действия могут служить разным целям:
| Тип действия | Описание |
|-----------------------------|------------------------------------------------------------------------------------------|
| Сбор информации | Выполнение поиска в Интернете, запрос к базам данных или получение документов. |
| Использование инструментов | Выполнение вызовов API, вычислений и выполнение кода. |
| Взаимодействие с окружением | Манипулирование цифровыми интерфейсами или управление физическими устройствами. |
| Общение | Взаимодействие с пользователями через чат или сотрудничество с другими агентами. |
Одной из важнейших составляющих агента является **возможность прекратить генерацию новых токенов после завершения действия**, и это справедливо для всех форматов Агентов: JSON, код или вызов функций. Это предотвращает непреднамеренный вывод и гарантирует, что ответ агента будет ясным и точным.
LLM работает только с текстом и использует его для описания действий, которые она хочет выполнить, и параметров, которые нужно передать инструменту.
## Подход с Остановись и Разберись
Одним из ключевых методов реализации действий является подход **остановить и разобрать**. Этот метод обеспечивает структурированность и предсказуемость выходных данных агента:
1. **Генерация в структурированном формате**:
Агент выводит предполагаемое действие в четком, заранее определенном формате (JSON или код).
2. **Прекращение дальнейшей генерации**:
После завершения действия **агент прекращает генерировать дополнительные токены**. Это позволяет избежать лишнего или ошибочного вывода.
3. **Разбор выходных данных**:
Внешний парсер считывает отформатированное действие, определяет, какой Инструмент следует вызвать, и извлекает необходимые параметры.
Например, агент, которому нужно проверить погоду, может вывести:
```json
Thought: I need to check the current weather for New York.
Action :
{
"action": "get_weather",
"action_input": {"location": "New York"}
}
```
Затем фреймворк может легко разобрать имя функции для вызова и аргументы для применения.
Такой понятный, машиночитаемый формат минимизирует ошибки и позволяет внешним инструментам точно обрабатывать команду агента.
Примечание: агенты вызова функций работают аналогичным образом, структурируя каждое действие так, чтобы вызывалась определенная функция с правильными аргументами.
Мы подробнее рассмотрим эти типы агентов в одном из следующих разделов.
## Агенты Кода
Альтернативный подход - использование *Агентов Кода*.
Идея заключается в следующем: ** вместо того, чтобы выводить простой объект JSON**, агент кода генерирует **исполняемый блок кода - обычно на языке высокого уровня, таком как Python**.
Этот подход имеет ряд преимуществ:
- **Выразительность:** Код может естественным образом представлять сложную логику, включая циклы, условия и вложенные функции, обеспечивая большую гибкость, чем JSON.
- **Модульность и возможность повторного использования:** Генерируемый код может включать функции и модули, которые можно повторно использовать в различных действиях или задачах.
- **Улучшенная отлаживаемость:** Благодаря четко определенному синтаксису программирования ошибки в коде зачастую легче обнаружить и исправить.
- **Прямая интеграция:** Агенты кода могут напрямую интегрироваться с внешними библиотеками и API, что позволяет выполнять более сложные операции, такие как обработка данных или принятие решений в режиме реального времени.
Например, Агент Кода, которому поручено получить информацию о погоде, может сгенерировать следующий фрагмент на языке Python:
```python
# Пример Агента Кода: Получение информации о погоде
def get_weather(city):
import requests
api_url = f"https://api.weather.com/v1/location/{city}?apiKey=YOUR_API_KEY"
response = requests.get(api_url)
if response.status_code == 200:
data = response.json()
return data.get("weather", "No weather information available")
else:
return "Error: Unable to fetch weather data."
# Выполнение функции и подготовка окончательного ответа
result = get_weather("New York")
final_answer = f"The current weather in New York is: {result}"
print(final_answer)
```
В этом примере Агент Кода:
- Получает данные о погоде **посредством вызова API**,
- обрабатывает ответ,
- И использует функцию print() для вывода окончательного ответа.
Этот метод **также следует подходу "остановись и разбери"**, четко разграничивая блок кода и сигнализируя о завершении выполнения (здесь - выводом final_answer).
---
Мы узнали, что действия связывают внутренние рассуждения агента и его взаимодействие с реальным миром, выполняя четкие, структурированные задачи - через JSON, код или вызов функций.
Такое продуманное выполнение гарантирует, что каждое действие будет точным и готовым к внешней обработке с помощью подхода «остановить и разобрать». В следующем разделе мы рассмотрим Наблюдения, чтобы увидеть, как агенты улавливают и интегрируют обратную связь от своего окружения.
После этого мы будем **окончательно готовы к созданию нашего первого агента!**.

Xet Storage Details

Size:
11 kB
·
Xet hash:
cf695c899cd76694e33744dd63e1cdf47734f46fe67f3f5c7d6f5a87c75b067a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.