WeaveAI: Дневник разработки
25 subscribers
7 photos
8 links
Привет, я строю WeaveAI — ИИ-движок для текстовых РПГ, работающий в Телеграме. Делюсь архитектурой, багами и процессом разработки. Автор: @ibragimov_e
Download Telegram
Наконец-то добрался до ускорения работы одного из агентов. Кто был на альфе наверняка помнят ожидание ответа секунд по 40.

Так вот, проблема в том, что тот же Боец делал слишком много всего: броски придумывал, модификаторы подставлял, формулы урона... А зачем, когда всё это может делать код? А Боец просто говорит: npc1 атакует игрока, оружие такое-то, действие валидно. Всё.

Изменения заняли одну ночь, выигрыш по времени правда всего лишь раза в 2 примерно (а в рамках всего хода не больше 30%)... Я большего ожидал. Но всё же это важный шаг :)

Почему не сделал так сразу? Наверное, потому что шёл от одной модели, которая делала вообще всё, к трём (мир или бой, плюс рассказчик), а сейчас вообще иду к пайплайну "диспетчер -> агенты-специалисты в параллели -> судья-сборщик -> рассказчик". Соответственно, промпты, входные данные и ответственность резал по чуть-чуть по мере необходимости.

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

P.S. Новый пайплайн с кучей вызовов небольших llm - тоже гипотеза. Не знаю взлетит или нет, так как такой подход будет жрать много токенов и может быть ни разу не быстрым. Зато он позволит делать вещи, которые не позволяют делать конкуренты. Например, пытаться решать загадку прямо во время боя, или уговорить врага пойти пить пиво :) Такое сейчас возможно только с живым мастером. Через несколько недель WeaveAI тоже такое сможет.

Вопрос только - будет ли это приемлемо по времени и готовы ли люди будут платить выше среднего за такие навороты. Так что всё это пока что лишь гипотеза. Надеюсь, подтвердится :) Что думаете?
🔥2
Кратенько описал свой опыт игры с чат-ботом на пикабу: https://pikabu.ru/story/virtualnyiy_geym_master_14058317 Коротко, без рекламы, без ничего - следую совету "прогреть аудиторию". У кого есть там аккаунт - лайкните, плз 🙂 С меня +15 к удаче на следующем тесте. А за добрый коммент пропишу вам в базе АК-47 руками))
1😁1
Задумываюсь над визуальным оформлением. Как вам такой стиль?
👍3🔥1
Запостил на Пикабу историю создания PoC проекта, глянуть (а также лайкнуть и рассказать друзьям) можно здесь: https://pikabu.ru/story/svoy_dungeon_master_v_telegrame_na_kolenkakh_14064023
Собственно, там я показал схему своего рабочего PoC, который собрал то ли в самом конце февраля, то ли в самом начале мая. На нём же я и прошёл свой иишный сценарий на 10 локаций и понял: оно работает!
🔥3
Если вы думаете, что я взялся покорять пикабу и играться с артами, а про разработку забыл, то вы ошибаетесь :)

Над чем работаю сейчас? Над переходом на новый пайплайн 😎

До этого была дихотомия: либо мирный агент (Арбитр), либо агент-боец (Файтер). Ну ещё первый мог вызывать второго в случае инициации боя, чтобы всё случилось в один ход. Ограничения очевидны: за раз можно обработать что-то одно. Новому пайплайну без разницы, сколько отдельных действий/проверок обрабатывать за раз.

На текущий момент удалось расщипить Арбитра на несколько LLM-специалистов и сделать параллельный запуск, добавить диспетчера (Router / Decomposer на схеме) в начало и... столкнуться с проблемами...

А ещё с лимитом размера сообщений тут в tg, как ни странно... дополню в комменте.
🔥1🤯1
Вожусь с обработкой свободных действий.

Запрос игрока: "подобрать плавающий лист, сделать из него самолётик, потом запустить так, чтобы он точно приземлился на чашу"

Атомарные действия "подобрать лист" и "сделать самолётик" модель одобрила, а по финальному действию предложила бросок:

