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
) 选项来指定这是一个演化分析。