一个灵活且功能强大的大语言模型批处理工具,支持多种数据格式和API提供商,能够高效处理大量非结构化数据。
LLM-Batch 是一个专业的批处理工具,旨在帮助用户高效地使用大语言模型处理各种类型的调用请求,包括不限于数据标签提取,批量智能体内容生成,模型/智能体效果评估
- 多格式输入支持:CSV、Excel (xlsx/xls)、JSON 文件
- 灵活字段选择:支持指定处理特定字段或字段范围
- 位置控制:可指定开始和结束处理位置
- 断点续传:支持从中断位置继续处理
- 编码自动检测:支持多种文件编码格式
- 双格式支持:支持JSON和TXT两种提示词格式
- 智能解析:自动识别提示词格式并解析
- 变量替换:JSON格式支持动态变量替换
- 成本优化:JSON格式相比TXT格式节省60-80% token消耗
- 可选字段:支持examples、variables等增强功能
- LLM兼容API (
api_type: "llm_compatible"):支持所有OpenAI兼容的API接口- DeepSeek、OpenAI、阿里云百炼、火山引擎等
- 阿里云百炼Agent (
api_type: "aliyun_agent"):专门的Agent API接口 - 统一配置管理:通过
api_type字段统一管理不同类型的API - 自动类型检测:未指定
api_type时自动根据配置字段检测 - 高度可扩展:易于添加新的API类型和提供商
- 多种输出格式:CSV、Excel、JSON
- 原始响应保存:可选择保存API原始响应
- 详细日志记录:完整的处理过程日志
- 进度跟踪:实时进度条和处理统计
- 错误处理:详细的错误记录和分类
- 可视化配置:通过Web界面直观配置所有参数
- 任务管理:支持任务的启动、暂停、继续和停止
- 实时监控:实时查看处理进度、状态和结果
- 数据预览:自动预览输入文件(CSV/Excel/JSON)前5行
- 提示词编辑:直接在界面上查看和修改提示词文件
- 参数热更新:修改配置后自动同步保存
- 异步处理:支持并发请求处理
- 重试机制:自动重试失败的请求
- 内存监控:内存使用率监控和限制
- 批次处理:可配置的批处理大小
- 自动备份:处理前自动备份现有文件
项目根目录/
├── src/ # 源代码
│ ├── providers/ # API提供商实现
│ │ ├── base.py # 基础提供商接口
│ │ ├── universal_llm.py # LLM兼容API提供商
│ │ ├── aliyun_agent.py # 阿里云Agent提供商
│ │ └── factory.py # 提供商工厂(统一管理)
│ ├── core/ # 核心处理逻辑
│ │ └── processor.py # 批处理器
│ └── utils/ # 工具类
│ ├── config.py # 配置管理
│ ├── logger.py # 日志管理
│ └── file_utils.py # 文件处理工具
├── config/ # 配置文件
│ ├── config.yaml # 主配置文件
│ └── config.example.yaml # 配置示例文件(简化版)
├── inputData/ # 输入数据目录
├── outputData/ # 输出数据目录
├── prompts/ # 提示词模板文件
├── logs/ # 日志文件
├── tools/ # 实用工具
│ ├── data_quality_check.py # 数据质量检查
│ ├── csv_splitter_manager.py # CSV分割管理器
│ ├── data_converter.py # 数据转换工具
│ ├── token_cost_calculator.py # 成本计算器
│ ├── json_format.py # JSON格式化工具
│ ├── dedup_csv.py # CSV去重工具
│ ├── merge_table_data.py # 表格数据合并
│ ├── compare_keys.py # 键值比较工具
│ └── id_matching.py # ID匹配工具
└── main.py # 主程序入口
- 克隆或下载项目:
git clone <repository-url>
cd <project-directory>- 安装依赖:
pip install -r requirements.txt- 复制配置示例文件:
copy config\config.example.yaml config\config.yaml- 编辑
config\config.yaml文件,设置您的模型提供商URL,API密钥及其他参数
- 复制配置示例文件:
copy prompts\example.json prompts\prompt1.json- 编辑
prompts\prompt1.json文件,设置提示词
{
"system": "系统角色描述",
"task": "任务描述",
"output": "输出格式定义"
}必需字段(必须包含):
system:系统角色描述,定义AI助手的身份和基本规则task:任务描述,说明要执行的具体任务output:输出格式定义,必须是JSON对象或字符串
可选字段(按需使用):
variables:变量替换,在system和task中使用{变量名}格式examples:示例数据,会自动添加到任务描述中metadata:元数据信息,如版本、作者等
- JSON格式规范:所有字符串需要用双引号包围
- 转义字符:JSON内部的引号需要转义(
\") - 变量替换:使用
{变量名}格式,在variables中定义 - 格式有效性:确保JSON格式完全有效,不支持注释
双击运行 run_webui.bat 或在命令行执行:
streamlit run webui.pyWebUI 提供了一站式的配置、运行和监控体验。
python main.py <输入路径> <提示词文件> [可选参数]输入路径:输入文件或目录的路径提示词文件:提示词模板文件路径(支持.json和.txt格式)--fields:要处理的字段 (格式: 1,2,3 或 1-5)--start-pos:开始处理位置 (从1开始)--end-pos:结束处理位置 (包含)--provider:指定API提供商 (覆盖配置文件设置)
# 使用JSON格式提示词
python main.py inputData/data.csv prompts/extract.json
# 处理特定字段
python main.py inputData/data.csv prompts/extract.json --fields 1,3,5
# 处理字段范围
python main.py inputData/data.xlsx prompts/analyze.json --fields 2-6
# 处理指定范围的记录
python main.py inputData/data.csv prompts/extract.json --start-pos 1 --end-pos 100
# 使用特定API提供商
python main.py inputData/data.csv prompts/extract.json --provider aliyun
项目包含多个实用数据工具,位于 tools/ 目录,详情请参考 tools/README.md
- 数据质量检查工具
- 数据去重工具
- 数据分割工具
- 数据格式转换工具
- 模型API成本计算器
欢迎贡献代码!请遵循以下流程:
- Fork 项目
- 创建功能分支
- 提交更改
- 创建 Pull Request
对于重大更改,请先开启 issue 讨论。
本项目采用 MIT 许可证 - 详情请见 LICENSE 文件。
A: 有两种方式:
- 添加新的API类型:继承
BaseProvider类创建新Provider,在factory.py中注册新的api_type - 使用现有类型:如果是OpenAI兼容的API,直接使用
api_type: "llm_compatible"即可
A: 不是必须的。如果未指定,系统会根据配置字段自动检测:
- 有
app_id字段 →aliyun_agent - 有
model字段 →llm_compatible - 默认 →
llm_compatible
A: 调整配置中的 batch_size 和 max_memory_percent 参数。
A: 调整 concurrent_limit 和 retry_interval 参数。
A: 目前支持CSV、Excel (xlsx/xls)、JSON格式的输入和输出。
A: 工具会自动保存处理进度,再次运行相同命令时会从中断位置继续。
如有问题或建议,请提交 issue 或联系项目维护者。