Pull to refresh

Comments 20

А почему среди открытых моделей выбраны только маленькие?

Без как минимум DeepSeek-Coder-V2, Llama3:70b и Qwen2:72b обзор открытых решений выглядит очень однобоким.

Один из выводов исследования - большие платные модели делали функциональные ошибки так же часто, как и бесплатные маленькие

А что мешает приделать к LLM компилятор с проверкой синтаксиса и обязательство для LLM генерировать тесты, которые потом запускать? Пока не прошли все тесты, пусть LLM ответ пользователю не даёт, продолжая попытки. Понятно, что всё равно нет гарантии, что на выходе будет что-то работоспособное, но как минимум, качество повысится.

Оно галлюцинировать не начнет? В том смысле что «вот код, вот тесты, все компилируется, тесты проходят, я сделяль», эдакое вольное сочинение на тему входящей задачи.

Даже если начнёт? В корректировочном промпте подправите ход решения как и с любыми ошибками.

Если решение за первый промпт не получилось сгенерить, то корректировать уже смысла не имеет. Там будет мусор.

Зато есть плюс... Новые и более производительные процессоры есть чем занять.

Опять же продажи бубнов для настройки ИИ можно наладить и курсы бубен бития открыть.

Есть ещё очень хороший вопрос про достоверность и полноту тестовых данных. А это непосредственно влияет на результат. Если разработчик пишет алгоритм и находит несоответствие при тестировании он проверяет и тестовый набор и алгоритм. А вот ИИ этого лишён.

Это кстати легко сделать. Если использовать gemini то вообще в несколько строк делается, там сильно упрощен запуск функций (не надо описывать функции, не надо в несколько проходов их запускать вручную, достаточно просто передать список доступных функций и библиотека genai сама всё сделает).

Я своего телеграм бота научил сохранять и запускать файлы, так что он теперь пишет код, запускает его, смотрит вывод, переписывает и снова запускает. В первых версия он сталкивался с ошибками передачи текста в функцию, то есть писал нормальные программы но после их сохранения там появлялись лишние символы типа \\n вместо \n, и он пытался бороться с этим разными способами, в итоге переписал программу в однострочник и получил нужный результат. В рамках одного запроса(напиши программу такую то) он написал нормальную программу, сохранил-запустил-увидел ошибки синтаксиса в выводе, переписал по другому - снова ошибки, переписал по другому (использовал вариант с exec и кодированием строк), тоже какие то ошибки получил и в итоге попробовал удачный вариант с однострочником, больше 5 попыток за 1 запрос сделал сам.

А можно статью подробную на эту тему?

Здравствуйте, можете расписать подробнее об боте или дать гит\ссылку на бота?

Есть проект gpt engneer он вроде про примерно это, я пробовал один раз всё равно странно работает можешь загуглить.

По мере того, как описания проблем в бенчмарках удлиняются и становятся более сложными, LLM испытывают трудности с выполнением требований формата ввода‑вывода и с большей вероятностью генерируют неполные синтаксические структуры.

"Ты не забывай, что у меня в голове опилки. Длинные слова меня только расстраивают" ⓒ

А если серьёзно, вот интересно, можно ли дотренировать модель на какой-нибудь конкретный проект и пусть она там таски из жиры реализует. Была бы хоть польза какая.

Очень вряд ли. А вот черновик тестов болван пишет неплохо, по моему опыту ChatGPT очень хорош. А вот с локальной Qwin договориться не получилось, хотя может из-за того что у меня карта слабая, на 8Гб - но выдает какую-то ерунду на отвали.

Основная проблема моделей - они оперируют неактуальными данными о языке и его "ландшафте". Используют старые подходы и либы. Я пытался привлечь gpt-болвана для пета на Go - ну оно работает, но кажется за такое в приличной компании забили бы трубочками от коктейля. А еще он постоянно врет, особенно если ты пытаешься получить несуществующий результат. У меня он легко соглашался писать конфиги для nginx с выдуманными директивами :)

Интересно, есть ли подходы с генерацией кода через рекурсивный вызов LLM с переходом от общего к частному?

Условно, первый раз модель не пишет код, а пишет шаги алгоритма крупными мазками + сигнатуры методов на каждый шаг

Потом каждый шаг подаем на второй уровень, где эта же модель (с отдельным контекстом на каждый шаг с первого уровня) генерирует подробное описание со входами и выходами функции

На третьем - уже пишется код под ТЗ второго. То есть, чтобы в итоге получить код, шел не один вызов к модели, а столько, сколько надо шагов. Если алгоритм нужен очень объемный, то еще и шаги над шагами.

То есть, чтобы каждый конкретный вызов работал с предельно малым контекстом

Мне тоже кажется, что сейчас проблема генерации кода именно в некорректном применении самой модели. Надо не забывать, что нейронки созданы для решения задач, которые почти невозможно решить алгоритмами. Если разбить задачу программирования на более мелкие задачи и реализовать процесс программирование как с применением алгоритмов, так и применением нейронки, то получится идеально. Проблема в том, что нейронка не подходит для решение задач с четкими правилами, таких как синтаксис языка, она их тупо забывает.

Вообще, интересно, нельзя ли синтаксис языка жёстко закрепить в процесс генерации токенов сетью?

Чтобы сеть не генерировала следующий токен из полного многообразия языка, а получала на каждом слове short-list возможных токенов, рассчитаный по грамматике языка программирования?

Рекурсивно пробуют, вроде даже получается что-то улучшить. Но это пока небольшие примеры и они заточены на индивидуальные задачи (например, арифметические игры). До генерации кода там пока далеко, но сам подход, где LLM это рекурсивный оператор для решения задач выглядит интересным.

https://arxiv.org/pdf/2305.10601

Данный текст написан и переведён нейросетью для оправдания нейросетей

Sign up to leave a comment.