8

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт

Серия Шпаргалки

Что такое TinyTroupe?

TinyTroupe — это экспериментальная Python-библиотека от Microsoft, предназначенная для моделирования людей с определёнными личностными характеристиками, интересами и целями. Эти искусственные агенты, называемые «TinyPerson», могут взаимодействовать между собой и с окружающей средой, имитируя реалистичное поведение.

Что такое TinyPerson?

В основе TinyTroupe лежит класс TinyPerson. TinyPerson - это основной строительный блок для создания сложных, управляемых LLM агентов.
Экспериментируйте с различными промптами, конфигурациями памяти и ментальными способностями, чтобы раскрыть весь потенциал моделирования человеческого поведения.

Представьте его как чертеж для смоделированной личности. Каждая TinyPerson обладает:

  • Имя: Уникальный идентификатор.

  • Когнитивные состояния: Внутренние переменные, представляющие внимание, эмоции, цели и другие ментальные аспекты, влияющие на поведение.

  • Память: Разделенная на episodic_memory (конкретные события) и semantic_memory (общие знания), отражая структуру человеческой памяти.

  • Поведенческие абстракции: Методы listen() и act() имеют решающее значение для взаимодействия, моделируя циклы стимул-реакция.

Установка

  • В папке ваших проектов выполните команды

git clone https://github.com/microsoft/TinyTroupe.git
cd TinyTroupe
python -m venv venv
venv\Scripts\activate
pip install git+https://github.com/microsoft/TinyTroupe.git@main

код 👉 MyTinyTroupe/tiny_troupe.md at master · hypo69/MyTinyTroupe · GitHub

  • Переименуйте файл .env.example в .env и добавьте в него свой ключ OpenAI API.

Примеры использования

1. Создание TinyPerson

Внутри директории examples создайте файл my_person.py и добавьте следующий код:

код 👉 https://github.com/hypo69/MyTinyTroupe/blob/master/examples/tiny_person.py

Этот пример создаёт агента, задаёт его характеристики, инициирует взаимодействие и показывает историю взаимодействия.

2. Методы взаимодействия

  • act(): Определяет поведение агента, запрашивая у LLM действие на основе памяти и когнитивного состояния.

  • listen(): Моделирует получение сообщения от другого агента или среды, сохраняя информацию в памяти.

  • _observe(): Записывает стимулы (события, ощущения) во внутреннюю память агента.

3. Управление памятью

TinyPerson использует episodic_memory и semantic_memory:

  • episodic_memory: Хранит конкретные события, организует их по времени и ограничивает количество используемых записей.

  • semantic_memory: Хранит общие знания, индексируя текстовые документы с помощью llama_index.

4. Внутреннее состояние и конфигурация

  • _update_cognitive_state(): Изменяет цели, внимание, эмоции и другие внутренние переменные.

  • define(): Устанавливает или обновляет параметры конфигурации агента.

  • reset_prompt(): Пересоздаёт системный промпт для LLM на основе текущей конфигурации и памяти агента.

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

5. Создание и управление мирами

В TinyTroupe среда моделируется с помощью TinyWorld, а социальные связи — через TinySocialNetwork.

Метод make_everyone_accessible() позволяет всем агентам взаимодействовать друг с другом.

6. Управление акторами в комнате

Если акторы уже определены, но вам нужно их обновить или заменить, можно использовать:

7. Запуск симуляции

Для моделирования взаимодействий используется run():

8. Управление взаимодействиями

Если вам нужно контролировать диалоги между агентами:

Этот код инициирует разговор и генерирует ответ агента.

9. Создание социальных сетей

TinySocialNetwork позволяет моделировать социальные связи и группы:

Пример простого чата с общением на русском языке:

функция установки языка акторов


Часть словарей характеристики актора:

Словари большие. Целиком здесь 👇
MyTinyTroupe/examples/agents/Lila.agent.json at master · hypo69/MyTinyTroupe · GitHub
MyTinyTroupe/examples/agents/Oscar.agent.json at master · hypo69/MyTinyTroupe · GitHub

код чата:

Этот код создает двух агентов (lila и oscar), загружает их спецификации, переводит их язык общения на русский, помещает их в общий мир (world), делает всех участников доступными друг для друга и запускает взаимодействие между ними.

Разбор кода по шагам:

  1. Загрузка агентов из спецификаций:

  • Создаются два агента: lila и oscar.

  • Они загружаются из спецификаций lila_spec и oscar_spec, которые, содержат их характеристики (возраст, профессия, интересы и т. д.).

  1. Настройка языка общения:

  • configure_language устанавливает русский язык для агентов.

  • Это также пересоздает их системный промпт, чтобы они отвечали на русском.

  1. Создание мира и размещение агентов:

  • Создается виртуальный мир TinyWorld с названием "Chat Room".

  • В этот мир добавляются lila и oscar, что позволяет им взаимодействовать.

  1. Делаем всех доступными друг для друга:

  • Убеждаемся, что агенты могут "видеть" и "слышать" друг друга.

  • Без этого метода агент мог бы не знать, что другой агент существует в том же мире.

  1. Инициирование общения:

  • lila получает фразу "Начинает разговор с Оскаром, чтобы узнать о нем больше".

  • Это стимулирует ее к действию (например, задать вопросы Оскару).

  1. Запуск симуляции взаимодействий:

  • world.run(4) запускает симуляцию на 4 цикла, в течение которых агенты будут:

    • Воспринимать информацию (listen()).

    • Действовать (act()).

    • Обновлять память (что они узнали, какие эмоции испытали).

Ожидаемое поведение

  • lila попытается поговорить с oscar, задавая вопросы на русском.

  • oscar ответит, используя информацию из своей памяти и спецификации.

  • world.run(4) заставит их несколько раз обменяться репликами.

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

💡 Совет: Если агенты не разговаривают, попробуйте добавить world.step() после lila.listen(), чтобы проверить их реакцию перед запуском полного цикла run(4).

Пример в Google Colab
код на гитхабе

Тебя может заинтересовать также LangChain и Browser-Use: Создание ИИ-агентов для работы с веб-браузером. Быстрый старт

Удачи!

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

0
Автор поста оценил этот комментарий

Ну а портировать его куда-либо как? Например, как запустить на сайте?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Через fast_api, например.

показать ответы
0
Автор поста оценил этот комментарий

А можно этого присобачить на сайт, чтобы разговаривал с посетителями. Я не хочу ставить безмозглого бота ставить.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

Это что-то типа ИИ ввиде индивидума? Круто, если работает...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Работает. Проверено
Пример https://colab.research.google.com/github/hypo69/MyTinyTroupe...

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества