Comments 64
если он будет обучаться у меня на компе - то так глядишь и вообще джуников заменит!
Заменит, простите, на кого?) На вас же, но с готовым кодом?)
Я хочу у вас научиться. Согласны?
Конкурент stackoverflow
угу, и стаковерфлов забанил автогенерируемые ответы. Не уверен как он определяет он был автосгенерирован или нет
https://www.zdnet.com/article/stack-overflow-temporarily-bans-answers-from-openais-chatgpt-chatbot/
https://meta.stackoverflow.com/questions/421831/temporary-policy-chatgpt-is-banned
>Лично меня пугает шквал джанка нагенерированного этими сетками и вываленного в интернет под видом валидного контента.
ну и сейчас кода подобного качества больше чем везде
Черт с ним, с кодом. Тут можно столько нагенирировать труднодетектируемой дичи, что поиск конкретной иформации в интернете будет тем еще приключением
А можно пару примеров такого сайта? Не совсем понял, что это.
Натравил на ссылку MiceWeb, сохранено 461 КБ не пойми чего и показывает белый экран. Да, такое сохраняется только через браузер.
(\___/)
(='.'=)
(")_(")
Насчет среза интернета — согласен. Только я пишу по другому — «цените бумажные книги, особенно технические&справочники. Это лучшая инвестиция». В химических вопросах пока это «ассистент» совсем нулевой, хотя простую реакцию химическую уравнять способна правильно.
Насчет «какие акции компаний» — пишет что не является системой для прогнозирования, да и вообще обучена на датасетах 2021 года и всей текущей информацией не владеет.
Однозначно так. Мы в чате AGIRussia обсуждали ChatGPT и все пришли к выводу что не только он не заменит разработчиков, но и во многих фактологических задачах не поможет. Просто потому что архитектура GPT не работает с концептами, она работает со статистиками токенов - поэтому простые кусочки кода работают потому, что они типичны и похожи на куски из StackOverflow, но тк нет понимания сущностей и нет глобальной памяти, а локальная короткая то комбы из 2-3 классов с логикой между ними не будут работать.
Кстати, ведь сетку Galactica отключили как раз поэтому - псевдонаучный бред генерила, а это опасно и засоряет интернет.
К слову, мы сделали ИИ чатбота психолога - и критика его очень похожа на критику ChatGPT - критичная, чувствительная к этике область, но там хотя бы можно обходиться общими советами, не нужна мощная фактология, не нужно вычислений, математики и тп. А вот описательные вопросы, объясняющие хорошо отрабатывает, и даже не хуже чем ChatGPT, хотя мы выпустили бота раньше чем OpenAi
https://neurohive.io/ru/gotovye-prilozhenija/sabina-ai-chatbot/
Просто потому что архитектура GPT не работает с концептами, она работает со статистиками токенов - поэтому простые кусочки кода работают потому, что они типичны и похожи на куски из StackOverflow, но тк нет понимания сущностей
А вы точно ML-эксперт? Конечно там есть концепты - это фичи в глубоких блоках. Употребление словосочетания "понимание сущностей" это совсем моветон. Там проблема в том, что нехватает регуляризации в дисцилинах: логика, рациональность, эпистемология, семантика. Дисциплины как таковые не представлены явно в GPT, она их примерно воспроизводит для всех концептов.
а не получается ли так, что на валидацию кода глазами уходит даже больше времени, чем на его написание?
А если ты пока не знаешь, как написать и какие библиотеки/классы/методы задействовать, или просто забыл? И потом, тут же главное что - "не хочешь - не ешь".
Для большого объема кода, думаю вполне действительно больше, чем на написание. А на маленькие кусочки пойдёт, типо сделай 3 строчки запроса к бд по таким то параметрам или получи по апи оттуда - то, такую то структуру и достань оттуда имя пользователя.
Да, в качестве вдохновения использовать - выглядит годным. Тупо копипастить - нет.
Скажем, для python он мне сгенерировал "for range in ranges....". А я потом тупил, почему существенно ниже банальный range(5,8) выдает TypeError и прочую фигню.
А вот после небольших правок - норм. Даже regexp внутри python неплохо подсказывал.
а что не так в for range in ranges
(я ток погружаюсь в питон, но вроде вместо range может быть что угодно, хоть "i")
ranges=["a_1","b_2"]
for range in ranges:
x, y = range.split('_')
print(x, y)
print(range(5,7))
$ ./test.py
a 1
Traceback (most recent call last):
File "./test.py", line 5, in <module>
print(range(5,7))
TypeError: 'str' object is not callable
Я долго тупил над TypeError и str. Думал на другое, ибо у меня использование range было существенно ниже и применялось к переменными, полученным из строк, впоследствии преобразованных в int.
Потом только дошло, что в результате "for range in ..." наш привычный range превратился в строковую переменную.
Возможно, не совсем для пользования новичками в программировании, которые сходу не смогут понять, в чем в коде проблемаТочно знаю, что боту можно скормить ошибку компилятора\приложения и он с ненулевой вероятностью ее найдет и исправит в своем коде, если вы все еще в том же треде.
Только вот для РФ он не доступен, номер мтс под видом КЗ не жрет (или он и в КЗ недоступен).
Мне понравилось, как он генерит песни и поэмы на разные темы, а также как он может прикидываться терминалом с интерпретатором питона, gcc, файловой системой и т.п.
Что проверял:
1) Писал в файлы через echo > file, читал файлы через cat и содержимое. через ls
2) Запускал питоновские скрипты
3) Компилил сишный код и запускал бинарники
4) пингует 8.8.8.8, но висит в пинге недоступного хоста!
После 4 пункта сеть на меня обиделась, наверное, и перестала работать.
Как у вас это работает? Я пробовал: никем она не хочет прикидываться, поэмы генерирует без рифмы и очень шаблонно, а на ряд вопросов отвечает бредятиной.
Например, в ответ на вопрос «в каком месяце не может быть 30-го числа» я при первой попытке получил ответ, что таких месяцев нет вообще, потом получил ответ с перечислением всех месяцев, в которых меньше 31 дня, то есть включая февраль и апрель.
Главное — правильно спросить.
После этого запроса он работает как надо:
I want you to act as a Linux terminal. I will type commands and you will
reply with what the terminal should show. I want you to only reply with
the terminal output inside one unique code block, and nothing else. Do
not write explanations. Do not type commands unless I instruct you to do
so. When I need to tell you something in English I will do so by
putting text inside curly brackets {like this}. My first command is pwd.
В вузе изучаю C++. Сегодня спрашивал у этого бота по функциям cstring. Даёт разумные ответы. (Объясняет хорошо).
После закинул ему код своей проги, которая не работала. И он понял, что я хотел написать, объяснил мне это.
После я у него спросил об ошибках. Он нашел потенциальных 5 ошибок.
Я попросил их исправить, и он исправил... Правда, накосячил, но не значительно.
Добавил в статью пример 5 для простого прототипирования работы с Postgres. Результат приятно порадовал. Для прототипирования/небольших тестов вполне годно.
How do i find element in slice in Go
import "sort"
slice := []int{3, 7, 1, 9, 5}
index := sort.Search(len(slice), func(i int) bool { return slice[i] >= 5 })
if index < len(slice) && slice[index] == 5 {
fmt.Println("Found element at index:", index)
} else {
fmt.Println("Element not found in slice")
}
Это нормально что поиск конкретного значения
5
выполняется с проверкой на>=
?Проверка
index < len(slice)
корректна, но только потому чтоsort.Search()
вернёт значение большее максимального индекса если ничего не найдёт (это и в доке указано), тогда как в описании решения написаноThis function returns the index of the element in the slice, or -1 if the element is not found.
. Но если бы функция реально возвращала-1
, тоindex < len(slice)
был быtrue
а при вычисленииslice[index]
мы бы получили ошибкуpanic: runtime error: index out of range [-1]
Да, так работает бинпоиск. Search возвращает индекс первого элемента, для которого переданная функция равно true, а это возможно только при условии >= 5.
То есть для сортированного списка 1, 3, 5, 7, 9 переданная функция будет true для всех элементов, начиная с третьего до последнего (из документации sort.Search: "Search uses binary search to find and return the smallest index i in [0, n) at which f(i) is true, assuming that on the range [0, n), f(i) == true implies f(i+1) == true.")
Я в статье упоминал, бот перепутал функции Index и Search, в описании говорится про Index, а реально используется Search, которая никогда не возвращает -1, а возвращает n, если поиск неуспешен (из документации sort.Search: "If there is no such index, Search returns n. (Note that the "not found" return value is not -1 as in, for instance, strings.Index"), поэтому runtime error не случится.
Часто в примерах вижу, что не используется основная фишка - чат, когда есть история разговора и можно поправлять ChatGPT. Например, можно было написать что лучше использовать Index, а не Search, бот тогда обновит код.

