一个基于 Streamlit 的 Python 应用,用于批量测试提示词并可视化对比结果,专为个人和小团队自用设计。
- 📁 支持 JSON 文件上传或手动输入 prompt
- 🔑 多模型提供商支持: OpenAI、DeepSeek、通义千问、Gemini、Claude 等
- 🎛️ 可调节的参数设置(模型、温度、Token 数等)
- ⚡ 并发处理: 支持多线程并发调用,大幅提升效率
- 💾 智能缓存避免重复调用
- 🔄 错误重试机制
- 📊 多视图展示(网格、列表、表格)
- 🔍 结果筛选和搜索
- 📥 多格式导出(CSV、JSON、Markdown)
- 🛠️ API 调试工具: 快速验证 API 配置
- 🎯 答案验证: 支持规则验证和大模型验证,对比期望答案
- 💡 智能优化: 自动分析失败案例,生成提示词优化建议
- 🤖 Agent 迭代分析: 多轮验证-修正,生成高质量分析报告(参考gemini imo)
推荐使用 uv(更快):
# 安装 uv(如果未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 同步依赖并创建虚拟环境
uv sync或使用 pip:
# 从 pyproject.toml 安装
pip install -e .
# 或手动安装核心依赖
pip install streamlit pandas requests python-dotenv tqdm复制 env.example 为 .env 并填入你的 API 密钥:
cp env.example .env
# 编辑 .env 文件,填入对应的 API 密钥支持的模型提供商:
| 提供商 | 环境变量前缀 | 示例模型 |
|---|---|---|
| OpenAI | OPENAI_ |
gpt-4o, gpt-4o-mini |
| DeepSeek | DEEPSEEK_ |
deepseek-chat |
| 通义千问 | QWEN_ |
qwen-turbo, qwen-max |
| Gemini | GEMINI_ |
gemini-2.0-flash |
| Claude | CLAUDE_ |
claude-3.5-sonnet |
| 智谱 GLM | ZHIPU_ |
glm-4-plus |
| 月之暗面 | MOONSHOT_ |
moonshot-v1-8k |
| 百川 | BAICHUAN_ |
Baichuan4 |
| 硅基流动 | SILICONFLOW_ |
Qwen2.5-72B |
使用 uv:
uv run streamlit run app.py使用 pip 安装后:
streamlit run app.pyuv run streamlit run app.py --server.address 0.0.0.0 --server.port 8501- 上传数据: 上传包含 prompt(和可选的期望答案)的 JSON 文件
- 配置 API: 选择提供商或输入 API 密钥
- 设置参数: 调整系统提示词、并发数等参数
- 运行测试: 点击"开始批量测试"按钮
- 查看结果: 在网格、列表或表格视图中查看结果
- 验证答案: 如果有期望答案,点击"一键验证"对比结果
- 获取优化建议: 对不符合的结果,选择分析模式并点击"生成优化建议"
- 导出数据: 下载 CSV、JSON 或 Markdown 格式的结果
[
"写一首关于春天的诗",
"解释什么是人工智能",
"如何学习Python编程"
][
{"prompt": "写一首关于春天的诗"},
{"prompt": "解释什么是人工智能"}
][
{
"prompt": "写一首关于春天的诗",
"answer": "春天、花朵、生机、希望"
},
{
"prompt": "解释什么是人工智能",
"answer": "人工智能是让机器模拟人类智能的技术"
}
]- Prompt 字段:
prompt、text、content、question、input - Answer 字段:
answer、expected、expected_answer、output、response、label、target
| 验证方式 | 说明 |
|---|---|
| 包含匹配 | 检查结果是否包含期望答案的内容 |
| 精确匹配 | 检查结果是否与期望答案完全一致 |
| 关键词匹配 | 检查期望答案中的关键词出现比例(≥60% 通过) |
| 模糊匹配 | 计算字符串相似度(≥50% 通过) |
| 大模型验证 | 使用 AI 判断语义是否一致 |
提供两种分析模式:
| 模式 | 说明 |
|---|---|
| 简单模式 | 单次分析,速度快 |
| Agent 迭代模式 | 多轮验证-修正,更准确但更慢 |
Agent 迭代模式工作流程:
初始分析 → 自我改进 → 验证分析 → 修正 → 验证 → ... → 输出报告
- 支持 1-20 并发请求
- 自动管理线程池
- 批次间可设置延迟避免限流
- 相同的 prompt + 系统提示词 + 模型组合会使用缓存结果
- 可以在侧边栏清空缓存
- 缓存仅在当前会话有效
prompt-batch/
├── app.py # 主应用(Streamlit 界面)
├── model_config.py # 模型提供商配置模块
├── prompts.py # Prompt 模板集合
├── prompt_analysis_agent.py # Agent 迭代分析工作流
├── debug_api.py # API 调试工具
├── pyproject.toml # 项目配置和依赖
├── uv.lock # 依赖锁定文件
├── env.example # 环境变量模板
├── .env # API 密钥配置(需手动创建)
├── prompts.json # 示例测试数据
└── README.md # 使用说明
# 交互式测试
uv run python debug_api.py
# 测试指定提供商
uv run python debug_api.py --provider deepseek
uv run python debug_api.py --provider qwen
# 列出所有支持的提供商
uv run python debug_api.py --list
# 测试所有已配置的提供商
uv run python debug_api.py --test-all
# 生成 .env 模板
uv run python debug_api.py --env-template# 独立运行 Agent 分析
uv run python prompt_analysis_agent.py -d failed_cases.json -s "你的系统提示词" -o report.md
# 参数说明
# -d, --data 失败案例 JSON 文件
# -s, --system-prompt 当前使用的系统提示词
# -o, --output 输出报告路径
# -m, --max-iterations 最大迭代次数
# -q, --quiet 安静模式| 参数 | 说明 | 默认值 |
|---|---|---|
| API 密钥 | 模型提供商的密钥 | 从 .env 读取 |
| Base URL | API 的基础 URL | 根据提供商自动设置 |
| 模型 | 使用的模型名称 | deepseek-chat |
| 系统提示词 | AI 的角色设定 | 你是一个有用的 AI 助手 |
| 最大 Token 数 | 响应的最大长度 | 500 |
| 温度 | 输出的随机性 | 0.7 |
| 并发数 | 同时发送的请求数 | 5 |
| 请求间隔 | 批次间延迟 | 0.1 秒 |
| 启用缓存 | 是否缓存相同请求 | 是 |
- 请妥善保管 API 密钥,不要提交到公开仓库
- 注意 API 调用限制和费用
- 大批量测试建议降低并发数、增加请求间隔
- 建议启用缓存以节省 API 调用次数
- Agent 模式会消耗更多 token,请注意成本
MIT License