Несколько дней назад я опубликовал статью Создание инструмента генерации кода с помощью Rust и локальных LLM от Ollama
Проект Rustns призван упростить жизнь разработчикам Rust за счет автоматизации утомительных задач. Мой инструмент генерирует фрагменты кода Rust из объяснений пользователя, компилирует их, разрешает зависимости, генерирует тесты.
Изначально проект задумывался как универсальное решение для генерации кода для самых популярных языков программирования, включая Java, Python и TypeScript. Я стремился создать инструмент, который бы облегчил работу разработчиков, предоставляя возможность генерировать код сразу на нескольких языках. Однако, приступив к реализации мультиязычности, я столкнулся с серьёзными трудностями.
Попытка унифицировать код для различных языков оказалась куда более сложной задачей, чем я ожидал. Каждый язык программирования имеет свои особенности, что значительно усложняет код и поддержку всех этих языков в одном проекте.
В итоге я пришёл к выводу, что нужно сконцентрировать свои усилия на одном языке программирования. В моём случае это Rust, на котором был написан проект, генерирующий Rust-код.
Вот упрощенная диаграмм работы проекта:
С детальной логикой работы программы можно познакомится посмотрев диаграмму состояний, которую программа парсит и использует в свое работе: https://github.com/evgenyigumnov/rustsn/blob/main/logic.md
Также все промпты, которые система посылает в LLM на основе диаграммы состояний можно увидеть в этом файле: https://github.com/evgenyigumnov/rustsn/blob/main/prompt.txt
За последнее время в проекте я проделал следующие изменения:
-
Версия 0.2.0: Перенёс текстовые запросы из кода в файл
prompt.txt
и логику обработки — в файлlogic.md
-
Версия 0.3.0: Добавил поддержку OpenAI API.
-
Версия 0.4.0: Внёс изменения в функции извлечения результатов работы LLM. Функция
Extract_code
была заменена на три новые функции:extract_code
,extract_dep
иextract_test
. Это разделение позволяет более тонко управлять извлечением кода, зависимостей и тестов из результатов генерации LLM.
Посетить мой репозиторий GitHub можно тут: https://github.com/evgenyigumnov/rustsn
Пожалуйста, проверьте мой файл README.md для получения инструкций по настройке и рекомендаций по внесению изменений в код.
P.S.
В целом, код достаточно универсален, и его можно использовать в своих личных целях, если Вам не интересна тема генерации кода на Rust. Например:
-
Написать генератор кода для своего любимого языка программирования.
-
Написать телеграм чат-бота для какого-то бизнеса.
-
Написать имитатора учителя английского языка.
и тд.
Автор: igumnov