# llm_benchmark **Repository Path**: hldqxt/llm_benchmark ## Basic Information - **Project Name**: llm_benchmark - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LLM Provider 性能基准测试工具 一个用于对比不同LLM提供商(OpenCode Go、阿里云百炼、GLM等)在代码生成任务上性能的自动化测试工具。 ## ✨ 功能特性 - 🚀 **多Provider支持**: 支持OpenCode Go、阿里云百炼、GLM等多种LLM Provider - 📊 **全面的性能指标**: 测试响应时间、生成速度(tokens/sec)、首token时间等 - 🧪 **丰富的测试用例**: 包含10个不同难度和类型的代码生成任务 - 📈 **可视化报告**: 自动生成对比图表,直观展示性能差异 - 💾 **多格式输出**: 支持JSON和CSV格式的结果导出 - ⚙️ **灵活配置**: 通过配置文件轻松管理测试参数 ## 📦 安装 ### 1. 克隆或下载项目 ```bash cd llm_benchmark ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ## 🚀 快速开始 ### 1. 配置API密钥 复制配置文件示例: ```bash cp config.json.example config.json ``` 编辑 `config.json`,填入你的API密钥: ```json { "providers": [ { "name": "OpenCode Go - GLM-5", "type": "opencode-go", "api_key": "YOUR_OPENCODE_API_KEY", "base_url": "https://opencode.ai/zen/go/v1", "model_name": "glm-5", "enabled": true }, { "name": "OpenCode Go - Kimi K2.5", "type": "opencode-go", "api_key": "YOUR_OPENCODE_API_KEY", "base_url": "https://opencode.ai/zen/go/v1", "model_name": "kimi-k2.5", "enabled": true }, { "name": "OpenCode Go - MiniMax M2.5", "type": "opencode-go", "api_key": "YOUR_OPENCODE_API_KEY", "base_url": "https://opencode.ai/zen/go/v1", "model_name": "minimax-m2.5", "enabled": true }, { "name": "阿里云百炼 - Qwen Coder", "type": "aliyun", "api_key": "YOUR_ALIYUN_API_KEY", "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1", "model_name": "qwen-coder-plus", "enabled": true }, { "name": "GLM原生 - GLM-4", "type": "glm", "api_key": "YOUR_GLM_API_KEY", "base_url": "https://open.bigmodel.cn/api/paas/v4", "model_name": "glm-4", "enabled": true } ] } ``` ### 2. 运行测试 ```bash python run_benchmark.py ``` ### 3. 查看结果 测试完成后,结果会保存在 `results/` 目录下: - `benchmark_results_*.json` - JSON格式的详细结果 - `benchmark_results_*.csv` - CSV格式的表格数据 - `*.png` - 可视化图表(响应时间对比、生成速度对比等) ## 📊 生成的图表 工具会自动生成以下对比图表: 1. **平均响应时间对比** - 各Provider的平均响应时间柱状图 2. **平均生成速度对比** - 各Provider的平均生成速度(tokens/sec)柱状图 3. **各测试用例响应时间对比** - 按测试用例分组的响应时间对比 4. **各测试用例生成速度对比** - 按测试用例分组的生成速度对比 5. **综合性能雷达图** - 多维度性能综合对比 ## 🎯 命令行选项 ```bash # 基本运行 python run_benchmark.py # 指定配置文件 python run_benchmark.py -c my_config.json # 详细输出模式 python run_benchmark.py -v # 不生成图表 python run_benchmark.py --no-charts # 仅测试Provider连接 python run_benchmark.py --test-connection ``` ## 📝 测试用例 工具包含10个不同难度和类型的代码生成任务: | 用例名称 | 难度 | 类别 | |---------|------|------| | 快速排序实现 | Easy | 算法 | | 斐波那契数列 | Easy | 算法 | | 配置文件解析器 | Easy | 文件处理 | | 二叉树遍历 | Medium | 数据结构 | | LRU缓存 | Medium | 设计模式 | | 异步HTTP客户端 | Medium | 网络编程 | | 文件监听器 | Medium | 系统编程 | | JSON解析器 | Hard | 字符串处理 | | 线程池 | Hard | 并发编程 | | 表达式求值 | Hard | 算法 | ## ⚙️ 配置文件说明 ### Provider配置 ```json { "name": "OpenCode", // Provider名称(显示用) "type": "opencode", // Provider类型(opencode/aliyun/glm) "api_key": "YOUR_API_KEY", // API密钥 "base_url": "...", // API基础URL "model_name": "...", // 模型名称 "enabled": true // 是否启用 } ``` ### 测试用例配置 ```json { "test_cases": { "mode": "all", // 模式:all(全部)或 selected(指定) "selected": ["快速排序实现", "LRU缓存"] // selected模式下要运行的用例 } } ``` ### 输出配置 ```json { "output": { "save_json": true, // 保存JSON格式结果 "save_csv": true, // 保存CSV格式结果 "generate_charts": true, // 生成可视化图表 "output_dir": "results" // 输出目录 } } ``` ## 🔧 扩展开发 ### 添加新的Provider 1. 在 `providers/` 目录下创建新的Provider类,继承 `BaseProvider` 2. 实现 `generate_code()` 和 `test_connection()` 方法 3. 在 `providers/__init__.py` 中导出 4. 在配置文件中添加Provider配置 ### 添加新的测试用例 编辑 `test_cases/code_generation.py`,在 `TEST_CASES` 列表中添加新的测试用例: ```python { "name": "新测试用例", "difficulty": "medium", "category": "类别", "prompt": "详细的测试提示词..." } ``` ## 📈 性能指标说明 - **总耗时(Total Time)**: 从发送请求到接收完整响应的时间 - **首Token时间(First Token Time)**: 从发送请求到收到第一个token的时间(近似值) - **生成速度(Tokens/sec)**: 输出tokens数 / 总耗时 - **Prompt Tokens**: 输入的token数量 - **Completion Tokens**: 生成的token数量 ## ⚠️ 注意事项 1. **API费用**: 运行测试会调用各个Provider的API,可能产生费用 2. **网络要求**: 需要稳定的网络连接到各个Provider的API 3. **API限制**: 注意各个Provider的速率限制,必要时调整测试频率 4. **数据安全**: 不要将包含API密钥的 `config.json` 提交到版本控制系统 ## 🤝 贡献 欢迎提交Issue和Pull Request! ## 📄 许可证 MIT License ## 🙏 致谢 本工具受Aider等开源项目的启发,旨在为开发者提供一个简单易用的LLM性能对比工具。