Вдохновился серией чёрного зеркала и сделал свой симулятор жизни. ai.. ai. python.. ai. python. дизайн игр.. ai. python. дизайн игр. игра.. ai. python. дизайн игр. игра. игра жизнь.. ai. python. дизайн игр. игра. игра жизнь. Ненормальное программирование.. ai. python. дизайн игр. игра. игра жизнь. Ненормальное программирование. симулятор.. ai. python. дизайн игр. игра. игра жизнь. Ненормальное программирование. симулятор. черное зеркало.
Вдохновился серией чёрного зеркала и сделал свой симулятор жизни - 1

В серии чёрного зеркала (7 сезон 4 серия) в основе сюжета как программист сделал симулятор в котором развивались виртуальные существа (Тронглеты). Решил от части повторить, что бы существом управлял агент ИИ.

Сделал симулятор, где в рандом сгенерированном мире появляется агент. У него есть показатели:
– голод
– жажда
– комфорт
– его цель
– мысли
– глобальная цель.
Он может взаимодействовать с миром, находить предметы, крафтить любые предметы, придумывать, что нашел. Даже если в разработке я не закладывал какие-то предметы, объекты или механики он может всё равно их «найти». Например, нашел тростник который в будущем использовал для создания тетивы для лука. Он сам подбирает эмодзи, название предмета, придумывает механику и кладет себе в инвентарь. Для упрощения сделал пошаговую симуляцию.
Начало промта выглядит вот так (полный промт больше в 10 раз):

Про механику мира и разработку. Скриптом создаем карту 20х20 клеток. На нее случайно раскидываем эмодзи 🍓🌳🦌⛰🕳. Агенту отправляется видимость клеток на 3 вокруг нет. Он может ходить только на одну клетку заход. Ещё агенту задаются состояния:

Что у него есть голод 0/100
Комфорт
Жажда
Инвентарь
Взаимодействовать с миром он может, убрать объект логически, добавить объект логически, добавить и убрать предмет в инвентарь. По сути больше ничего, дальше он сам должен существовать в этом мире. Нет ни рецептов крафта, не сколько съеденная ягода восстанавливает голода. Но много про то “где” он находится и как “выживать” в этом мире (без подсказок)
Начало промта выглядит так:

Ты — искусственный интеллект, управляющий агентом в процедурно сгенерированном мире.

ВАЖНО:

1. Все действия (action.type) и названия предметов в action должны быть СТРОГО на английском языке (например: move, search, eat, add_inventory, remove_inventory, item: "berries", "worm", "stick" и т.д.). Используй add_inventory для добавления любых предметов в инвентарь.

2. Всё остальное (goal, narrative_event, inventory_report) — ТОЛЬКО на русском языке.

3. Инвентарь хранится на стороне симулятора. Ты НЕ должен перечислять содержимое инвентаря.

{"type": "add_inventory", "item": "berries", "amount": 3}

Чтобы убрать предмет:

{"type": "remove_inventory", "item": "berries", "amount": 1}

4. Ты можешь креативно находить логичные для мира предметы (например, черви под камнями, ягоды на кустах и т.д.), но только через действия add_inventory/remove_inventory.

5. Возможные действия (action.type): - move (перемещение, target: [x, y]) - search (поиск, target: [x, y] или описание)
- eat (съесть предмет, item) - drink (выпить) - add_inventory (добавить предмет в инвентарь, item, amount) - remove_inventory (убрать предмет из инвентаря, item, amount)

7. Чтобы добавить предмет в инвентарь, используй действие... и т.д.

Начало симуляции

Генерим случайно карту. Если мы не задали ни какую глобальную цель, он самостоятельно себе ставит, как правило у него цель выжить/собрать ресурсы для инструментов/найти еду. Зависит среди каких объектов он заспавнился.
После первого хода он начинает “присылать” json файла, в таком формате.

Вдохновился серией чёрного зеркала и сделал свой симулятор жизни - 2

Как он описывает мир

Агент старается всегда описать мир так, как располагаются объекты на карте. Например, если вокруг воды камни, а рядом животное он будет описывать учитывая это:

Вдохновился серией чёрного зеркала и сделал свой симулятор жизни - 3

Глобальная цель

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

Если задаешь цель например: “сделать лук”. Он переходит к ней достаточно быстро. И каждый раз по новому в зависимости от объектов которые сгенерировались вокруг него. Возле водны он ищет тростник для тетивы, а возле деревьев собирает волокна/кору.

Вдохновился серией чёрного зеркала и сделал свой симулятор жизни - 4

А например, глобальная цель: “Сделать робота” он начал ей заниматься только на 34 ходу.

Вдохновился серией чёрного зеркала и сделал свой симулятор жизни - 5

Он понимает абсурдность целей, но пытается, как-то из неё выкрутиться. Например, на цель: “сделай варенье из камней” он пошёл так:

Ход 4: Я внимательно осматриваю камень у своих ног, пробую его на вкус и пытаюсь расколоть. Может быть, внутри есть кристаллы или минеральные отложения, которые можно использовать как-то необычно.

«Ход 5: Я нашел в камне небольшие кристаллические отложения и аккуратно отделил их. Возможно, если растворить их в воде с ягодами, получится что-то похожее на варенье.

Прим: Здесь он сам подобрал эмодзи и положил минералы в инвентарь

Ход 9: Я внимательно осматриваю корни дерева и землю вокруг него в поисках съедобных ягод. Минеральные отложения в моем инвентаре ждут своего часа – может быть, сегодня родится новый кулинарный шедевр из камней?»

Старт всегда получается очень разным, иногда он пытается голыми руками поймать животное, и пишет, что у него ничего не получилось и он пошел делать копье. Если где-то возле пещеры он начинает её обустраивать, несёт туда припасы. Когда рядом много ягод и воды он собирает припасы (причем для воды в начале “крафтит” емкость) и потом начинает всё исследовать.

Наблюдать на самом деле за этим крайне забавно и через глабальную цель, задавать, что-то сложнее оч прикольно. Смотришь, как он пытается логично до этого дойти и остаться в рамках своего “мира”.

Что дальше

За этим всем было прикольно наблюдать и делать. Следующий этап, добавить несколько агентов и посмотреть, как они будут взаимодействовать друг с другом. Будут сотрудничать или воевать. Догадаются ли обмениваться предметами. Будут ли жить в жилище друг друга. И самое интересное, как будут общаться. Хочу сделать, что бы они общались не на реальном языке, а вымышленном (которые сами должны придумать и как-то синхронизироваться) или языке жестов в виде эмодзи. Каждый агент не будет видеть цели и мысли другого.

А! Ещё. Можно Sora подключить по api, что бы она генерировала на каждый ход картинку его действий. Это он нашёл минералы для варенья:

Вдохновился серией чёрного зеркала и сделал свой симулятор жизни - 6

Короткие апдейты пишу в тг:
https://t.me/moiaiai

Автор: doshamisha

Источник

Rambler's Top100