# 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
>\- А что, если сократить время написания плохого кода?
\- Да, и давайте перенос строки будем делать в виде котика!

>В инструкции пока нет поддержки RAG и семантики.
# IDE
>А как вам такая возможность: по коду составлять описание, что он делает?
Если вы работаете в PyCharm/IDEA, то вам может быть доступен плагин Devoxx, который умеет обращаться к LLM с целью кодревью и всем, что вы его попросите.
Ниже рассмотрен вариант связки плагина с API-сервисом от LM Server.
## Возможности
* Поддержка локальных и облачных языковых моделей: Anthropic, Groq, Ollama, OpenAI, ...
* Подсказки для выбранных фрагментов кода
* Ревью кода
* Составление описания, что делает код.
## План установки
* Установите плагин (см. ниже)
* Убедитесь, что у вас запущены Ollama, LMStudio или GPT4All
* Обновите промпты в настройках
* Необязательно: Добавьте ключи API для облачных LLM-провайдеров
* Начните использовать плагин
Выполните установку плагина из маркетплейса. Если по какой-то причине плагин не устанавливается (due to export control regulations, опенсорс да):

...вы можете скопировать этот плагин с другого компьютера или [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):

## Настройка
1. После установки плагина перейдите в настройки программы (через меню File), чтобы настроить параметры LLM, такие как температура, максимальное количество токенов вывода, повторные попытки и тайм-ауты. При желании вы также можете добавить облачные ключи API LLM, если хотите их использовать.
> DevOps для вас может подготовить сервис API, работающий как незащищенный HTTP-сервер. Не используйте его удаленно, если вы работаете с чувствительными данными, поскольку трафик может быть перехвачен и открытые данные будут использованы злоумышленниками.
Сказано, что для правильного определения контекстного окна в LM Studio нужно использовать URL http://localhost:1234/api/v0, что видимо ошибочно. Контекстное окно модели приходится увеличивать при ее загрузке (4096 --> 8192).

На вкладке 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 будут добавлены позже:

## Работа с плагином
1. Теперь либо откройте исходный файл и выберите фрагмент кода, либо щелкните правой кнопкой мыши на файле проекта, чтобы добавить его в контекст окна.
Нажмите кнопку Devoxx:

2. Выберите из выпадающего списка подходящую модель. К сожалению, некоторые модели из списка могут не подходить для работы, например эмбеддинговые. Фильтр моделей не настраивается.

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