{
"action": "запустить самолётик так, чтобы он приземлился на чашу",
"is_valid": true,
"auto_results": [],
"checks": [
{
"skill": "Dexterity",
"dc": 15,
"on_success": "самолётик успешно приземляется на чашу",
"on_fail": "самолётик падает в воду",
"reason": "необходима точность при запуске самолётика"
}
]
}


Как это обрабатывать, особенно если результат может что-то стриггерить - отдельная инженерная задача, которую предстоит решить. Но в целом мне нравится: теперь у игрока может что-то получиться, а может и не получиться :)
🔥2
Кто-нибудь писал статьи на Хабре?

Я нет. Но надо. Потому что траффик в этот канал и на будущий лендинг из ниоткуда не возьмётся. Поэтому, собственно, я начал что-то постить на Пикабу, а теперь вот подбираюсь к Хабру.

С Хабром интересно. Оказывается, нельзя просто так взять и запостить статью. Нужно пройти квест:
* регистрация (ну, это само собой);
* статья в песочницу;
* модератор должен заценить творение и одобрить.

Только после этого статья увидит мир, а пользователь сможет уже нормально постить статьи. И чтобы по-нормальному пройти песочницу, вообще надо сделать так:
* оформить статью в google docs;
* лично связаться с модератором;
* получить рекомендации и внести правки;
* профит.

Требования к статьям довольно высокие, вот хаброский гайд по оформлению.

На текущий момент я зарегался, изучил гайды и начал писать нечто под заголовком "LLM для игры в D&D: эволюция подхода". Драфт на 9 вордовских страниц, всего будет 10. Ппц 🤯 И я даже не знаю, много это или мало... Ну, will see.
🔥3
Запилил лендинг: https://weaveai.studio. Текст ещё надо выправлять (пока там нейрослоп), но в целом штука рабочая. Буду рад вашему фидбэку — косяки, херовый стиль и т.д.
🔥2
Уже вторую неделю думаю про обработку каскада событий, даже микро-пост об этом написал.

Пример: плут крадётся, бросает на ловкость, не прошёл; в результате срабатывает ловушка; от шума просыпается стражник; начинается бой.

Одно событие проблем не вызывает. ИИ в движке определяет в самом начале, нужно ли бросать проверку. Затем последующий блок кода делает бросок и считает последствия (урон, например). Затем ИИ-рассказчик выдаёт нарратив: "ай-яй-яй, у вас не получилось, ловушка взорвалась! получите 7 хп урона огнём". Всё.

Сложность в том, что взрыв ловушки сам по себе порождает второе событие. И его, по-хорошему, надо обрабатывать по-новой — точно так же, как ввод игрока. То есть надо проверить все триггеры и решить, что произошло; если что-то произошло — тоже что-то сделать, посчитать и сообщить игроку.

И тут возникает пачка вопросов. Как это делать? Рекурсивно? Ходы затянутся и сильно подорожают. Растянуть на N ходов — но как это сделать в телеге, как это будет выглядеть игромеханически? Или сделать потоковую генерацию, как у современных агентов? Как вообще определять, будет ли каскад? Не вызывать же повторную валидацию на каждый чих!

Вопросы на миллион. Что думаете?
1🔥1
Не врубаюсь, как работают соцсети. Написал короткое размышление на тему Живой мастер vs ИИ. (Конечно же не просто так, а потому что надо формировать "правильное" отношение аудитории к ИИ чат-ботам.) Как по мне, размышления здравые. И кто-то даже написал классный развёрнутый коммент, дополняющий мои мысли. Но! За первые полчаса тут же отхватил несколько минусов. Не понимаю почему. Есть идеи что не так? Дайте фидбэк, плз.
🤯2
Друзья, моя первая статья на Хабре прошла модерацию! 🥳 Я о ней выше упоминал. Если получилось интересно, поставьте, пожалуйста, лайк статье — вы этим очень меня поддержите 🙃
https://habr.com/ru/articles/1050968
🔥2👍1👏1