# llmcoderpk **Repository Path**: samwan_9996/llmcoderpk ## Basic Information - **Project Name**: llmcoderpk - **Description**: LLM Code Generation Capability Comparison Tool - Where LLMs Judge LLMs - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-05 - **Last Updated**: 2025-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LLM 代码生成能力比较工具
中文  |  English
一个用于评估和比较不同大型语言模型(LLMs)代码生成能力的综合框架。 ## 目录 - [概述](#概述) - [特性](#特性) - [安装](#安装) - [使用方法](#使用方法) - [配置](#配置) - [输出](#输出) - [评估指标](#评估指标) - [可视化](#可视化) - [项目结构](#项目结构) - [贡献](#贡献) - [许可证](#许可证) ## 概述 该工具提供了一种系统化的方法来评估和比较各种大型语言模型的代码生成能力。它允许您向多个 LLM 提交编程任务,收集它们生成的代码,在多个维度上评估代码质量,并生成包含可视化的综合报告。 ## 特性 - **多模型支持**:使用相同的编程任务同时测试多个 LLM - **综合评估**:在多个维度上评估代码,包括正确性、质量、可读性和效率 - **交叉评估**:模型可以相互评估对方的代码,以获得更平衡的评估 - **详细可视化**:生成雷达图、条形图和比较表格 - **HTML 报告**:创建带有详细分析的交互式 HTML 报告 - **可定制指标**:根据您的需求调整评估权重和标准 - **代码执行**:可选择执行生成的代码以验证功能 - **可扩展框架**:轻松添加新模型或评估标准 ## 安装 ```bash # 克隆仓库 git clone https://github.com/yourusername/llm_compare.git cd llm_compare # 安装依赖 pip install -r requirements.txt ``` ## 使用方法 ### 帮助信息 ```bash $ python main.py usage: main.py [-h] [-c CONFIG] [-d RESULTS_DIR] [-e EVAL_MODELS] [-j JUDGE_MODELS] [-l LANGUAGE] [-p PROMPT] [-P PROMPT_FILE] LLM 代码生成能力比较工具 options: -h, --help 显示帮助信息并退出 -c CONFIG, --config CONFIG 配置文件路径 -d RESULTS_DIR, --results-dir RESULTS_DIR 结果保存目录 -e EVAL_MODELS, --eval-models EVAL_MODELS 要评估的模型,逗号分隔(格式:[提供商:]模型名称) -j JUDGE_MODELS, --judge-models JUDGE_MODELS 评判模型,逗号分隔(格式:[提供商:]模型名称),如果未指定,则使用评估模型 -l LANGUAGE, --language LANGUAGE 编程语言 -p PROMPT, --prompt PROMPT 代码生成提示 -P PROMPT_FILE, --prompt-file PROMPT_FILE 代码生成提示文件路径 -t MAX_TOKENS, --max-tokens MAX_TOKENS Max tokens for Code generation (minimum 200) ``` 注意: - 模型名称应遵循格式:[提供商:]模型名称 - 模型名称和提供商应与 config.toml 中的模型名称匹配 - 例如: - ollama:qwen2.5-coder:0.5b 表示配置文件中ollama提供商的qwen2.5-coder模型,版本为0.5b, 用户应该在ollama主机上通过ollama list看到 - siliconflow:Qwen/Qwen2.5-Coder-7B-Instruct 表示配置文件中siliconflow提供商的Qwen2.5-Coder-7B-Instruct模型,modelscope提供商的DeepSeek-V3-0324模型 - 如果省略‘提供商’,将使用配置文件中的默认供应商 - 如果未指定评判模型,则使用所有被评估模型作为裁判模型 - 如果同时指定评判模型和评估模型,则评判模型将用于评估评估模型的代码 ## 配置 该工具使用位于 config/ 目录中的 TOML 配置文件。主配置文件是 config.toml。 请拷贝一份 config_example.toml 并重命名为 config.toml,然后根据您的需求进行调整。 [配置示例](config/config_example.toml) ## 输出 该工具在指定的结果目录中生成以下输出: - report.html:带有可视化的交互式 HTML 报告 - raw_results.json:JSON 格式的原始评估数据 - analysis.json:处理后的分析结果 - figures/:包含可视化图表的目录 - code/:包含生成的代码文件的目录 ## 评估指标 该工具基于四个主要维度评估代码: 1. 正确性(40%):代码是否正确实现了所需功能 2. 质量(30%):代码的整体质量,包括适当的结构和最佳实践 3. 效率(20%):代码在时间和空间复杂度方面的效率 4. 可读性(10%):代码的可读性和易理解性 用户可以通过调整 config.toml 中的权重来改变这些指标的相对重要性。但是必须确保所有指标都配置且他们的权重总和为 1。 ## 可视化 该工具生成多种可视化,帮助理解比较结果: - 总体得分比较:比较每个模型总体得分的条形图 - 维度比较:在不同评估维度上比较模型的条形图 - 生成时间比较:比较代码生成时间的条形图 - 雷达图:显示模型优势和劣势的个体和比较雷达图 ## 项目结构 ```plaintext llm_compare/ ├── config/ │ └── config.toml ├── main.py ├── modules/ │ ├── code.py │ ├── constants.py │ ├── custom_task_handler.py │ ├── data_analyzer.py │ ├── evaluator.py │ ├── llm_interface.py │ ├── template_renderer.py │ └── utils.py ├── output/ │ └── [timestamp]/ │ ├── figures/ │ ├── code/ │ ├── report.html │ ├── raw_results.json │ └── analysis.json ├── templates/ │ └── report_template.html └── requirements.txt ``` ## 支持的提供商和令牌限制 ### 提供商支持 该工具使用 `/chat/completions` API 端点进行模型交互。理论上,任何支持此端点的 API 提供商都可以与此工具一起使用。这包括但不限于: - OpenAI - Anthropic - Ollama - ModelScope - SiliconFlow - OpenRouter - 以及其他兼容的 API 提供商 要添加新的提供商,只需在 `config.toml` 文件中配置适当的 API 基础 URL 和认证详细信息。 ### 令牌限制 由于不同提供商和模型的上下文长度限制各不相同,如果令牌数量超过模型的容量,API 调用可能会失败。默认情况下,该工具使用最大 2000 个令牌作为上下文,但可以通过以下方式调整: 1. 命令行参数: ```bash python main.py --max-tokens 1000 ... ``` 2. 在 `config.toml` 中配置: ```toml max_tokens = 1000 ``` 如果遇到 API 失败,建议从较小的令牌限制开始,然后根据需要逐渐增加。允许的最小值为 200 个令牌。 ## 示例 以下是该工具生成的一些示例报告: ### 示例 1:中文井字棋游戏 此示例比较了 Qwen2.5-Coder-7B-Instruct 和 DeepSeek-V3-0324 模型在使用中文指令创建井字棋游戏方面的代码生成能力。 使用的命令: ```bash python main.py -e siliconflow:Qwen/Qwen2.5-Coder-7B-Instruct,modelscope:deepseek-ai/DeepSeek-V3-0324 -j siliconflow:Qwen/Qwen2.5-Coder-7B-Instruct,modelscope:deepseek-ai/DeepSeek-V3-0324 -p '做一个人和计算机对战的tik-tok程序' ``` [示例 1 报告](Examples/20250405_150342/report.html) ### 示例 2:使用任务文件的多模型比较 此示例比较了四个不同的 Ollama 托管模型,使用来自文件的任务描述。 使用的命令: ```bash python main.py -e "ollama:modelscope2ollama-registry.azurewebsites.net/AI-ModelScope/DeepSeek-Coder-V2-Lite-Instruct-GGUF:Q4_K_S","ollama:modelscope2ollama-registry.azurewebsites.net/qwen/qwen2.5-coder-14b-instruct-gguf:q4_k_m","ollama:DeepSeek-R1-Distill-Qwen-7B-Q4_K_M:latest","ollama:qwen2.5-coder:0.5b" -j "ollama:modelscope2ollama-registry.azurewebsites.net/AI-ModelScope/DeepSeek-Coder-V2-Lite-Instruct-GGUF:Q4_K_S","ollama:modelscope2ollama-registry.azurewebsites.net/qwen/qwen2.5-coder-14b-instruct-gguf:q4_k_m","ollama:DeepSeek-R1-Distill-Qwen-7B-Q4_K_M:latest","ollama:qwen2.5-coder:0.5b" -P taskfile.txt ``` [示例 2 报告](Examples/20250405_153552/report.html) ### 关于评估结果的重要说明 1. 即使对于功能正确的代码,模型有时也可能提供不准确的评估分数。 2. 网络或提供商问题可能导致评估结果波动。 3. 建议用户在可能的情况下进行多次测试,并亲自查看生成的代码文件。 4. 用户应该根据自己的需求制定更具体的任务要求,以获得更符合其业务需求的评估结果。 5. 此处提供的示例案例仅用于演示目的,不应被视为权威基准。 ## 贡献 欢迎贡献!请随时提交 Pull Request。 1. Fork 仓库 2. 创建您的特性分支( git checkout -b feature/amazing-feature ) 3. 提交您的更改( git commit -m 'Add some amazing feature' ) 4. 推送到分支( git push origin feature/amazing-feature ) 5. 打开一个 Pull Request ## 许可证 该项目采用 [Apache-2.0 license](LICENSE)