Шаг 3. Отладка кода программы
Оригинал тут: https://nikitayev.livejournal.com/149101.html
Итак, ранее рассмотрены первых два шага: 1. Улучшение технического задания с помощью специального промпта: https://nikitayev.livejournal.com/148713.html 2. Генерация программ на Python с использованием больших языковых моделей (LLM): https://nikitayev.livejournal.com/147383.html
Пришло время рассмотреть последний шаг — отладку. Как оказалось, на этом этапе необходимо иметь большую языковую модель с возможностями максимально продвинутыми. Перепробовал массу малых LLM и оказалось, что использовать сразу после кодогенерации с оперативной заменой системного промта возможно только модели, у которых 80+ слоёв.
1. Qwen2.5-72B-Instruct-GGUF/qwen2.5-72b-instruct-fp16-00001-of-00042.gguf — не быстрая, очень качественная. Требует более 128ГБ оперативной памяти. Размер контекста — 32КБ. 80 слоёв. 2. Llama-3.1-Nemotron-70B-Instruct_iMat_GGUF/Llama-3.1-Nemotron-70B-Instruct_fp16-00001-of-00004.gguf — очень мощная не быстрая модель. Результат иногда лучше, иногда на том же уровне, чем Qwen-2.5-72B-Instruct. Большой плюс — размер контекста 128КБ. 80 слоёв. 3. Другие модели, которые ещё больше: LLama 3.1 405B, Mistral Large и другие.
Если нет цели заниматься отладкой сразу во в том же чате, где была проведена кодогенерация — то можно использовать и меньше LLM. Малые LLM сильно отвлекаются на формулировку первоначального ТЗ и сам процесс создания программы — поэтому так нужны более «умные» модели с бОльшим количеством слоёв. Промпты опубликовал тут: https://disk.yandex.ru/d/iP_f37VTFKm_rA Как это выглядит? Запускаем LM Studio: https://lmstudio.ai/ Выбираем такие LLM (подчёркнуты): .... Замечу, что всегда старайтесь выбирать как можно бОьшую битность. Минимум F16 и желательно F32 — в идеале. Сначала запускаем кодогенерацию: .... Потом запускаем программу и видим ошибку. Ошибку копируем из консоли и вставляем в пользовательский промпт и меняем системный промпт на отладочный: .... Так можно повторять много раз, даже можно менять используемую LLM.В конце мы должны получить рабочую программу. P.S. Если программа всё никак не «чинится», то придётся нужные переменные вытащить отдельно при наличии ошибки, либо просто перегенерировать программу. И уточнение ТЗ также не помешает. Ещё один приём — это генерировать уточнения для ТЗ с помощью одной LLM, генерировать код — с помощью второй LLM, а отладить — третьей LLM. Очень точные модели и довольно разговорчивые делает Mistral. Хорошие кодеры — Qwen 2.5 72B. Отладкой можно заниматься привлекая LLama 3.1 Nemotron 70B. Надеюсь, информация изложенная мной ещё немного всем поможет достичь коммунизма.