Разработка с AI в начале 2025. Выбор LLM (2/3)
Ризонинг
Способность модели рассуждать, делать выводы, устанавливать логические связи между фактами и генерировать ответы, основанные не только на запоминании информации, но и на ее анализе и интерпретации.
В разработке определенно нужны модели с хорошим ризонингом, и чем сложнее и нетривиальнее задачи, тем более важным становится этот фактор.
Появившиеся не так давно "размышляющие" модели навроде ChatGPT o1 (на подходе передовая o3) или Qwen QwQ заточены именно на построение цепочки рассуждений и особенно выделяются способностями решать задачи на ризонинг.
Эта способность не нова, такое поведение можно было и раньше получить от "обычных" моделей, попросив их составлять план действий, думать по шагам и т.п.
Собственно, можно видеть, как тот же Cursor Composer так и делает, когда он просит модель составить план, а потом по этому плану двигается, редактируя код и запуская команды.
Сейчас есть 2 минуса "думающих" моделей:
* дороговизна, т.к. построение и прохождение по цепочке рассуждений вычислительно дорогой процесс;
* скорость работы, т.к. нужно время "подумать" :)
Так что ту же о1 я использую нечасто, да и для большинства стандартных задач это оверкилл, Sonnet'а вполне хватает.
Использование инструментов
Это способность модели принимать в запросе описание набора инструментов, которые она может использовать и умение эти инструменты применять в ответе.
Выглядит в промпте это так, что модели предоставляются контракты для вызова инструментов и ставится задача, которую она потенциально может решить с помощью вызова этих инструментов.
В своем ответе она описывает, какой инструмент и с какими параметрами нужно запустить, мы на своей стороне его запускаем, а в ответ предоставляем ей и/или пользователю результат выполнения.
Эффективное использование инструментов требует следующих способностей модели:
* хорошей общей способности следовать инструкциям;
* умения планировать свои действия;
* точного понимания структуры входящего запроса (как правило, json);
* генерации структурного вывода заданного формата (structured outputs, как правило, тоже в виде json);
* иногда - просить уточнения требований.
За счет всего этого есть возможность организовать цикл с обратной связью и модель будет в автономном режиме (т.е. в режиме агента) решать какую-то задачу.
Простой пример: модель может написать код, запустить тесты, отловить ошибки, поправить код, запустить тесты, и так до тех пор, пока задача не будет решена.
Стоит подчеркнуть, что, конечно, все эти действия модель совершает не сама - их совершает тулинг, выстроенный вокруг модели (такой, как Cursor Composer Agent, к примеру), а модель тут лишь генерирует инструкции.
Так вот, не все модели обладают вышеперечисленными способностями, и в Cursor Composer Agent в том числе из-за этого далеко не все модели поддерживаются.
Вот, к примеру, та же Gemini 2.0 Flash, несмотря на общие неплохие способности к программированию, не всегда следует инструкциям по оформлению своего вывода, чем ломает даже обычный Cursor Composer и приходится (какое средневековье!) руками копировать куски кода из чата в файл.
#ai #work #development
Ризонинг
Способность модели рассуждать, делать выводы, устанавливать логические связи между фактами и генерировать ответы, основанные не только на запоминании информации, но и на ее анализе и интерпретации.
В разработке определенно нужны модели с хорошим ризонингом, и чем сложнее и нетривиальнее задачи, тем более важным становится этот фактор.
Появившиеся не так давно "размышляющие" модели навроде ChatGPT o1 (на подходе передовая o3) или Qwen QwQ заточены именно на построение цепочки рассуждений и особенно выделяются способностями решать задачи на ризонинг.
Эта способность не нова, такое поведение можно было и раньше получить от "обычных" моделей, попросив их составлять план действий, думать по шагам и т.п.
Собственно, можно видеть, как тот же Cursor Composer так и делает, когда он просит модель составить план, а потом по этому плану двигается, редактируя код и запуская команды.
Сейчас есть 2 минуса "думающих" моделей:
* дороговизна, т.к. построение и прохождение по цепочке рассуждений вычислительно дорогой процесс;
* скорость работы, т.к. нужно время "подумать" :)
Так что ту же о1 я использую нечасто, да и для большинства стандартных задач это оверкилл, Sonnet'а вполне хватает.
Использование инструментов
Это способность модели принимать в запросе описание набора инструментов, которые она может использовать и умение эти инструменты применять в ответе.
Выглядит в промпте это так, что модели предоставляются контракты для вызова инструментов и ставится задача, которую она потенциально может решить с помощью вызова этих инструментов.
В своем ответе она описывает, какой инструмент и с какими параметрами нужно запустить, мы на своей стороне его запускаем, а в ответ предоставляем ей и/или пользователю результат выполнения.
Эффективное использование инструментов требует следующих способностей модели:
* хорошей общей способности следовать инструкциям;
* умения планировать свои действия;
* точного понимания структуры входящего запроса (как правило, json);
* генерации структурного вывода заданного формата (structured outputs, как правило, тоже в виде json);
* иногда - просить уточнения требований.
За счет всего этого есть возможность организовать цикл с обратной связью и модель будет в автономном режиме (т.е. в режиме агента) решать какую-то задачу.
Простой пример: модель может написать код, запустить тесты, отловить ошибки, поправить код, запустить тесты, и так до тех пор, пока задача не будет решена.
Стоит подчеркнуть, что, конечно, все эти действия модель совершает не сама - их совершает тулинг, выстроенный вокруг модели (такой, как Cursor Composer Agent, к примеру), а модель тут лишь генерирует инструкции.
Так вот, не все модели обладают вышеперечисленными способностями, и в Cursor Composer Agent в том числе из-за этого далеко не все модели поддерживаются.
Вот, к примеру, та же Gemini 2.0 Flash, несмотря на общие неплохие способности к программированию, не всегда следует инструкциям по оформлению своего вывода, чем ломает даже обычный Cursor Composer и приходится (какое средневековье!) руками копировать куски кода из чата в файл.
#ai #work #development