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 и добавьте следующий код:

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

код 👉 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.

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост


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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

код чата:

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост

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

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост
  • Создаются два агента: lila и oscar.

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост
  • configure_language устанавливает русский язык для агентов.

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост
  • Создается виртуальный мир TinyWorld с названием "Chat Room".

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост
  • Убеждаемся, что агенты могут "видеть" и "слышать" друг друга.

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост
  • lila получает фразу "Начинает разговор с Оскаром, чтобы узнать о нем больше".

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

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

Создание интеллектуальных агентов с TinyTroupe: Быстрый старт Программирование, Python, Openai, IT, Гайд, Разработка, Длиннопост
  • world.run(4) запускает симуляцию на 4 цикла, в течение которых агенты будут:

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

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

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

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

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

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

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

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

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

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

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

Удачи!

Программирование на python

879 постов11.9K подписчика

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

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


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

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

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

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

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

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


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

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

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

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

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