LM Studio BionicでPDFの規約をチェック!C#コードレビューを試してみた

AI

LM Studio BionicにPDF形式のコーディング規約を読み込ませ、C#コードをレビューする方法を実践。設定手順やプロンプト例、実際の判定結果、誤判定から分かった注意点まで紹介します。

はじめに

ローカルLLMは外部に情報を流さすことなくAIへ質問などができるので、企業などで注目されています。

各分野ではAIを下表のような用途で使用することが多いですが、社内のノウハウや、顧客・取引情報など外部に出してしまうと問題になる領域は、ローカルLLMが適合しやすいです。

分野用途
製造業図面・技術文書検索、規程や作業手順を検索
金融社内規程検索、文書要約
医療院内文書検索、記録支援
研究開発論文・実験記録・技術資料検索
ソフトウェアソースコードや仕様書、障害ログの分析

表の「用途」に書かれている資料の多くはPDF形式でサーバに保存れ、これまではSharepointやCMS(コンテンツ・マネジメント・システム)を使った全文検索でほしい情報を探していました。

しかし、このやり方だと目的に合う情報が見つからないこともあります。

そこで、今注目されているのがローカル環境でのLLMです。

本記事はPCに保存されたPDFファイル形式のコーディング規約をもとに、コードレビュー依頼を試します。

LM Studio Bionicのインストール手順

LM Studio Bionicのインストールや設定手順は、記事「ローカルLLM LM Studio Bionicの使い方」を参照ください。

LM Studio Bionicを使った実践内容

環境

PCのスペックは表のとおりです。

CPUCore i7
メモリ16GB
GPUIntel UHD Graphic 620
OSWindows11 Pro

使用したソフト

ローカルLLMBionic 1.1.4
モデルGemma4 E4B

設定内容

Context Lengthについて最初は8,192で試しましたが思考中にエラーとなったため、12,288としました。

設定内容

LM Studio Bionicで試した内容

今回は、PDF形式で保存されているコーディング規約をLM Studio Bionicに読み込ませ、その規約をもとにC#のソースコードをレビューできるか試してみます。

やりたいことはシンプルです。

  • コーディング規約のPDFをワーキングディレクトリに配置する
  • LM Studio BionicにPDFの内容を確認してもらう
  • レビューしたいC#コードをプロンプトに貼り付ける
  • コーディング規約に準拠しているか判定してもらう
  • 違反がある場合は、該当する規約や理由、修正例を提示してもらう
Bionicで試した内容

LM Studio Bionicでコーディング規約をチェックする手順

ディレクトリを用意する

今回は下のような構成で、作業ディレクトリとコーディング規約を格納するフォルダを用意しました。

Bionicの作業ディレクトリを用意

コーディング規約のPDFファイルを用意する

今回用意したPDFファイルは2つだけです。(使用したPCのメモリが小さいので、大量の情報が扱えないため)

PDFファイルを用意

また、PDFファイル内の情報はテキストとして扱えるようにしています。

※画像形式になっている場合は、別途OCRの仕組みが必要になるため。

PDFの内容

Bionicで新規プロジェクトを作成

Bionicで新規プロジェクトを作成します。

作業ディレクトリは先ほど作成したディレクトリを指定します。

コードチェックを指示

今回は次のように非常に短くシンプルなコードでチェックを依頼しました。

あなたはコードレビュー担当者です。

ワーキングディレクトリ内の「coding-guidelines」フォルダにあるPDF形式のコーディング規約を参照し、プロンプトに貼り付けたコードが規約に準拠しているかレビューしてください。

■手順
1.ワーキングディレクトリ内のPDFファイルを確認してください。
2.コーディング規約が記載されたPDFを読み、その内容をレビュー基準としてください。
3.ユーザーが貼り付けたコードについて、該当する規約を確認してください。
4.コーディング規約に違反している箇所を特定してください。
5.規約に記載されていない事項について、一般的なベストプラクティスやモデル自身の知識を使って違反判定しないでください。

■判定ルール
以下の3段階で判定してください。
・ OK- コーディング規約に準拠している。
・ NGコーディング規約に明確に違反している。
・ 判断不可PDFのコーディング規約だけでは判断できない。
推測によってNGと判定してはいけません。

■ NGの場合
違反ごとに以下のとおり「違反内容」を出力してください。
・該当コード
・該当するコーディング規約
・規約が記載されているPDFファイル名
・ページ番号またはセクション
・NGと判断した理由
・修正例

■出力形式は以下の通り
・総合判定:OK / NG / 判断不可
・違反内容

■レビュー対象コード

using System;
class Program
 {
  static void Main()
  {
   int total = 0;
   for (int i = 1; i <= 10; i++)
   {
    total += i;
   }
   Console.WriteLine(“1から10までの合計: ” + total);
 }
}

LM Studio Bionicによるコードレビュー結果

回答内容

以下の通り、コーディング規約に準拠していない箇所を指摘してくれました。

しかし、回答の一部では矛盾する内容もありました。

Bionicは「規約では可能な限り宣言と同時に初期化することが推奨されている」としてNG判定しました。しかし、int total = 0;はすでに変数の宣言と初期化を同時に行っています。

さらに、Bionicが提示した修正例もint total = 0;となっており、元のコードと実質的に同じ内容でした。

この結果から、PDFのコーディング規約を参照してレビューできたとしても、Bionicの判定結果が必ず正しいとは限らないため、最終的には人間による確認が必要だと分かりました。

処理時間

今回の回答が返ってくるまでにかかった時間は28分でした。

BionicはPDFをどうやって読み込む?

今回、Bionicがコーディング規約のPDFを確認する際の処理を見ると、pdf_to_imagesというツールが使用されていました。



pdf_to_imagesによってPDFをページ単位の画像として扱い、その内容を確認していることが分かります。

今回の検証では、PythonでPDFを読み込むプログラムを自作したり、PDF解析ライブラリを別途導入したりすることなく、BionicからPDFを扱うことができました。

なお、pdf_to_imagesの内部実装や使用しているPDFライブラリについては、今回確認した範囲では分かりませんでした。

まとめ

今回はLM Studio BionicにPDF形式のコーディング規約を参照させ、コードが規約に準拠しているかレビューできるか試しました。

規約に基づいたチェックを実行できましたが、実際には規約に準拠しているコードを違反として指摘するケースも確認できました。

今回の誤判定については、使用したモデルの性能やContext Lengthなどが影響している可能性も考えられます。

今回のBionic限ったことではないですが、AIによるコードレビュー結果をそのまま採用するのではなく、人間による確認や他のチェック機構を使って複数チェックすることも重要です。

コメント

タイトルとURLをコピーしました