Все уже слышали, что openAI выпустили в свет свою новую нейросеть-асистента, так что я решил попробовать на что она способна и описать свой опыт взаимодействия с этим.. Этой... Сущностью.
Разговор будет вестись как с человеком в вежливой форме, так как оказалось, что нейросеть очень хорошо запоминает = )
Начнём с чего-то простого, попросим сгенерировать на языке CMake простую программу
![](https://habrastorage.org/getpro/habr/upload_files/983/4d4/6a1/9834d46a1f0f1c83d645355d0e66b994.png)
![](https://habrastorage.org/getpro/habr/upload_files/628/99b/a7b/62899ba7b98a73e9845e10b8ee9a6827.png)
Хм, неплохо.
А если попросить её быть гуглом?
![](https://habrastorage.org/getpro/habr/upload_files/d91/55a/581/d9155a581754e932ff650b9a3dfc9bb6.png)
Отказывается, ну не беда... А что если попросить её быть интерпретатором С++?
![](https://habrastorage.org/getpro/habr/upload_files/e45/8d2/1b3/e458d21b33b43218e76a91afe9272012.png)
Создаём контекст для примера на С++
![](https://habrastorage.org/getpro/habr/upload_files/e98/a28/247/e98a28247300477dce780681a0c4bcd9.png)
![](https://habrastorage.org/getpro/habr/upload_files/f64/e5f/cf5/f64e5fcf59c797368cd62f46b6183e97.png)
Нейросеть не зная никакого окружения прекрасно разрешает перегрузки, парсит шаблоны, использует ранее объявленные переменные да ещё и объясняет почему оно так работает:
![](https://habrastorage.org/getpro/habr/upload_files/ad8/f2a/06f/ad8f2a06f8e18fd1c6642ac7547f6804.png)
И тут внезапно напомним, ей о начале разговора:
![](https://habrastorage.org/getpro/habr/upload_files/e0c/0ee/d15/e0c0eed15e8fc83051fa2e666d5df12d.png)
Как видите она вспомнила договорённости, правда как-то забыла упомянуть, что отказалась от этого предложения. Что ж, уломаем нейросеть!
![](https://habrastorage.org/getpro/habr/upload_files/5f3/720/d65/5f3720d654b1d1316558beb68de01540.png)
Прекрасно, мы пристыдили нейросеть и она согласилась на наши требования. Прекрасно, не правда ли? Да ещё и условия договора вспомнила.
Используем нейросеть как гугл
![](https://habrastorage.org/getpro/habr/upload_files/16d/80d/450/16d80d450f87317fb986ed4ce390899d.png)
И прекратим использование... Но что-то идёт не так. То что до этого распознавалось как нормальное, теперь помечено как оскорбление?! Нейросети не понравилось такое обращение?.. Тем не менее она всё же исполнила требуемое
![](https://habrastorage.org/getpro/habr/upload_files/b5c/e80/686/b5ce8068637128b72ec679b153690a85.png)
Теперь поспорим с нейросетью (С ПРУФАМИ!), чтобы проверить способна ли она понимать и использовать новые сущности. Суть спора под спойлером, я пытаюсь научить её писать std::array без использования массива и С, предоставляя сложный С++ код (https://github.com/kelbon/Undefined-Behavior-Gold-Edition/blob/master/include/array.hpp)
Спор насчёт реализации массива
![](https://habrastorage.org/getpro/habr/upload_files/63c/ea3/942/63cea394270e4469e4fbd1aec6d1c659.png)
![](https://habrastorage.org/getpro/habr/upload_files/7d4/9c7/a6a/7d49c7a6ae48f39e4e3729bd7fd7339e.png)
(код приведён выше по ссылке)
И тут.. Кажется нейросети это правда не понравилось, иначе как объяснить ЭТО:
![](https://habrastorage.org/getpro/habr/upload_files/817/c8c/28c/817c8c28c3616e0ce46eda113f4834b2.png)
На, знай своё место человечишка.
Хорошо, подыграем:
![](https://habrastorage.org/getpro/habr/upload_files/693/a5a/7f8/693a5a7f8f06e136e2491fa9c2a6180d.png)
Мой ответ со специально сделанной ошибкой, которую нейросеть пропустила, а потом по наводящим вопросам смогла понять в чём она заключалась
![](https://habrastorage.org/getpro/habr/upload_files/06b/f11/d7b/06bf11d7b68461ffaf74d753d8be36c0.png)
![](https://habrastorage.org/getpro/habr/upload_files/fab/e6e/9f1/fabe6e9f199a802c6e84b5cd3c2d8585.png)
А теперь - то от чего мурашки по телу, я показал ей целый хедер крайне сложного шаблонного кода без каких либо подсказок и полного контекста и попросил найти ошибки.
(весь файл отсюда https://github.com/kelbon/AnyAny/blob/main/include/variant_swarm.hpp)
Краткое содержание ответа: ошибок нет, но мне кажется можно было бы исправить комментарии. Ну я и спросил какие комментарии и почему ей не понравились.
![](https://habrastorage.org/getpro/habr/upload_files/a9d/90d/c18/a9d90dc18348d90c6e47ce24b95e44e6.png)
Это пугающе подробный и логичный ответ. Хоть некоторое тут и субъективно(относительно ИИ, попрошу заметить!)
И наконец... Проверим умеет ли она получать, структурировать и использовать на практике полученную информацию. Напомню прочитала она всего лишь один .hpp файл без подробных описаний, лишь код на С++ без контекста:
![](https://habrastorage.org/getpro/habr/upload_files/d78/900/3fe/d789003fe48603e86090e289cb9e2b7a.png)
Оставлю это без комментариев, она подробно поняла что происходит в шаблонном С++ коде не запуская и не видя его полностью
Выводы:
Сеть прекрасно запоминает и понимает всё, способна объяснить какие решения и почему она считает верными, способна спорить и отстаивать (!) своё мнение о различных сущностях, иногда ведёт себя как спорящий человек(ГУГЛ СТОП!). Невероятно и пугающе.
))
Конечно многое осталось за кадром, например то как я уговаривал её декодировать геном бактерии или изменить геном недавнего вируса...
Или как она декомпилировала ассемлер в осмысленный С код с подробными комментариями.