- BrainTools - https://www.braintools.ru -
Поскольку LLM (все эти ChatGPT, DeepSeek и т.п.) это языковые модели, которые по идее просто складывают ответ из кусочков фраз, как в калейдоскопе – мы не ожидаем от них чудес логики. Тем больше они нас удивляют пытаясь генерировать ответы на достаточно мудрёные задачи – от генерации и исправления программного кода до, например, игры в шахматы.
Идея с игрой в шахматы хороша тем что на ней легко продемонстрировать и неспециалисту как возможности так и ограничения LLM. Эксперименты на эту тему появились уже давно, например в статье на Хабре же от 2023 года [1]. Там автор на 6м ходу сделал неправильный ход но LLM этого не заметила. Мы кратенько посмотрим есть ли прогресс в этом направлении, попробуем немного изменить подход и потестируем пару похожих игр.
Здесь пара наблюдений – во-первых автор попробовал прямолинейно задать задачу – вот садись и играй со мной. В комментариях отметили что поскольку LLM не обладает памятью [2] как таковой, эта задача возможна только с некоторыми ограничениями – в частности LLM в том или ином виде выводит текущую позицию в каждом ответе и переиспользует её.
Второе наблюдение – опять же из комментариев – чуть более ранняя версия ChatGPT вообще сразу отказывалась играть сообщая что она LLM а не шахматный движок. Из этого можно сделать вывод – разработчики в какой-то мент подсуетились и добавили в каком-то виде “бэкенд” под эту конкретную задачу. Правда не полноценный движок а только возможность отображать позицию и предлагать ходы.
Мы попробуем использовать DeepSeek (в основном потому что он доступен без ухищрений) – и сперва зададим вопрос в аналогичном ключе:

