# AI для разработчика (часть 1, IDE) **Category:** [AI](https://discuss.rabkesov.ru/c/ai/7) **Created:** 2025-07-03 23:45 UTC **Views:** 34 **Replies:** 1 **URL:** https://discuss.rabkesov.ru/t/ai-dlya-razrabotchika-chast-1-ide/65 --- ## Post #1 by @ivan
>\- А что, если сократить время написания плохого кода? \- Да, и давайте перенос строки будем делать в виде котика!
![На изображении человек, чья голова горит огнем, сидит перед компьютером и рисует карандашом, что символизирует творческий кризис или выгорание. (Подпись к изображению от AI)|500x500](upload://rr5IxSuOKxcfzODkdSoJagAIfBL.jpeg) >В инструкции пока нет поддержки RAG и семантики. # IDE >А как вам такая возможность: по коду составлять описание, что он делает? Если вы работаете в PyCharm/IDEA, то вам может быть доступен плагин Devoxx, который умеет обращаться к LLM с целью кодревью и всем, что вы его попросите. Ниже рассмотрен вариант связки плагина с API-сервисом от LM Server. ## Возможности * Поддержка локальных и облачных языковых моделей: Anthropic, Groq, Ollama, OpenAI, ... * Подсказки для выбранных фрагментов кода * Ревью кода * Составление описания, что делает код. ## План установки * Установите плагин (см. ниже) * Убедитесь, что у вас запущены Ollama, LMStudio или GPT4All * Обновите промпты в настройках * Необязательно: Добавьте ключи API для облачных LLM-провайдеров * Начните использовать плагин Выполните установку плагина из маркетплейса. Если по какой-то причине плагин не устанавливается (due to export control regulations, опенсорс да): ![На экране отображается окно ошибки, сообщающее о том, что плагин "DevoxxGenie" не установлен и временно недоступен для установки из-за ограничений контроля. (Подпись к изображению от AI)|690x376](upload://gKfTyqv6faShY8nt0ag9xUaH8Ig.png) ...вы можете скопировать этот плагин с другого компьютера или [GitHub](https://github.com/devoxx/DevoxxGenieIDEAPlugin/releases/download/v0.6.7/DevoxxGenie-0.6.7.zip). Обратите внимание на следующие папки и файлы (пример с Ubuntu): ```bash # в домашней папке $ find . -iname 'devoxx*' ./.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml ./.cache/JetBrains/PyCharmCE2025.1/DevoxxGenie ./.cache/JetBrains/PyCharmCE2025.1/plugins/DevoxxGenie.zip ./.local/share/JetBrains/PyCharmCE2025.1/DevoxxGenie ``` - Распакуйте файл DevoxxGenie.zip в папке `~/.local/share/JetBrains/PyCharmCE2025.1` или в IDEA, по ситуации. В моем случае папку PyCharmCExxx пришлось создавать руками - ее не было - Выложите конфиг `~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml` - Необязательно. Возможно вам понадобится добавить плагин и его архив в кеш. Теперь запустите IDE и вы должны увидеть плагин с готовыми настройками (на вкладке Installed): ![На изображении отображается окно настроек IDE, показывающее установленные плагины, включая пакеты языковых средств для китайского, японского и корейского языков. (Подпись к изображению от AI)|690x367](upload://zhRPNYpgtdcMU1upNbivGsosnJG.png) ## Настройка 1. После установки плагина перейдите в настройки программы (через меню File), чтобы настроить параметры LLM, такие как температура, максимальное количество токенов вывода, повторные попытки и тайм-ауты. При желании вы также можете добавить облачные ключи API LLM, если хотите их использовать. > DevOps для вас может подготовить сервис API, работающий как незащищенный HTTP-сервер. Не используйте его удаленно, если вы работаете с чувствительными данными, поскольку трафик может быть перехвачен и открытые данные будут использованы злоумышленниками. Сказано, что для правильного определения контекстного окна в LM Studio нужно использовать URL http://localhost:1234/api/v0, что видимо ошибочно. Контекстное окно модели приходится увеличивать при ее загрузке (4096 --> 8192). ![На экране отображается окно настроек DevoxeGenie, где пользователь настраивает URL-адреса для различных локальных LLM-провайдеров и OpenAI. (Подпись к изображению от AI)|599x500](upload://a1TZn4KG3kqBYd9sq6XNl2XWXa.png) На вкладке Prompts вы можете сконфигурировать системный промпт и пользовательские запросы. Системный промпт - это запрос, который посылается вместе с пользовательским запросом и определяет область задачи, ограничения поиска и задает формат выдаваемой информации. Это критически важный момент. Удалите из системного промпта строки: ``` The Devoxx Genie is open source and available at https://github.com/devoxx/DevoxxGenieIDEAPlugin. You can follow us on Bluesky @ https://bsky.app/profile/devoxxgenie.bsky.social. ``` Все языковые модели понимают разметку Markdown, поэтому вы можете составлять структурированные промпты со списками, подпунктами, блоками кода. > DevOps: дефолтные промпты (запрос с ограничениями) заданы в файле > > ``` > ~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml > ``` > > Модели имеют возможность переводить русские запросы на английский. Неправильный перевод терминов может сильно влиять на качество ответа, равно как и неточный вопрос. Сравните запросы: "найди страницу с инструкцией" и "предоставь ссылку на страницу". Как думаете, в каком случае бот предоставит ссылку? Запрашивайте строго то, что ожидаете (прямо как в постановке задачи человеку).
2. На вкладке Web search находится опция взаимодействия модели с интернетом (включена по умолчанию). Если у вас есть персональный ключ Google Web Search, то можете использовать. 3. Детали настройки RAG будут добавлены позже: ![На изображении отображаются настройки программы DevoxGenie, включающие параметры для сканирования и копирования проектов, а также настройки Retrieval-augmented Generation (RAG) с использованием ChromaDB. (Подпись к изображению от AI)|675x500](upload://gYED7Xn3c0twmTBEwwXsRF0f3pK.png) ## Работа с плагином 1. Теперь либо откройте исходный файл и выберите фрагмент кода, либо щелкните правой кнопкой мыши на файле проекта, чтобы добавить его в контекст окна. Нажмите кнопку Devoxx: ![На экране компьютера отображается окно терминала с кодом shell, а также открытые папки с файлами проекта. (Подпись к изображению от AI)|600x305](upload://2aBOJ4FADHQqiRrCP6OETygGNFT.png) 2. Выберите из выпадающего списка подходящую модель. К сожалению, некоторые модели из списка могут не подходить для работы, например эмбеддинговые. Фильтр моделей не настраивается. ![На экране отображается список различных моделей машинного обучения, включая модели на основе GPT и Qwen, а также настройки для работы с RAG и веб-интерфейсом. (Подпись к изображению от AI)|507x500](upload://wgYHxRY5QimRgxam4SGxLL60KSd.png) 3. Определив контекст приглашения, вы можете начать задавать вопросы или использовать предопределенные команды: /test, /review, /explain, /help. 4. Как только вы получите ответ от выбранной LLM, используйте кнопки над кодом, чтобы скопировать примеры кода в буфер обмена или вставить их в свой файл. Или вы можете получить готовый текст для описания работы скрипта в формате Markdown (на английском языке, но вы можете указать в промпте, какой язык использовать в ответе). ## Пример вывода описания Анализ `/explain` скрипта с помощью модели `qwen2.5-coder-14b-instruct`: - число строк кода: 500 - контекстное окно модели: 8192 (увеличено с дефолтного 4096) - токенов: ``` "usage": { "prompt_tokens": 6298, "completion_tokens": 620, "total_tokens": 6918 } ``` - время анализа на карте RTX 5060Ti: 10 секунд - качество ответа: **более чем устраивает** в моем случае. Модель смогла по коду и комментариям составить структурированное описание, что делает этот код. [details="Спойлер"] Certainly! Let's break down the script into simpler terms to help a junior developer understand its functionality. ### Overview This script is designed to process PDF and image files (JPG/JPEG) by performing Optical Character Recognition (OCR) using Tesseract. It checks if the PDF contains text, converts it to TIFF and PNG formats if necessary, and logs all actions for detailed reporting. ### Key Components 1. **Color Definitions**: * `GREEN` and `NC` are used for colored output in the terminal. 2. **Help Function (`show_help`)**: * Provides usage instructions, description, options, and examples of how to run the script. 3. **Argument Parsing**: * The script uses a `while` loop with `case` statements to parse command-line arguments. * Options include setting DPI, compression type, OCR language, and whether to keep TIFF/PNG/TXT files after processing. 4. **Validation**: * Checks if the provided DPI is within a valid range (72-1200). * Ensures the compression algorithm is one of the supported types (`group4`, `lzw`, `zip`). 5. **Logging Setup**: * Initializes a log file to record all actions and outputs. 6. **File Discovery**: * Uses `find` to locate PDF and JPG/JPEG files in the specified directory or current directory if none is provided. 7. **Processing PDF Files**: * For each PDF, it checks if text is already present using `pdftotext`. * If text is found, it logs the file as a text-containing PDF. * If no text is found, it converts the PDF to TIFF and PNG formats, then performs OCR on the TIFF. 8. **Processing Image Files**: * For each JPG/JPEG, it directly performs OCR using Tesseract. 9. **Statistics Calculation**: * Calculates various statistics such as total characters recognized, maximum characters in a single file, distribution of text by character count, and more. * Computes the percentage of scanned PDFs and average recognition speed. 10. **Summary Generation**: * Generates a detailed summary report including all processed files, statistics, and options used. * Logs this summary to both the terminal and the log file. ### Example Usage To run the script with specific options: ```bash ./work2.sh --dpi 600 --compress lzw --lang rus+eng --no-keep-tiff --no-keep-txt ./docs ``` This command sets the DPI to 600, uses LZW compression for TIFF files, specifies Russian and English languages for OCR, and does not keep TIFF/PNG/TXT files after processing. ### Conclusion The script is a comprehensive tool for batch processing of PDFs and images with OCR capabilities. It provides detailed logging and statistics, making it useful for automation and analysis in document processing tasks. [/details] # Вывод Очень удобный инструмент, как для поиска оптимальных решений (например, написание функций или справки, визуализации и логирования), так и написания документации. # Схема работы Полная схемы в процессе разработки выглядит так. В следующей статье расскажу о том, как использовать AI Code Review в Gitlab перед запросом на слияние (MR). ```mermaid graph LR classDef pclass fill:#f5f5dc classDef wclass fill:#f96 classDef pmclass fill:#4f7 classDef yclass fill:#ff9 classDef oclass fill:#ffbf00 B(IDEA) --> |Code pre-Review|B1(AI Devoxx):::pclass B1 --> C(Правка):::wclass C --> D{Самопроверка}:::oclass B --> |Твой код идеален|F F --> H2{Code Review}:::oclass H2 -.-> |На доработку|B1 D --> |Проверено|F(MR):::pmclass H2 --> E(Merged) ``` # Ссылки https://github.com/devoxx/DevoxxGenieIDEAPlugin --- ## Post #2 by @ivan # Результаты тестов Ревью кода 102 строк скрипта Python. У некоторых моделей была вторая попытка запуска, чтобы исключить время загрузки модели в память и прогрев. В колонке Recom приведено количество рекомендаций от модели. Знак плюс означает подробный разбор. Code = none означает вывод без примера исправленного кода. Время анализа в колонках 1st, 2nd, секунд. | | Arch | VL | Model | Params | Quant | GB | Recom | Code | 1st | 2nd| |--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---| |1 | qwen3 | | deepseek-r1-0528-qwen3 | 8b | q8_0 | 8.71 | 3 | - | 126 | | |2 | llama | | deepseek-r1-distill-llama | 8b | q4_0 | 5.28 | 6 | - | 34 s | | |3 | qwen3 | | deepseek-r1-0528-qwen3 | 8b | q4_k_m | 5.03 | 3 | none | 85 | | |4 | gemma3 | | [gemma-3](https://huggingface.co/lmstudio-community/gemma-3-12b-it-GGUF) | 12b | q6_k | 9.66 | 10+ | - | 84 | | |5 | gemma3 | :eye: | [gemma-3](https://huggingface.co/lmstudio-community/gemma-3-4b-it-GGUF) | 4b | q8_k_xl | 6.84 | 11+ | - | 49 | | |6 | gemma3n | | gemma-3n | 6.9b | q8_0 | 7.35 | 2 | none | 20 | | |7 | gemma3 | | gemma-3 | 12b | q4_k_m | 7.30 | 10++ | - | 66 | | |8 | gemma3 | :eye: | gemma-3 | 4b | q8_0 | 4.98 | 4 | - | 41 | | |9 | llama | | llama-3-gpt4o-ru | 8b | q4_k_m | 4.92 | 8 | none | 25 | | |10 | llama | | llama 3.2 | 8x3b | q3_k_s | 8.25 | 6 | - | 24 | | |11 | llama | | llama 3.1 | 8b | q6_k | 6.60 | 8 | - | 25 | | |12 | llama | | llama 3.1 | 8b | q8_0 | 8.54 | 8 | - | 35 | | |13 | phi3 | | [phi-4](https://huggingface.co/lmstudio-community/phi-4-GGUF) | 15b | q4_k_m | 9.05 | 12 | - | 47 | 34| |14 | phi3 | | [phi-4-reasoning](https://huggingface.co/lmstudio-community/Phi-4-reasoning-GGUF) | 15b | q4_k_m | 9.05 | 13 | - | 66 | 14| |15 | llama | | mistral-nemo-2407 | 12b | q6_k | 10.06 | 5 | - | 40 | 25| |16 | llama | | oh-dcft-v3.1-gemini-1.5-flash | 8b | 6_k | 6.60 | 5 | - | 29 | 27| |17 | qwen3 | | qwen3-14b-gemini | 14b | q4_k_m | 9.00 | 13+ | - | 127 | 76| |18 | qwen3 | | [qwen3-8b](https://huggingface.co/lmstudio-community/Qwen3-8B-GGUF) | 8b | q8_0 | 8.71 | 14+ | - | 63 | 43| |19 | qwen2 | | qwen2.5-coder | 14b | q4_k_m | 8.99 | 8 | - | 47 | 36| |20 | qwen2vl | | qwen2.5-vl | 7b | q8_0 | 8.10 | 8+4 | - | 41 | 36| |21 | qwen2vl | | spaceQwen2.5-vl | 3b | f16 | 6.18 | 3 | - | 30 | | Итоговый код не проверялся на работоспособность. Давалась субьективная оценка глубины анализа. Наибольший интерес представляют модели №5, 7, 14, 18 и в меньшей степени 20. С помощью этих моделей проведена суммаризация выбранной темы форума и результаты лучше всего у Phi 4. Gemma 3 и Qwen 3 тоже выглядят неплохо. У геммы к тому же есть функция распознавания картинок, а квен часто переходит на английский. Тест проводился на RTX 5060Ti 16gb (15,5, в которые больше модели больше 9,5gb не загрузятся). Qwen часто переключается на английский, поэтому его сложно использовать в суммаризации. Сервер: https://lmstudio.ai Длина контекста повышалась с 4096 до 8192. Для ревью кода и чат-бота: https://huggingface.co/lmstudio-community/Qwen3-8B-GGUF Для ревью, чат-бота и суммаризации https://huggingface.co/lmstudio-community/phi-4-GGUF Для чат-бота и суммаризации https://huggingface.co/lmstudio-community/gemma-3-12b-it-GGUF Для распознавания картинок https://huggingface.co/lmstudio-community/gemma-3-4b-it-GGUF --- **Canonical:** https://discuss.rabkesov.ru/t/ai-dlya-razrabotchika-chast-1-ide/65 **Original content:** https://discuss.rabkesov.ru/t/ai-dlya-razrabotchika-chast-1-ide/65