- 🌐 多 AI 供应商支持 - 集成 Dify、OpenAI 兼容接口、iFlow,支持插件扩展
- 💬 实时对话模式 - 支持多轮对话,智能上下文维护
- 📊 批量询问模式 - Excel 批量处理,实时保存结果,支持智能断点续传
- ❓ AI 生成测试问题 - 智能分析文档,自动生成测试提问点
- 💡 AI 生成 QA 问答对 - 模拟用户语气生成高质量问答对(Q+A),支持 Excel/Markdown 导出
- 📝 智能日志系统 - 日志轮转、权限自适应、完整错误追踪
- 🎨 美观终端界面 - 基于 Rich 库的现代化 CLI,流式输出优化
- 🔐 安全输入 - API 密钥自动隐藏,配置文件保护
- 🔄 灵活配置 - 支持配置文件和交互式输入双模式
- 🔌 插件化架构 - 统一的 AI 供应商插件机制,支持私有扩展
# 使用 uv(推荐)
uv sync
# 或使用 pip
pip install requests openpyxl colorama rich# 交互式模式(默认)
uv run python main.py
# 直接进入 "AI 生成测试提问点" 功能
uv run python main.py -- --mode question-generation
# 指定文档目录(跳过目录选择)
uv run python main.py -- --mode question-generation --folder ./kb-docs
# 直接进入 "批量生成 QA 问答对" 功能
uv run python main.py -- --mode qa-generation# 复制配置模板(推荐做法)
cp config/.env.config.example .env.config
# 编辑配置文件
# 设置 API 密钥、角色列表等提示:如果在没有
.env.config的情况下直接运行程序, 工具会在程序所在目录自动创建一个默认的.env.config:
- 若存在
.env.config.example,会基于该模板生成;- 若不存在模板,则按照内置默认值生成一个基础配置文件;
- 创建过程中的提示会显示在终端(stderr),首次运行后建议立即打开并修改该文件。
| 特性 | 说明 |
|---|---|
| 🏢 平台类型 | 专业的 LLM 应用开发平台 |
| 🔒 部署方式 | 支持云服务和私有化部署 |
| 🔑 API 格式 | app-xxxxx |
| 🌐 官网 | https://cloud.dify.ai |
| 🎯 特色 | 无需选择模型,直接使用应用 ID |
| 特性 | 说明 |
|---|---|
| 🔌 兼容性 | 适配任何 OpenAI 格式的 API |
| 🌍 自定义 URL | 支持私有化部署地址 |
| 🤖 模型支持 | 支持自定义模型名称 |
| 📡 API 格式 | 标准 OpenAI Chat Completions |
| 特性 | 说明 |
|---|---|
| 🚀 平台类型 | 集成多种模型的 AI 平台 |
| 🔗 预设 URL | https://apis.iflow.cn/v1 |
| 🎯 内置模型 | qwen3-max, kimi-k2-0905, glm-4.6, deepseek-v3.2 |
| 📱 获取密钥 | iFlow 控制台 |
| ⭐ 推荐理由 | 稳定性好、响应速度快、支持多种主流模型 |
本工具支持自定义 AI 系统提示词,您可以调整 AI 助手的对话风格和行为:
在 .env.config 文件中设置 SYSTEM_PROMPT 参数:
# AI 提示词配置
# 支持占位符: {role}
SYSTEM_PROMPT=你是一个AI助手。当前角色:{role}。请以专业、友好的方式回答问题。- 👔 专业领域:让 AI 扮演特定领域专家(如电商、医疗、技术支持)
- 📝 回答风格:调整 AI 的回答详细程度和语气
- 🌐 多语言:切换到英文或其他语言
- 🎯 特殊要求:添加安全、合规等特定约束
# 电商客服专家
SYSTEM_PROMPT=你是一个专注于电商领域的{role}。你了解电商运营、客户服务的最佳实践。请以友好、专业的方式回答问题。
# 技术支持专家
SYSTEM_PROMPT=你是一个IT技术支持{role}。你精通常见的技术问题排查方法,能够用通俗易懂的语言解释技术概念。请耐心、详细地回答问题。
# 简洁风格
SYSTEM_PROMPT=你是{role},请用简洁明了的语言回答问题,避免冗长的解释。每个回答控制在3-5句话以内。详细配置说明请参考:AI_PROMPT_CONFIG.md
运行方式: 启动后选择功能 1
本工具支持强大的插件扩展能力,除了内置的 Dify、OpenAI、iFlow 之外,还支持加载外部的私有插件。
- 代码隔离:核心测试工具代码开源,而您的业务插件(包含敏感 URL、加密逻辑、鉴权算法)可以存放在私有仓库,互相物理隔离。
- 独立维护:主程序升级不影响私有插件,反之亦然。
- 准备插件目录:将您的自定义插件放在任意位置(例如
../my_plugins)。 - 配置环境变量:在
.env.config中设置EXTERNAL_PLUGINS_PATH。
# 示例
EXTERNAL_PLUGINS_PATH=../my_plugins程序启动时会自动扫描该目录下的插件并加载。详细开发指南请见 PLUGIN_GUIDE.md。
💡 体验插件功能
我们内置了一个全功能示例插件
external_plugins/demo_plugin(展示思维链、工具调用、流式输出等高级特性),默认不加载。如需体验,请添加启动参数:
# 启动并加载示例插件 uv run python main.py -- --enable-demo-plugin # Mac/Linux 可执行文件 ./dify_chat_tester --enable-demo-plugin
# 在 AI问答测试 中选择 1
✅ 实时多轮对话
✅ 上下文自动维护
✅ 命令控制:
- /help 查看可用命令说明
- /export 导出对话记录(支持剪切板/Markdown文件)
- /exit,/quit 返回模式选择
- /new 重置对话上下文
✅ 退出时静默返回,无额外提示# 在 AI问答测试 中选择 2
📁 从 Excel 文件读取问题
🚀 批量发送到 AI 供应商
💾 实时写入结果到 Excel
📊 进度条显示处理状态
📈 生成详细统计信息运行方式: 启动后选择功能 2
📂 读取指定目录下的 Markdown 文档
🤖 AI 智能分析文档内容
❓ 自动生成高质量测试问题
💾 导出为 Excel 文件(带美化表头)
📂 读取指定目录下的 Markdown 文档
🤖 AI 智能分析文档内容
❓ 自动生成高质量测试问题
💾 导出为 Excel 文件(带美化表头)
⚡ 支持增量保存,避免进度丢失运行方式: 启动后选择功能 4
📂 批量读取 Markdown 文档
🗣️ 模拟真实用户口语化提问
💡 生成 "问题 + 答案" 对(JSON 格式解析)
📊 导出为 Excel (含 Token 消耗统计) 及 Markdown
⚡ 实时流式显示生成过程与思维链
🔄 支持失败文档自动重试与断点续传dify_chat_tester/
├── main.py # 主程序入口
├── pyproject.toml # 项目配置
├── config/ # 配置模板目录
│ └── .env.config.example # 配置模板
├── dify_chat_tester/ # 核心模块
│ ├── app_controller.py # 应用控制器
│ ├── chat_manager.py # 聊天管理器
│ ├── batch_manager.py # 批量管理器
│ ├── question_generator.py # 问题生成器
│ ├── provider_setup.py # 供应商设置
│ ├── plugin_manager.py # 插件管理器
│ ├── ai_providers.py # AI 供应商基类和实现
│ ├── config_loader.py # 配置管理
│ ├── selectors.py # 选择器
│ ├── terminal_ui.py # 终端界面
│ ├── excel_utils.py # Excel 工具
│ └── plugins/ # 内置插件
│ ├── dify/ # Dify 供应商
│ ├── openai_compat/ # OpenAI 兼容接口
│ └── iflow/ # iFlow 供应商
├── external_plugins/ # 外部自定义插件目录(.gitignore)
├── tests/ # 测试目录
├── docs/ # 文档
│ ├── PLUGIN_GUIDE.md # 插件开发指南
│ └── 用户使用指南.md
└── scripts/ # 构建脚本
└── build/
| 模式 | 文件名 | 内容 |
|---|---|---|
| 🗣️ 会话模式 | chat_log.xlsx |
对话记录、时间戳、状态 |
| 📊 批量模式 | batch_query_log_YYYYMMDD_HHMMSS.xlsx |
批量询问结果、详细操作日志 |
| 🤖 问题生成模式 | question_generation_YYYYMMDD_HHMMSS.xlsx |
AI 生成的测试问题、文档名称对应 |
| 📋 系统日志(可选) | dify_chat_tester.log |
程序运行日志(需开启 LOG_TO_FILE) |
主要配置项(.env.config):
# === 文件配置 ===
CHAT_LOG_FILE_NAME=chat_log.xlsx
# === 角色配置 ===
ROLES=员工,门店,管理员
# === 批量处理配置 ===
BATCH_REQUEST_INTERVAL=1.0 # 批量请求间隔(秒)
BATCH_DEFAULT_SHOW_RESPONSE=true # 是否默认显示批量回答
# === 网络重试配置 ===
# 仅在出现网络超时/连接错误时重试
NETWORK_MAX_RETRIES=3 # 每次请求的最大重试次数
NETWORK_RETRY_DELAY=1.0 # 重试之间的等待时间(秒)
# === AI 模型配置 ===
IFLOW_MODELS=qwen3-max,kimi-k2-0905,glm-4.6,deepseek-v3.2
OPENAI_MODELS=gpt-4o,gpt-4o-mini,gpt-3.5-turbo
# === 等待动画配置 ===
WAITING_INDICATORS=⣾,⣽,⣻,⢿,⡿,⣟,⣯,⣷
WAITING_TEXT=正在思考
WAITING_DELAY=0.1
# === 终端 UI 配置 ===
USE_RICH_UI=true # true 使用 Rich 彩色面板,false 使用简单文本
ENABLE_THINKING=true # 是否默认开启思维链/推理过程
# === 日志配置 ===
LOG_LEVEL=INFO # DEBUG/INFO/WARNING/ERROR/CRITICAL
LOG_TO_FILE=false # 是否写入日志文件
LOG_FILE_NAME=dify_chat_tester.log # 日志文件名
# LOG_DIR=logs # 日志目录(可选,默认 logs)
# LOG_MAX_BYTES=10485760 # 单个日志文件最大字节数(默认 10MB)
# LOG_BACKUP_COUNT=5 # 保留的备份文件数量(默认 5)
# === Provider 连接配置(可选) ===
# 未配置则在程序中交互输入
# DIFY_BASE_URL=https://api.dify.ai/v1
# DIFY_API_KEY=app-xxx
# DIFY_APP_ID=your-app-id
# OPENAI_BASE_URL=https://api.openai.com/v1
# OPENAI_API_KEY=sk-xxx
# IFLOW_API_KEY=sk-xxx本项目可与 semantic_tester 配合使用,形成完整的 AI 客服测试闭环:
graph LR
A[知识库文档] --> B[dify_chat_tester: 生成测试问题]
B --> C[测试问题 Excel]
C --> D[dify_chat_tester: 批量询问]
D --> E[问答结果 Excel]
E --> F[semantic_tester: 语义比对]
F --> G[语义评估报告]
cd dify_chat_tester
uv run python main.py -- --mode question-generation --folder ./kb-docs
# 输出: question_generation_YYYYMMDD_HHMMSS.xlsxuv run python main.py
# 选择批量模式,使用上一步生成的 Excel 文件
# 输出: batch_query_log_YYYYMMDD_HHMMSS.xlsxcd ../semantic_tester
uv run python main.py
# 选择上一步的批量结果文件
# 程序会自动检测格式并进行语义比对
# 输出: 在原 Excel 中新增"语义是否相符"和"判断依据"列- 🚀 自动化流程: 从问题生成到语义评估,全流程自动化
- 📊 数据追溯: Excel 文件贯穿整个流程,便于追溯和分析
- 🎯 精准评估: 结合 AI 回答和知识库进行语义层面的质量评估
- 🔄 持续优化: 通过评估结果改进知识库,形成闭环
参见完整的协同使用指南
# 代码格式检查
uv run ruff check .
# 自动修复
uv run ruff check --fix .
# 代码格式化
uv run black .
uv run isort .# 运行测试(如果有)
uv run pytest本项目采用 MIT 许可证
Mison - 1360962086@qq.com
我们为您准备了详细的用户使用指南,帮助您从零开始安装和使用本工具。
| 章节 | 内容 | 适用人群 |
|---|---|---|
| 📋 准备工作 | 系统要求和环境检查 | 所有用户 |
| 📝 安装 VSCode | 代码编辑器安装配置 | 新手用户 |
| 🐍 安装 Python | Python 环境搭建 | 所有用户 |
| 📦 安装 Git | 版本控制工具安装 | 所有用户 |
| 🚀 克隆项目 | 获取项目代码 | 所有用户 |
| ⚙️ 安装依赖 | 环境配置和依赖安装 | 所有用户 |
| 🎮 使用方法 | 程序运行和功能说明 | 所有用户 |
| ❓ 常见问题 | 问题排查和解决方案 | 遇到问题的用户 |
graph TD
A[下载安装 VSCode] --> B[安装 Python 3.10+]
B --> C[安装 Git for Windows]
C --> D[克隆项目到本地]
D --> E[安装 uv 包管理器]
E --> F[运行 uv sync 安装依赖]
F --> G[配置 .env.config 文件]
G --> H[运行程序开始使用]
- ℹ️ Python PATH:本项目使用 uv 管理 Python 环境,无需勾选 "Add Python to PATH" 也能正常运行
- 💻 推荐:设置 VSCode 默认终端为 Git Bash
- 🔑 安全:不要在配置文件中硬编码 API 密钥
- 🧠 思维链:默认开启 AI 思考过程显示,可通过配置文件中的
ENABLE_THINKING参数关闭 - 📝 建议:首次使用请先阅读程序使用方法
⭐ 如果这个项目对你有帮助,请给个 Star!
🤝 欢迎提交 Issue 和 Pull Request