Вижу классное нишевое использование подобных ботов, например, в плане поиска нужных библиотек и примеров из них
С этим и гугл вроде хорошо справляется
Спросите вопросы которые вы задаете на собеседовании. :)
Логические задачи он решает в лоб, даже не пытается оптимизировать решение
Скриншот

Классная загадка. Всего 1 монета нужна.
Да, в лучшем случае хватит одной монеты. Но GPT предложил тремя монетами проверить, но даже после трёх монет мы так и не узнаем точно где какой автомат. Выпадет случай два чая и один кофе или два кофе и один чай.
В чем состоит этои лучший случай, где одна проба устраняет все неопределенности?
Лучший случай, когда бросаем монетку в автомат, на котором висит наклейка «чай или кофе». Мы знаем, что это ложь. Поэтому если автомат выдаст кофе, то в этом автомате только кофе. А остальные два автомата просто методом исключения. Автомат с наклейкой «кофе» точно нам его не выдаст, так как кофе мы уже получили, значит в нём чай. А автомат с наклейкой «чай» выдаёт «чай или кофе».
Автомат с наклейкой «кофе» точно нам его не выдаст, так как кофе мы уже получили
Неверная логика. Он может выдать кофе, потому что в действительности является комбо-автоматом.
Он не может выдать кофе, потому что если он окажется комбо-автоматом, значит кофе-автосат и комбо-автомат взаимно перепутаны, а чай-автомат подписан правильно, а это запрещено условиям.
Узнаем точно после всего 1 монеты. Но я не буду вам подсказывать, кроме этого текста.
Тогда и наоборот:
Бросаем монетку в автомат, на котором висит наклейка "чай или кофе", если выдаст чай, то в этом автомате только чай. А в автомате, с надписью "кофе", по условию задачи не может быть кофе, и т.к. мы уже нашли автомат с чаем, то остаётся только один вариант "чай или кофе".
Либо я не понимаю, что означает фраза "выдает ... чай или кофе (определяется случайно)" в условии..
Я исходил из того, что выбор чай или кофе выдать на этот раз определяется случайным образом в момент бросания монетки.
Т.е. в одной и той же ситуации "перепутывания" бросание монетки в такой аппарат будет иногда выдавать чай, а иногда кофе. И иногда может совпасть с "перепутанной" надписью, а иногда нет.
Или "определяется случайно" в условии относится на самом деле не к работе аппарата "случайным образом выдает иногда чай, а иногда кофе", а к процессу приклеивания этикеток (следующей фразе)? Ну типа "иногда этикетку 'чай или кофе' мы наклеиваем на чайный аппарат, а иногда на кофейный"?
Вы всё правильно поняли, но возможно не обратили внимания, что "на всех автоматах наклеены не те этикетки", то есть автомат с этикеткой "чай или кофе" на самом деле всегда выдаёт либо чай, либо кофе.
Да, теперь понял, спасибо.
Коль скоро мы кидаем монетку в аппарат с самой непонятной надписью (чай или кофе), выдает он нам строго определенный напиток, однозначно говорящий, что это за аппарат.
Выдал чай, значит это чайный аппарат (с надписью ЧК); из оставшихся надписей Ч и К, кофе может скрываться только под буквой Ч, ну а К - чай-кофейный).
Решение не просто неоптимизированное, но и неверное. Как это он предлагает бросив одну монетку определить, что автомат выдаёт чай или кофе случайно?
Никто часом не написал ТГ-Бота для этой приблуды? А то захожу.. В прошлой реализации работало, а сейчас мне говорит: извините, не из вашей страны. Я мог бы обойти, конечно, но вдруг кто-то уже накреативил что-то раньше?
OpenAiChat_bot работает, вроде бы, но разметка мессенджера убивает отступы в коде сильно
Ну и в чем тут крутость? Задачи software engineering это планомерно создавать продукт, чтобы он был поддерживаемым, понимаемым, читаемым, искать архитектуру, искать компромисы между системами, командами, удовлетворять требования заказчиков и тд.
а тут какой то вопрос стековерфлоу который гуглится быстрее и разнообразнее
Самое классное, что он и русский с украинским прекрасно понимает
ChatGPT – хайп или реальная помощь разработчику?