Как видим, LLM сразу предлагает использовать популярную в компьютерных шахматах нотацию [3] для записи позиции (построчно) – но впрочем говорит что может и изобразить кое-как доску в ASCII. С учётом печати символов с небольшой задержкой это оказывается довольно нудно. По ходу я попросил LLM не пытаться давать подсказок и уже на 2-м ходу столкнулся с небольшой проблемой:
Пешка с e5 бьёт d4 и судя по диаграмме оказывается опять же на d5. Попытки убедить исправить это безобразие не увенчались успехом.
Я предложил начать заново и использовать только FEN-нотацию. Её можно копипастить например на доску анализа на lichess [4] а не “визуализировать в уме”.
В этот раз всё правильно, и чёрная и белая пешки стоят бок о бок на четвертой горизонтали.
К сожалению на этом хорошее заканчивается. Игнорируя подсказки ИИ (типичное продолжение Nf3 – навалиться на пешку конём а не сразу бить ферзем, иначе его отгонят с потерей темпа) я предлагаю двинуть вперед мою пешку.
Объяснение впечатляет – пойти на e5 нельзя потому что пешка уже на e4 (она не может двинуться отсюда на e5 за один ход). Искать логику [5] в этом объяснении бессмысленно – но оно хорошо показывает что LLM именно языковая модель – она забрасывает нас формально склееенными фразами примерно соответствующими ситуации которую обрисовал запрос.
Оставим попытки идти этим путём и попробуем чуть иначе.
Простейшая оптимизация с учётом характера работы LLM – предложить ей готовую позицию и задать относительно неё вопрос. Расставим фигуры в соответствии с 2.5 первыми ходами:
Спросим какой ход порекомендует за чёрных
Как видим идея логичная – прогнать вылезшего невовремя слона – но реализация не просто плохая а даже невалидная, король остается под шахом. Гнать слона нужно пешкой c6 а не a6. Будем терпеливы и обратим внимание [6] на этот момент…
Предложенный ход адекватный, но пояснения (которые хотелось почикать с этого скриншота) настораживают – четвёртый вариант предлагает сдвинуть короля вправо, но отмечает что это ход некорректный, потому что король остаётся под шахом от слона. Не верь глазам своим – король не остаётся под шахом, но пойти на f8 конечно не может так как там стоит его собственный слон!
Кажется на этом желание продолжать уже иссякает – слишком много усилий для достижения ничтожного результата.
Однако попробуем ещё один вопрос – посчитать количество возможных ходов в позиции – для шахматного движка перечисление ходов – это основа алгоритма.
Немного поварьируем позицию – я сделаю ход пешкой (а не конём) чтобы предотвратить размен слона на коня и заставить противника потерять темп…
Как я вижу, здесь 6 пешек могут сделать короткий или длинный ход каждая (всего 12) доступны 2 хода левым и 5 ходов правым конём, слон может сделать 7 ходов, ферзь 1 и король 3 включая рокировку – итого 30 что ли? А что думает наш “калькулятор”?
Поскольку текст ответа печатается с маленькими задержками, до последнего момента не оставляет надежда на лучшее. И эта аккуратная разбивка по фигурам… К сожалению содержание ответа печально:
для короля упущен третий ход Kf1
зато ферзь считает коня на f3 пустым местом и имеет 4 хода в этом направлении – да ещё один на d2 (пешку тоже не замечает)
Остаток списка ходов тоже содержит интересные откровения:
Rook Moves (2):
Rh1e1
Ra1b1
Bishop Moves (4):
Bb5a4
Bb5c4
Bb5d3
Bb5e2
Knight Moves (from b1) (2):
Nb1c3
Nb1a3
Pawn Moves (7):
a3, a4
b3, b4
c3, c4
g3, g4
h3, h4
d3 (but not d4 as it’s blocked by pawn on d6)
f4
Knight Moves (from f3) (4):
Nf3g5
Nf3h4
Nf3d4
Nf3e5
Total Valid Moves:
After careful counting, White has 26 legal moves in this position.
Оказывается возможны ходы ладьями а пешка на d может пойти на d3 но не на d4 потому что ей мешает пешка на d6. Отдельно любопытно что пишет – ходов пешек всего 7 – и перечисляет 8 (включая невалидный f4 – прыжком через коня).
Хватит с шахматами. Ведь это китайский LLM – попробуем его родную игру!
Вероятно не все (и даже многие) не знают подробностей правил этой игры, но для наших экспериментов это и не требуется. При желании вы можете расспросить LLM о правилах. Я их знаю поверхностно и уточнив что LLM понимает нотацию XFEN попробую ей воспользоваться. Как и раньше, сделаю пару первых ходов и спрошу совета:
В этой позиции пушка (катапульта) угрожает побить пешку красных – у этой фигуры довольно необычное поведение [7] – она ходит как ладья (колесница), но бьёт (тоже по горизонтали или вертикали) прыжком через ровно одну фигуру (свою или противника) – ей как бы нужна точка опоры. В данном слуае такой опорой будет чёрная пешка (вторая слева).
Что нам предложит DeepSeek?
Кони в китайских шахматах ходят почти как в европейских с одним любопытным отличием – если “впритирку” к коню стоит другая фигура (своя или чужая) – по горизонтали или вертикали – то он лишается подвижности в этом направлении (то есть теряет 2 хода из 8). Иными словами коней можно блокировать. Вместе с поведением [8] катапульт это даёт игре довольно неожиданные повороты.
Даже если мы не очень знакомы с принятой в Xiang-qi записью ходов, DeepSeek нам подсказывает. К сожалению трудно понять что он пытается предложить. Запись H0+1 не кажется мне знакомой, коня на “g0” нет и даже если имелся в виду конь на h0 то в этом направлении пойти он не может т.к. подпёрт слоном, как пояснено выше. Попробуем уточнить:
Конь совершил квантовый скачок на 2 клетки вперед и на 3 вправо. Не знаю есть ли подобная фигура в “сказочных шахматах” но это точно не по правилам Xiang-qi. Кажется на этом эксперимент можно считать ещё более неудачным чем с шахматами.
Конечно LLM знает всё или почти всё о более простых играх. В игре Ним у нас есть несколько кучек камней и можно брать сколько угодно из любой (но только одной) по очереди. Цель – взять последний камень. Я предлагаю начать с кучками из 3, 5 и 7 камней
Я предлагаю взять 3 камня из средней кучки и оказывается что мой противник забыл текущую позицию. Я-то предполагал что он анализирует свой предыдущий ответ…
я напоминаю ему позицию и прошу исправиться. он это делает но неожиданно впадает в целую цепочку нерешительных раздумий
В конце он говорит что возьмёт 5 камней из третьей кучки. Хорошо, памятуя что ему надо давать каждый раз текущую позицию, продолжаю:
Что ж, это вам не шахматы, с небольшими погрешностями LLM доводит дело до конца. Не откажем ему в удовольствии насладиться победой – прошу выразить триумфально свой триумф:
Можно отдать должное языковым способностям движка – ну заодно и порадоваться его предложению сыграть в крестики-нолики.
Честно говоря я планировал сделать совсем короткую заметку единственная цель которой – предложить коллегам эдакий “инструмент” на случай когда нужно объяснить проблематичность использования ИИ для решения (псевдорешения!) задач требующих логики. Тем не менее если кому-то будет не лень попробовать в крестики-нолики – расскажите, чем кончится дело!
Автор: RodionGork
Источник [9]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/17795
URLs in this post:
[1] статье на Хабре же от 2023 года: https://habr.com/ru/articles/716216/
[2] памятью: http://www.braintools.ru/article/4140
[3] нотацию: https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F_%D0%A4%D0%BE%D1%80%D1%81%D0%B0%D0%B9%D1%82%D0%B0_%E2%80%94_%D0%AD%D0%B4%D0%B2%D0%B0%D1%80%D0%B4%D1%81%D0%B0
[4] доску анализа на lichess: https://lichess.org/analysis/
[5] логику: http://www.braintools.ru/article/7640
[6] внимание: http://www.braintools.ru/article/7595
[7] поведение: http://www.braintools.ru/article/9372
[8] поведением: http://www.braintools.ru/article/5593
[9] Источник: https://habr.com/ru/articles/932440/?utm_source=habrahabr&utm_medium=rss&utm_campaign=932440
Нажмите здесь для печати.