# code_sum **Repository Path**: zhangyi2001/code_sum ## Basic Information - **Project Name**: code_sum - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-08 - **Last Updated**: 2025-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于大模型的软件代码理解方法研究 本项目旨在探索基于大模型的软件代码理解方法,通过整合知识库构建、语义提取、知识检索、提示生成和摘要评估与反馈五个主要步骤,实现对代码的高效理解和分析。 ## 项目结构 ``` new_code/ ├── src/ # 源代码目录 │ ├── models/ # 模型相关代码 │ ├── knowledge_base/ # 知识库构建模块 │ ├── semantic_extraction/ # 语义提取模块 │ ├── retrieval/ # 知识检索模块 │ ├── prompt_generation/ # 提示生成模块 │ ├── evaluation/ # 评估与反馈模块 │ └── utils/ # 工具函数模块 ├── config/ # 配置文件目录 │ ├── config.yaml # 主配置文件 │ └── prompt_templates/ # 提示模板目录 ├── data/ # 数据目录 ├── logs/ # 日志目录 ├── results/ # 结果输出目录 ├── knowledge_base/ # 知识库存储目录 ├── requirements.txt # 项目依赖 ├── main.py # 主入口文件 └── README.md # 项目说明文档 ``` ## 环境要求 - Python 3.8+ - Conda 环境(推荐使用名为 `zy` 的环境) - Ollama 客户端(服务地址:http://127.0.0.1:11434) - 推荐的 Ollama 模型: - 嵌入模型:`qwen3-embedding:4b` 或 `bge-m3:567m` - 大语言模型:`qwen2.5`、`llama3.3`、`gemma3` 等 ## 安装步骤 1. **克隆项目** ```bash cd /home/zhangyi # 假设项目已经在new_code目录下 ``` 2. **激活Conda环境** ```bash conda activate zy ``` 3. **安装依赖** ```bash cd /home/zhangyi/new_code pip install -r requirements.txt ``` 4. **确保Ollama服务正在运行** ```bash # 检查Ollama服务状态 ollama list ``` ## 配置说明 项目的主要配置文件位于 `config/config.yaml`,包含以下几个主要部分: 1. **Ollama配置**:设置Ollama服务地址和使用的模型 2. **数据配置**:设置训练/测试数据路径、样本大小等 3. **知识库配置**:设置知识库路径、分块大小等 4. **语义提取配置**:设置语义提取的参数 5. **检索配置**:设置检索相关的参数 6. **提示生成配置**:设置提示生成的参数 7. **评估配置**:设置评估指标和阈值 您可以根据需要修改这些配置参数。 ## 使用方法 项目提供了命令行界面,可以通过 `main.py` 执行不同的操作: ### 1. 构建知识库 ```bash python main.py --build-kb --data-path data/python_train.jsonl --sample-size 1000 ``` 参数说明: - `--build-kb`:指定构建知识库 - `--data-path`:指定数据文件路径 - `--sample-size`:指定样本大小 - `--force-rebuild`:强制重新构建知识库(可选) ### 2. 运行交互式模式 ```bash python main.py --interactive ``` 在交互式模式下,您可以输入代码进行分析,系统会返回代码的理解结果。 ### 3. 运行批量处理模式 ```bash python main.py --batch --data-path data/python_train.jsonl --sample-size 100 --output-path results/batch_results.jsonl ``` 参数说明: - `--batch`:指定批量处理模式 - `--data-path`:指定数据文件路径 - `--sample-size`:指定样本大小 - `--output-path`:指定输出文件路径 ## 模块说明 ### 1. 知识库构建模块 (`src/knowledge_base/knowledge_builder.py`) 负责从代码数据中构建知识库,包括代码思考过程生成、语义信息提取和知识库存储。 ### 2. 语义提取模块 (`src/semantic_extraction/semantic_extractor.py`) 负责从代码中提取语义信息,结合传统方法(语法解析、数据流分析、关键词提取)和大模型优化。 ### 3. 知识检索模块 (`src/retrieval/knowledge_retriever.py`) 负责根据查询从知识库中检索相关的代码知识,支持向量搜索、文本搜索和混合搜索。 ### 4. 提示生成模块 (`src/prompt_generation/prompt_generator.py`) 负责根据代码和检索结果动态生成提示模板,用于大模型生成代码理解结果。 ### 5. 评估与反馈模块 (`src/evaluation/summary_evaluator.py`) 负责评估生成的摘要质量,并提供反馈和优化建议,支持多种评估指标(BLEU、ROUGE-L、METEOR、BERTScore)。 ### 6. 工具模块 (`src/utils/`) 包含配置加载、Ollama客户端和数据加载等工具函数,为其他模块提供支持。 ## 示例 ### 交互式模式示例 ``` 欢迎使用基于大模型的代码理解系统! 输入代码进行分析,输入 'exit' 退出。 请输入代码: def fibonacci(n): if n <= 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) . 请输入代码语言 (默认为python): python 正在分析代码,请稍候... ===== 代码理解结果 ===== 这个函数实现了斐波那契数列的计算。斐波那契数列的定义是:前两个数为0和1,后续每个数都是前两个数的和。 函数接受一个参数n,表示要计算的斐波那契数的位置。 - 如果n小于等于0,返回0 - 如果n等于1,返回1 - 否则,返回fibonacci(n-1) + fibonacci(n-2),即递归地计算前两个斐波那契数的和 这个实现使用了递归的方法,但需要注意的是,这种递归实现的时间复杂度是O(2^n),对于较大的n值会非常慢。可以考虑使用动态规划或记忆化搜索来优化。 ======================== ``` ### 批量处理示例 批量处理会自动处理指定数量的代码样本,并将结果保存到指定的输出文件中。输出文件为JSONL格式,每行包含一个处理结果,包括原始代码、生成的摘要、评估结果等信息。 ## 注意事项 1. **Ollama服务**:请确保Ollama服务正在运行,并且可以通过配置的地址(默认:http://127.0.0.1:11434)访问。 2. **模型可用性**:请确保配置中指定的模型已经下载到本地,或在首次运行时能够自动下载。 3. **资源消耗**:特别是在构建知识库和批量处理时,可能会消耗较多的计算资源和时间,请根据实际情况调整样本大小。 4. **日志**:程序运行过程中的日志会同时输出到控制台和`logs/main.log`文件中,可以通过查看日志了解程序的运行状态。 5. **结果存储**:批量处理的结果会保存到`results`目录下,可以通过分析这些结果评估系统的性能。 ## 扩展与优化 本项目还有以下可以扩展和优化的方向: 1. 支持更多的代码语言 2. 实现更高效的知识库构建和检索算法 3. 优化提示生成策略,提高代码理解的准确性 4. 增加更多的评估指标和可视化方法 5. 实现分布式处理,提高大规模代码理解的效率 ## 许可证 [MIT License](LICENSE)