開発者向けAI(第1部、IDE)

  • では、悪いコードの書く時間を短くするってどうでしょう?
  • はい、そして改行は猫の形にしましょう!


画像には、頭部が炎で燃えている人物がコンピュータの前で鉛筆で描いている様子が描かれており、これは創造的クライシスや燃え尽き症候群を象徴しています。(AIによる画像キャプション)|500x500

現在のインストラクションでは、RAGやセマンティクスのサポートは含まれていません。

IDE

では、このような機能はどうでしょう:コードからその機能を説明する文章を作成する。

PyCharm/IDEAをご利用の場合、LLM(大規模言語モデル)にコードレビューを依頼したり、何でも依頼できる「Devoxx」プラグインが利用可能です。

以下では、このプラグインをLM ServerのAPIサービスと連携させる方法を紹介します。

機能

  • ローカルおよびクラウドの言語モデルのサポート:Anthropic、Groq、Ollama、OpenAI、…
  • 選択されたコードの断片に対するヒント
  • コードレビュー
  • コードの機能を説明する文章の生成

インストール手順

  • プラグインをインストール(下記参照)
  • Ollama、LMStudio、またはGPT4Allが起動していることを確認
  • 設定画面でプロンプトを更新
  • (任意)クラウドLLMプロバイダーのAPIキーを追加
  • プラグインの使用を開始

プラグインはマーケットプレイスからインストールしてください。もし、何らかの理由でプラグインがインストールできない場合(輸出管理規制のため、オープンソースならOK):

