# AutoGen: создание диалоговых систем с ролевыми ИИ-агентами

Источник: https://www.youtube.com/watch?v=6gnvm-8NEmA
Канал: DeepLearning.AI
Опубликовано: 06.06.2024

---

## Разработка мультиагентных систем на платформе AutoGen
[[JUMP:00:00]]

Создание сложных систем на базе искусственного интеллекта требует перехода от простых чат-ботов к взаимодействию специализированных агентов. В рамках обучающего курса DeepLearning.AI эксперты подробно разбирают работу с `ConversableAgent` — базовым классом фреймворка AutoGen, который позволяет выстраивать многошаговые диалоги между несколькими ИИ-сущностями.

### Концепция `ConversableAgent`
[[JUMP:00:25]]

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

Ключевые возможности `ConversableAgent` включают:

* Унификация различных типов агентов в рамках единой абстракции программирования.
* Встроенная поддержка исполнения кода и вызова внешних инструментов.
* Компоненты для контроля участия человека («human-in-the-loop») и настройки условий завершения диалога.

Разработчик может гибко включать или отключать эти компоненты, адаптируя агента под нужды конкретного приложения. В качестве базовой модели в курсе используется GPT-3.5 Turbo.

### Запуск первого агента
[[JUMP:01:58]]

Создание агента начинается с определения конфигурации модели и задания параметров взаимодействия. Важной настройкой является `human_input_mode`:

* При значении `never` агент полностью автономен и не запрашивает подтверждения человека.
* При значении `always` агент обязан получать одобрение пользователя перед отправкой любого сообщения.

Важно понимать, что метод `generate_reply` работает как «чистая функция» с точки зрения состояния: каждый вызов этого метода генерирует ответ с нуля, не «помня» контекст предыдущих сообщений. Для реализации полноценных диалогов, требующих сохранения контекста, необходимо использовать другой подход.

### Организация диалога между агентами
[[JUMP:04:35]]

Для создания интерактивного приложения, где агенты взаимодействуют друг с другом, необходимо присвоить им системные роли через параметр `system_message`. В примере с двумя стендап-комиками, Кэсси и Джо, каждому задается конкретная инструкция поведения:

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

Запуск взаимодействия осуществляется через функцию `initiate_chat`, где указывается получатель и параметры ограничения диалога (например, `max_turns=2`). По завершении работы система позволяет проанализировать историю чата и затраченные токены. Стоимость использования модели, количество токенов запроса и ответа детализируются в объекте `chat_result`.

### Управление завершением и контекстом
[[JUMP:09:28]]

Помимо ограничения количества ходов, AutoGen поддерживает динамическое завершение диалога через функцию `is_termination_message`. Она анализирует содержание каждого сообщения и останавливает систему, если обнаружена специфическая фраза (например, «I got go»).

[]

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