Я работал над созданием инструмента под названием rustsn, который позволяет генерировать, компилировать и тестировать код с использованием LLM (Large Language Models). Изначально идея заключалась в том, чтобы автоматизировать процесс написания небольших фрагментов кода — так называемых сниппетов — для разных языков программирования на основе объяснений, предоставленных пользователем. Этот инструмент стал развиваться и обрастать новыми возможностями, такими как генерация полного кода для приложений и объяснение существующего кода на основе векторных представлений (эмбеддингов).
Когда я только начинал работу над rustsn, основной задачей было добиться того, чтобы пользователь мог, например, просто описать словами, какую функцию ему нужно написать, а система автоматически генерировала бы рабочий код. Я начал с Rust, поскольку этот язык обладает мощными возможностями для работы с типами и тестированием, что делает его идеальным для написания безопасного и производительного кода. Позже я добавил поддержку других языков, таких как JavaScript, Python, и TypeScript.
Этот инструмент стал гораздо больше, чем просто генератор кода. Например, я добавил команду ask, которая позволяет получать объяснение к существующему коду вашего проекта. Для этого используется специальная модель, которая анализирует исходники и находит наиболее релевантные файлы на основе вашего вопроса.
В ближайшее время я планирую значительно расширить функционал rustsn. Первое, что я хочу сделать — это интегрировать Docker, чтобы пользователи могли запускать инструмент не только на хостовой машине, но и в контейнерах. Это упростит развертывание и использование инструмента на различных платформах, обеспечив стабильность окружения.
Кроме того, одной из ключевых целей является расширение возможности генерации кода. Сейчас rustsn отлично справляется с генерацией отдельных функций, но мне бы хотелось, чтобы он мог создавать полноценные посевные проекты — от командных утилит до веб-сервисов с REST API. Это сделает инструмент гораздо более полезным для разработчиков, которые хотят быстро получить скелет приложения на основе простого описания.
И наконец, чтобы сделать работу с rustsn ещё удобнее, планирую добавить графический интерфейс в виде веб-приложения. Это позволит пользователям взаимодействовать с инструментом через браузер, не заходя в терминал, что особенно удобно для тех, кто не привык работать с командной строкой.
Я вижу огромный потенциал в развитии этого проекта, и дальнейшие шаги направлены на то, чтобы сделать rustsn универсальным инструментом для генерации и анализа кода, способным помочь разработчикам на всех этапах их работы.
Основной вызов, который я вижу в развитии rustsn, связан с тем, что использование коммерческих, "фронтирных" ИИ, требующих постоянных денежных затрат на API и ресурсы, проиграет борьбу с open-source решениями. Мы уже наблюдаем тенденцию к тому, что открытые модели, которые можно запускать на собственном оборудовании, становятся все более мощными и удобными для разработчиков. Именно поэтому я сделал ставку на интеграцию rustsn с Ollama — это бесплатное и локальное решение, позволяющее запускать LLM на собственном компьютере, обеспечивая максимальную гибкость и независимость.
Я уверен, что через 1-2 года оптимизация LLM сделает возможным их запуск не на больших кластерах GPU, как это требуется сегодня, а на обычных ноутбуках с относительно скромным железом. Это будет настоящей революцией для разработчиков: каждый сможет запускать мощные ИИ модели локально, без зависимости от сторонних сервисов и их тарифов. Моя цель — подготовить rustsn к этой новой реальности, делая его более эффективным, автономным и доступным для каждого разработчика, независимо от их бюджета или инфраструктуры.
Таким образом, rustsn не только облегчит процесс написания и анализа кода, но и станет частью будущего, где каждый программист сможет использовать локальные ИИ-решения для создания приложений, анализа существующих проектов и автоматизации рутины.
Если хотите принять участие в проекте LLM и заодно освоить язык программирования Rust, добро пожаловать в мой проект.