一个基于 PyQt5 和硅基流动 API 的现代化 Excel 批处理工具,支持自定义 Prompt 模板、多线程处理、智能缓存和错误处理。
- 自动列检测:自动读取 Excel 文件的所有列名,支持多选
- 自定义 Prompt:完全可编辑的 Prompt 模板,支持占位符替换
- 多线程处理:使用线程池并发处理,提高处理效率(默认 20 个工作线程)
- 智能缓存:自动缓存相同内容的处理结果,避免重复调用 API
- 实时进度:显示处理进度、预计剩余时间
- 错误处理:自动记录错误行,生成错误日志文件
- 任务中断:支持随时停止正在运行的任务
- API 测试:内置 API 连接测试功能
- 现代化的 PyQt5 图形界面
- 响应式布局,支持窗口调整
- 清晰的分组和标签
- 实时状态反馈
- Python 3.7 或更高版本
- Windows / macOS / Linux
- 硅基流动 API 密钥(在程序内配置)
# 如果使用 git
git clone <repository-url>
cd AutoScreen-AI
# 或直接下载项目文件pip install -r requirements.txt或者手动安装:
pip install pandas openpyxl openai PyQt5在程序内配置(推荐): 运行程序后,在界面中填写 API 密钥与模型名,点击保存。配置会保存在用户目录下(~/.autoscreen_config.json),下次启动会自动加载。
无需设置环境变量。
python main.py-
选择输入文件
- 点击"浏览"按钮选择要处理的 Excel 文件
- 程序会自动检测并显示所有列名
-
选择要合并的列
- 在"自动检测到的列"区域勾选需要合并的列
- 可以多选,这些列的内容会被合并后发送给 AI
-
设置输出文件
- 默认输出为
output.xlsx - 可以点击"浏览"选择保存位置
- 默认输出为
-
设置分隔符
- 设置 AI 输出字段之间的分隔符
- 默认使用
|,可根据需要修改
-
编辑 Prompt 模板
- 在"Prompt 模板"区域编辑你的 Prompt
- 使用
{merged_text}作为文本占位符 - 使用
{delimiter}作为分隔符占位符
-
测试 API(可选)
- 点击"🔍 测试 API"按钮验证 API 连接是否正常
-
开始处理
- 点击"🚀 开始处理"按钮开始批处理
- 可以随时点击"🛑 停止"中断任务
{merged_text}:会被替换为选中列合并后的文本内容{delimiter}:会被替换为你设置的分隔符
你是一名专业领域的文献筛选专家。
【任务目标】
根据提供的文章内容,判断其是否属于【研究类型名称】类文献,并给出是否保留与匹配评分。
【输出要求】
你必须只输出一行内容,包含以下 3 个字段:
① 是否属于(是 / 否)
② 是否应该保留(保留 / 不保留)
③ 匹配评分(0–100 的整数)
字段之间使用分隔符:{delimiter}
【文章内容】
{merged_text}
- 主输出文件:包含原始数据和新增的
AI_Output列 - 错误日志:如果处理过程中有错误,会生成
error_log.txt文件
在界面「并发数」中可设置 1–100 的线程数,设置会保存到本地配置。或在 config.py 中修改 DEFAULT_MAX_WORKERS。
建议值:
- 网络良好:20-40
- 网络一般:10-20
- API 有速率限制:5-10
在 api.py 的 call_model 函数中修改 max_retries 参数:
def call_model(prompt: str, max_retries: int = 3): # 修改这里的数字解决方案:
- 在界面中填写并保存 API Key、接口地址与模型名
- 点击「🔍 测试 API」确认连接正常
- 确认密钥有效、网络可访问对应接口
可能原因:
- API 密钥无效或过期
- 网络连接问题
- API 服务暂时不可用
解决方案:
- 使用"🔍 测试 API"功能检查连接
- 检查网络连接
- 查看错误日志文件了解详细错误信息
优化建议:
- 增加线程数(但注意 API 速率限制)
- 检查网络连接速度
- 利用缓存机制(相同内容会自动使用缓存)
解决方案:
- 减少线程数
- 分批处理大文件
- 关闭其他占用内存的程序
处理方式:
- 查看
error_log.txt了解失败原因 - 检查 Prompt 模板是否正确
- 检查输入数据格式
- 可以重新运行,已处理的行会使用缓存
AutoScreen-AI/
├── main.py # 程序入口(精简)
├── main_window.py # 主窗口与业务逻辑
├── api.py # API 调用与 Excel 批处理核心逻辑
├── config.py # 配置路径与 API Key 管理
├── workers.py # 后台工作线程(Worker、ApiTestThread)
├── widgets.py # 自定义控件(标题栏、日志处理器)
├── styles.py # 全局 QSS 样式表
├── requirements.txt # 依赖列表
├── README.md
├── prompt.txt # 提示词参考(可选)
└── output.xlsx # 输出文件(运行后生成)
| 模块 | 职责 |
|---|---|
main.py |
应用入口,加载样式并启动主窗口 |
main_window.py |
界面布局、事件处理、模板管理、进度与状态更新 |
api.py |
客户端初始化、call_model、run_processing、行级处理与缓存 |
config.py |
CONFIG_PATH、TEMPLATE_DIR、API Key 编解码与持久化 |
workers.py |
批处理 Worker 与 API 测试 ApiTestThread |
widgets.py |
无边框标题栏 CustomTitleBar、日志桥接 QEditTextLogger |
styles.py |
Catppuccin 风格 QSS 常量 |
- Python 3.7+
- PyQt5:GUI 框架
- pandas:Excel 文件处理
- openpyxl:Excel 文件读写
- openai:兼容 OpenAI 接口的 API 客户端(硅基流动)
- concurrent.futures:多线程处理
- ✨ 使用 PyQt5 图形界面
- ✨ 添加自动列检测功能
- ✨ 添加 API 测试功能
- ✨ 添加预计剩余时间显示
- ✨ 改进错误处理和日志记录
- ✨ 优化缓存机制
- 🐛 修复各种已知问题
- 🎉 初始版本发布
- 基本的批处理功能
- 自定义 Prompt 支持
本项目仅供学习和研究使用。
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件(如有)
注意: 使用本工具需要有效的硅基流动 API 密钥,请确保遵守硅基流动的使用条款和 API 调用限制。