Python 腳本用於從技術債 (TD) 評估工具中提取資料、建立提示並透過 Ollama API 與大型語言模型 (LLM) 運行聊天。
目前,原型僅支援Arcan作為TD評估工具。它也僅支援 Java 專案。
它應該在未來擴展以支援 Designite 和 C# 項目。
pip install -r requirements.txt
對您選擇的 Java 專案執行單版本分析。
使用分析的輸出,執行合併以將結果合併到一個檔案中。
這裡,Arcan 輸出位於./arcanOutput/myproject
,我們希望合併檔案位於./genai4atdOutput/merger-output
。包含該專案的儲存庫位於./projects/myproject
。
python merger_run.py ./arcanOutput/myproject ./genai4atdOutput/merger-output JAVA -r ./projects/myproject -e
我們想要產生一個範例文件,該文件包含從資料中檢索到的每種氣味的文件,因此我們將使用--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
最後,我們可以與 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
) 選項來指定這是一個演化分析。