- А что, если сократить время написания плохого кода?
- Да, и давайте перенос строки будем делать в виде котика!
В инструкции пока нет поддержки RAG и семантики.
IDE
А как вам такая возможность: по коду составлять описание, что он делает?
Если вы работаете в PyCharm/IDEA, то вам может быть доступен плагин Devoxx, который умеет обращаться к LLM с целью кодревью и всем, что вы его попросите.
Ниже рассмотрен вариант связки плагина с API-сервисом от LM Server.
Возможности
- Поддержка локальных и облачных языковых моделей: Anthropic, Groq, Ollama, OpenAI, …
- Подсказки для выбранных фрагментов кода
- Ревью кода
- Составление описания, что делает код.
План установки
- Установите плагин (см. ниже)
- Убедитесь, что у вас запущены Ollama, LMStudio или GPT4All
- Обновите промпты в настройках
- Необязательно: Добавьте ключи API для облачных LLM-провайдеров
- Начните использовать плагин
Выполните установку плагина из маркетплейса. Если по какой-то причине плагин не устанавливается (due to export control regulations, опенсорс да):
…вы можете скопировать этот плагин с другого компьютера или GitHub. Обратите внимание на следующие папки и файлы (пример с Ubuntu):
# в домашней папке
$ 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):
Настройка
-
После установки плагина перейдите в настройки программы (через меню 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Модели имеют возможность переводить русские запросы на английский. Неправильный перевод терминов может сильно влиять на качество ответа, равно как и неточный вопрос. Сравните запросы: “найди страницу с инструкцией” и “предоставь ссылку на страницу”. Как думаете, в каком случае бот предоставит ссылку? Запрашивайте строго то, что ожидаете (прямо как в постановке задачи человеку).
-
На вкладке Web search находится опция взаимодействия модели с интернетом (включена по умолчанию). Если у вас есть персональный ключ Google Web Search, то можете использовать.
-
Детали настройки RAG будут добавлены позже:
Работа с плагином
-
Теперь либо откройте исходный файл и выберите фрагмент кода, либо щелкните правой кнопкой мыши на файле проекта, чтобы добавить его в контекст окна.
Нажмите кнопку Devoxx:
-
Выберите из выпадающего списка подходящую модель. К сожалению, некоторые модели из списка могут не подходить для работы, например эмбеддинговые. Фильтр моделей не настраивается.
-
Определив контекст приглашения, вы можете начать задавать вопросы или использовать предопределенные команды: /test, /review, /explain, /help.
-
Как только вы получите ответ от выбранной LLM, используйте кнопки над кодом, чтобы скопировать примеры кода в буфер обмена или вставить их в свой файл. Или вы можете получить готовый текст для описания работы скрипта в формате Markdown (на английском языке, но вы можете указать в промпте, какой язык использовать в ответе).
Пример вывода описания
Анализ /explain скрипта с помощью модели qwen2.5-coder-14b-instruct:
-
число строк кода: 500
-
контекстное окно модели: 8192 (увеличено с дефолтного 4096)
-
токенов:
"usage": { "prompt_tokens": 6298, "completion_tokens": 620, "total_tokens": 6918 } -
время анализа на карте RTX 5060Ti: 10 секунд
-
качество ответа: более чем устраивает в моем случае. Модель смогла по коду и комментариям составить структурированное описание, что делает этот код.
Спойлер
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
-
Color Definitions:
GREENandNCare used for colored output in the terminal.
-
Help Function (
show_help):- Provides usage instructions, description, options, and examples of how to run the script.
-
Argument Parsing:
- The script uses a
whileloop withcasestatements to parse command-line arguments. - Options include setting DPI, compression type, OCR language, and whether to keep TIFF/PNG/TXT files after processing.
- The script uses a
-
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).
-
Logging Setup:
- Initializes a log file to record all actions and outputs.
-
File Discovery:
- Uses
findto locate PDF and JPG/JPEG files in the specified directory or current directory if none is provided.
- Uses
-
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.
- For each PDF, it checks if text is already present using
-
Processing Image Files:
- For each JPG/JPEG, it directly performs OCR using Tesseract.
-
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.
-
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:
./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.
Вывод
Очень удобный инструмент, как для поиска оптимальных решений (например, написание функций или справки, визуализации и логирования), так и написания документации.
Схема работы
Полная схемы в процессе разработки выглядит так. В следующей статье расскажу о том, как использовать AI Code Review в Gitlab перед запросом на слияние (MR).
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)