…その場合は、他のコンピュータからこのプラグインをコピーするか、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`フォルダまたはIDEに応じて配置してください。私の場合は、PyCharmCExxxフォルダが存在しないため手動で作成しました。
- `~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml`設定ファイルを配置してください。
- オプションです。プラグインとそのアーカイブをキャッシュに追加する必要がある場合があります。

IDEを起動すると、プラグインが事前に設定された状態で表示されるはずです(「インストール済み」タブに表示されます):

![IDEの設定画面に表示されるプラグインリスト。中国語、日本語、韓国語の言語ツールパッケージが含まれている。(AIによるキャプション)|690x367](upload://zhRPNYpgtdcMU1upNbivGsosnJG.png)

## 設定

1. プラグインをインストールした後、プログラムの設定(ファイルメニューから)に移動し、LLMのパラメータ(温度、最大出力トークン数、再試行、タイムアウトなど)を設定してください。必要に応じて、LLMのAPIキーを追加することも可能です。

   > DevOpsチームは、HTTPサーバーとして動作するAPIサービスを用意できます。ただし、機密データを扱う場合は、このサービスをリモートで使用しないでください。なぜなら、トラフィックが盗聴され、公開されたデータが悪意ある第三者によって利用される可能性があるからです。

   LM Studioで正しくコンテキストウィンドウを定義するには、URL `http://localhost:1234/api/v0`を使用する必要がありますが、これは誤りです。モデルのロード時にコンテキストウィンドウサイズを手動で拡大する必要があります(4096 → 8192)。

   ![DevoxxGenieの設定画面。ユーザーはローカルLLMプロバイダーおよびOpenAIのURLを設定できます。(AIによるキャプション)|599x500](upload://a1TZn4KG3kqBYd9sq6XNl2XWXa.png)

   「Prompts」タブでは、システムプロンプトとユーザークエリをカスタマイズできます。

   システムプロンプトとは、ユーザークエリと同時に送信され、タスクの範囲、検索制約、出力フォーマットを定義するものです。これは非常に重要です。

   システムプロンプトから以下の行を削除してください:

The Devoxx Genie is open source and available at GitHub - devoxx/DevoxxGenieIDEAPlugin: DevoxxGenie is a plugin for IntelliJ IDEA that uses local LLM's (Ollama, LMStudio, GPT4All, Jan and Llama.cpp) and Cloud based LLMs to help review, test, explain your project code..
You can follow us on Bluesky @ @devoxxgenie.bsky.social on Bluesky.


すべての言語モデルはMarkdownのフォーマットを理解するため、リスト、サブポイント、コードブロックなど構造化されたプロンプトを作成できます。

> DevOps: デフォルトのプロンプト(制約付きクエリ)は以下ファイルに記述されています。
> 
> ``` 
> ~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml
> ```
> 
> モデルはロシア語のクエリを英語に翻訳できますが、用語の誤訳や質問の曖昧さは回答品質に大きな影響を与えます。例えば、「ページの説明を検索せよ」と「ページへのリンクを提供せよ」の違いを比較してください。どちらのケースでボットがリンクを提供すると思いますか?期待する結果を明確に要求してください(人間がタスクを提示する際の方法と同様に)。

<br>

2. 「Web search」タブでは、モデルがインターネットと連携するオプション(デフォルトで有効)があります。Google Web Searchの個人APIキーがある場合は使用可能です。

3. RAGの詳細設定は後日追加されます:

![DevoxxGenieの設定画面。プロジェクトのスキャンとコピー、ChromaDBを使用したRetrieval-augmented Generation(RAG)の設定が含まれています。(AIによるキャプション)|675x500](upload://gYED7Xn3c0twmTBEwwXsRF0f3pK.png)

## プラグインの使用方法

1. まず、ソースファイルを開き、コードの一部を選択するか、プロジェクトファイルを右クリックしてコンテキストウィンドウに追加します。

「Devoxx」ボタンをクリックしてください:

![コンピュータ画面に表示される...ターミナルウィンドウにシェルコードが表示され、プロジェクトファイルが含まれるフォルダが開かれています。(AIによる画像のキャプション)|600x305](upload://2aBOJ4FADHQqiRrCP6OETygGNFT.png)

2. 適切なモデルを選択してください。残念ながら、リスト内の一部のモデルは使用に不向きな場合があります(例:埋め込みモデル)。モデルフィルターは設定できません。

![機械学習のさまざまなモデル(GPTおよびQwenベースのモデル、RAGおよびウェブインターフェースの設定を含む)のリストが画面に表示されています。(AIによる画像のキャプション)|507x500](upload://wgYHxRY5QimRgxam4SGxLL60KSd.png)

3. コンテキストを定義した後、質問を投げかけたり、事前に定義されたコマンド(/test、/review、/explain、/help)を使用して、LLMに指示を出してください。

4. 選択したLLMから返された回答を受け取ったら、コードの上にあるボタンを使って、コピーしてクリップボードに貼り付けたり、自分のファイルに貼り付けたりしてください。または、スクリプトの動作を説明するためのMarkdown形式のテキスト(英語で表示されるが、プロンプトで使用言語を指定することも可能)を取得できます。

## 出力例:説明

`qwen2.5-coder-14b-instruct`モデルを使用して`/explain`スクリプトを分析した結果:

- コード行数:500行

- モデルのコンテキストウィンドウ:8192(デフォルトの4096から拡張)

- テキストトークン:

```json
"usage": {
 "prompt_tokens": 6298,
 "completion_tokens": 620,
 "total_tokens": 6918
}
  • RTX 5060Tiで分析に要した時間:10秒

  • 回答の質:私の場合、十分に満足できる。モデルはコードとコメントから、このコードが何をするかを構造化された説明を作成できました。

スプойラー

もちろん!初心者開発者向けに、このスクリプトの機能をシンプルな言葉で分解して説明します。

概要

このスクリプトは、Tesseractを使用して光学文字認識(OCR)を実行し、PDFおよび画像ファイル(JPG/JPEG)を処理するように設計されています。PDFにテキストが含まれているかを確認し、必要に応じてTIFFおよびPNG形式に変換し、すべての操作を詳細なレポートにログ出力します。

主なコンポーネント

  1. 色の定義

    • GREEN および NC は、ターミナルでの色付き出力に使用されます。
  2. ヘルプ関数(show_help

    • スクリプトの使用方法、説明、オプション、および実行方法の例を提供します。
  3. 引数解析

    • スクリプトはwhileループとcase文を使用してコマンドライン引数を解析します。
    • オプションには、DPI設定、圧縮タイプ、OCR言語、処理後のTIFF/PNG/TXTファイルの保持有無などが含まれます。
  4. 検証

    • 提供されたDPIが有効範囲(72〜1200)内であるかを確認します。
    • 圧縮アルゴリズムがサポートされているタイプ(group4lzwzip)であるかを確認します。
  5. ログ設定

    • すべての操作と出力を記録するログファイルを初期化します。
  6. ファイル検出

    • 指定されたディレクトリ内のPDFおよびJPG/JPEGファイルをfindコマンドで検出します。ディレクトリが指定されていない場合は、現在のディレクトリを使用します。
  7. PDFファイルの処理

    • 各PDFに対して、pdftotextを使用してテキストが既に含まれているかを確認します。
    • テキストが見つかった場合は、テキストを含むPDFとしてログ出力します。
    • テキストが見つからない場合は、PDFをTIFFおよびPNG形式に変換し、TIFFに対してOCRを実行します。
  8. 画像ファイルの処理

    • 各JPG/JPEGファイルに対して、Tesseractを使用して直接OCRを実行します。
  9. 統計計算

    • 認識された文字数の合計、1ファイルあたりの最大文字数、文字数の分布、その他さまざまな統計を計算します。
    • スキャンされたPDFの割合および平均認識速度を計算します。
  10. 要約生成

    • 処理されたファイル、統計情報、使用されたオプションを含む詳細な要約レポートを生成します。
    • この要約をターミナルおよびログファイルの両方に記録します。

使用例

特定のオプションでスクリプトを実行する場合:

./work2.sh --dpi 600 --compress lzw --lang rus+eng --no-keep-tiff --no-keep-txt ./docs
```このコマンドはDPIを600に設定し、TIFFファイルにはLZW圧縮を使用し、OCRにはロシア語と英語を指定し、処理後にTIFF/PNG/TXTファイルを保持しないようにします。

### 結論

このスクリプトは、OCR機能を備えたPDFおよび画像のバッチ処理に適した包括的なツールです。詳細なログと統計情報が提供されるため、文書処理タスクにおける自動化と分析に役立ちます。

結論

非常に便利なツールで、最適な解決策の探索(たとえば、関数やドキュメントの作成、可視化・ログ記録など)やドキュメント作成に活用できます。

仕組み

開発中の完全な仕組みは以下の通りです。次回の記事では、GitLabでのAI Code Reviewをマージリクエスト(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)

参考リンク

テスト結果

Pythonスクリプト102行のコードレビュー。一部のモデルでは、メモリへのモデルロード時間とウォームアップ時間を排除するために2回目の実行が行われました。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 12b q6_k 9.66 10+ - 84
5 gemma3 :eye: gemma-3 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 15b q4_k_m 9.05 12 - 47 34
14 phi3 phi-4-reasoning 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 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も良好な結果を示しました。Gemma 3には画像認識機能があり、Qwenは英語に切り替わる傾向があります。

テストはRTX 5060Ti 16GB(15.5GBのメモリで、モデルが9.5GB以上になるとロードできません)で実施されました。Qwenは英語に切り替わるため、要約用途では使いづらいです。

サーバー:https://lmstudio.ai

コンテキスト長は4096から8192に拡張されました。

コードレビューおよびチャットボット用:

コードレビュー、チャットボット、要約用:

チャットボットおよび要約用:

画像認識用: