技術的負債 (TD) 評価ツールからデータを抽出し、プロンプトを作成し、Ollama API を介して大規模言語モデル (LLM) とのチャットを実行するための Python スクリプト。
現在、プロトタイプは TD 評価ツールとして Arcan のみをサポートしています。また、Java プロジェクトのみをサポートします。
将来的には、Designite および C# プロジェクトをサポートするように拡張される予定です。
pip install -r requirements.txt
選択した Java プロジェクトで 1 つのバージョンの分析を実行します。
分析の出力を使用してマージを実行し、結果を 1 つのファイルにマージします。
ここでは、Arcan 出力は./arcanOutput/myproject
にあり、マージされたファイルは./genai4atdOutput/merger-output
にあります。プロジェクトを含むリポジトリは./projects/myproject
にあります。
python merger_run.py ./arcanOutput/myproject ./genai4atdOutput/merger-output JAVA -r ./projects/myproject -e
データから取得した各種類の匂いを 1 つ含むファイルであるサンプル ファイルを生成したいので、 --examples
( -e
) オプションを使用します。
マージャーは、 --loc
( -l
) オプションを使用して、クラス内で各依存関係が使用されているコードの全行をさらに取得することもできます。現時点では、LLM では素晴らしい結果が得られていないため、お勧めしません。
これで、マージされたファイルが./genai4atdOutput/merger-output/myproject-merged.csv
に、サンプル ファイルが./genai4atdOutput/merger-output/myproject-merged-examples.csv.
次に、プロンプト ファイルを構築する必要があります。
python build_prompt_run.py ./genai4atdOutput/merger-output/myproject-merged-examples.csv ./genai4atdOutput/prompts-output JAVA -dep -def --json
プロンプト内の各コンポーネントの依存関係と、コンテキストに含まれる匂いとメトリクスの定義 (Arcan ドキュメントから) が必要なため、 --dependencies
( -dep
) および--definitions
( -def
) オプションを使用します。
匂いデータも JSON 形式で取得したいと考えています。自然言語で記述することもできますが、プロンプトが長くなり、JSON よりも良い結果が得られませんでした。
これで、 ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json
prompts-output/json/defs/prompt_with_dependency.json にプロンプト ファイルができました。
最後に、LLM とのチャットを実行できます。 API はhttp://localhost:11434/api/chat
にあり、Llama 3 モデルを使用したいと考えています。
python chat_run.py ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json ./genai4atdOutput/chats-output http://localhost:11434/api/chat llama3 --json -def
--json
および-def
オプションは、プロンプトが JSON 形式であり、定義が含まれていることを指定します。
選択した Java プロジェクトに対して進化分析を実行します。
分析の出力を使用して、匂いトラッカーを実行します。バージョン全体で匂いを追跡し、匂いが増加、減少、または消えたかどうかを確認します。変化または消失がある場合、関連するコンポーネントの差分および/またはコミット履歴を取得することもできます。
ここでは、Arcan 出力は./arcanOutput/myproject-evo
にあり、マージされたファイルは./genai4atdOutput/smell-track-output
にあります。プロジェクトを含むリポジトリは./projects/myproject
にあります。
python smell_tracker_run.py ./arcanOutput/myproject ./genai4atdOutput/smell-track-output ./projects/myproject JAVA -diffs -commits -e
バリエーションがある場合は、関連するコンポーネントの差分とコミット履歴が必要です。また、変化または消失した匂いのみを含むサンプル ファイルも必要なので、 --ATDIVarDiffs
( -diffs
)、 --ATDIVarCommitHistory
( -commits
)、および--examples
( -e
) オプション。
これで、臭いトラック ファイルが./genai4atdOutput/smell-track-output/smell_track_myproject_evo.json
に、サンプル ファイルが./genai4atdOutput/smell-track-output/smell_track_myproject_evo_example.json
にあります。
次に、LLM とのチャットを実行できます。 API はhttp://localhost:11434/api/chat
にあり、Llama 3 モデルを使用したいと考えています。
python chat_run.py ./genai4atdOutput/smell-track-output/myproject_evo_smell_track_example.json ./genai4atdOutput/chats-output http://localhost:11434/api/chat llama3 -evo
--evolution
( -evo
) オプションを使用して、これが進化分析であることを指定します。