1. 为什么需要工具集成
单一工具无法覆盖AI测试全流程
AI测试是一个贯穿模型选型、Prompt工程、安全评测、性能验证、应用测试和持续监控的完整生命周期。没有任何单一工具能够覆盖全部环节:
- 基准评测阶段需要 lm-eval-harness 等框架来运行标准基准,但这类工具不支持自定义业务场景评测。
- 应用评测阶段需要 DeepEval、RAGAS 等工具来验证 RAG 和对话系统的回答质量,但它们不擅长模型级性能基准。
- 安全评测阶段需要 Garak、Giskard 等专项工具进行红队测试,这些工具的结果需要与缺陷管理系统联动。
- 性能测试阶段需要结合 JMeter/Locust 等传统工具与 LLM 推理特性进行专项性能评估。
工具间数据孤岛问题
当多个工具独立运行而不互通时,会产生以下典型问题:
- 数据重复维护:同一组测试 Prompt 需要在 Prompt 管理工具、评测工具和安全测试工具中分别维护,导致版本不一致。
- 结果无法对比:评测工具输出的结果(如 RAGAS 的 Faithfulness 分数)无法与安全测试工具的扫描结果关联,难以形成统一的测试报告。
- 流程断裂:评测发现问题后,需要人工将缺陷录入 TAPD/Jira,缺乏自动化的"发现→记录→跟踪→验证"闭环。
- 决策缺乏全局视角:各工具只能看到局部指标,管理层无法从统一仪表盘获取 AI 系统质量的全局视图。
集成收益
有效的工具集成可以带来显著的效率和质量提升:
| 收益维度 | 集成前 | 集成后 | 量化提升 |
|---|---|---|---|
| 测试执行效率 | 手动跨工具触发,需人工编排 | CI/CD 自动触发,工具链串联执行 | 执行时间减少 60%~80% |
| 数据一致性 | 多工具独立维护测试数据,版本易冲突 | 统一数据源,单一事实来源 | 数据不一致事件减少 90%+ |
| 缺陷闭环效率 | 人工跨系统录入,平均滞后 2~4 小时 | 自动创建+关联,延迟 < 1 分钟 | 闭环周期缩短 50%+ |
| 报告生成 | 手工汇总多工具结果,耗时长易出错 | 统一数据汇聚,自动生成综合报告 | 报告生成时间减少 80%+ |
| 质量可见性 | 各工具独立仪表盘,缺乏全局视图 | 统一质量大盘,多维度指标一目了然 | 问题发现速度提升 3~5 倍 |
2. 集成架构模式
三大集成模式概述
根据工具间协作方式的不同,AI测试工具集成可以归纳为三种核心架构模式:
| 模式 | 架构示意 | 核心思想 | 适用场景 |
|---|---|---|---|
| 管道模式 (Pipeline) |
工具A → 工具B → 工具C | 按阶段串联,上一阶段的输出作为下一阶段的输入 | CI/CD流水线、阶段性质量门禁 |
| 中心化模式 (Hub & Spoke) |
统一平台 ↔ 各工具 | 通过统一平台调度和汇聚各工具结果 | 企业级测试管理、质量大盘 |
| 混合模式 (Hybrid) |
管道 + 中心化 | 局部管道串联 + 全局中心化汇聚 | 大型团队、复杂项目 |
管道模式(Pipeline)
管道模式是最直接的集成方式:将工具按测试阶段串联成一条流水线,每个阶段完成后自动触发下一阶段。典型的 AI 测试管道如下:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ lm-eval-harness │ ──→ │ DeepEval │ ──→ │ RAGAS │ ──→ │ Garak │
│ (基准评测) │ │ (应用质量评测) │ │ (RAG专项评测) │ │ (安全红队测试) │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
基准通过/失败 质量门禁通过/失败 检索质量评分 安全漏洞报告
│
▼
┌─────────────────┐
│ TAPD/Jira │
│ (缺陷自动录入) │
└─────────────────┘
- 优点:结构清晰,与 CI/CD 天然契合;每个阶段职责单一,易于维护和替换。
- 缺点:阶段间耦合较强,前置阶段失败会阻塞后续阶段;不适合需要并行执行的场景。
- 实现方式:CI/CD 工具(如 Jenkins Pipeline、GitLab CI Stages、GitHub Actions Jobs)原生支持管道编排。
中心化模式(Hub & Spoke)
中心化模式通过一个统一的测试管理平台来调度各个工具,所有工具的输入数据和输出结果都汇聚到中心平台:
┌──────────────────────────────┐
│ 测试管理平台(TAPD/自研) │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │测试用例│ │评测数据│ │质量报告│ │
│ └──────┘ └──────┘ └──────┘ │
└──────┬───────┬───────┬───────┘
│ │ │
┌─────────┘ │ └─────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ lm-eval │ │ DeepEval │ │ Garak │
└────────────┘ └────────────┘ └────────────┘
- 优点:统一数据管理,消除数据孤岛;支持并行执行,效率更高;全局质量视图一目了然。
- 缺点:对中心平台的可靠性要求高,单点故障影响全局;平台开发和维护成本较高。
- 实现方式:基于某银行现有的 TAPD 测试管理平台扩展,或自研测试中台。
混合模式(Hybrid)
混合模式是前两种模式的结合:在局部使用管道模式串联关联紧密的工具,在全局使用中心化平台统一管理:
- 管道层:在 CI/CD 流水线中将评测工具(DeepEval + RAGAS)与安全工具(Garak)串联,形成自动化质量门禁。
- 中心层:所有工具的测试数据(Prompt、数据集、结果)统一存储在测试管理平台,通过 API 实现双向同步。
- 适用场景:这是最推荐的模式,兼顾了自动化和统一管理的需求,也是某银行推荐的集成架构方向。
| 对比维度 | 管道模式 | 中心化模式 | 混合模式 |
|---|---|---|---|
| 实现难度 | ⭐⭐ 较低 | ⭐⭐⭐⭐ 较高 | ⭐⭐⭐⭐ 较高 |
| 自动化程度 | ⭐⭐⭐⭐ 高 | ⭐⭐⭐ 中等 | ⭐⭐⭐⭐⭐ 很高 |
| 数据一致性 | ⭐⭐ 较弱 | ⭐⭐⭐⭐⭐ 强 | ⭐⭐⭐⭐ 较强 |
| 扩展性 | ⭐⭐⭐ 中等 | ⭐⭐⭐⭐ 较强 | ⭐⭐⭐⭐⭐ 强 |
| 维护成本 | ⭐⭐ 较低 | ⭐⭐⭐⭐ 较高 | ⭐⭐⭐ 中等 |
| 推荐场景 | 小型团队、快速验证 | 大型组织、标准化管理 | 中大型团队、长期建设 |
3. 关键集成点
AI测试工具链有四个关键集成点,每个集成点都有明确的数据流和触发机制。以下分别展开说明:
关键集成点总览
| 集成点 | 数据流向 | 触发方式 | 核心价值 |
|---|---|---|---|
| 评测工具 ↔ CI/CD | 评测结果 → CI 流水线 → 质量门禁判定 | 代码提交/MR触发 | 自动化质量门禁,防止低质量模型上线 |
| 安全工具 ↔ 缺陷管理 | 安全漏洞 → 缺陷工单 → 修复验证 | 安全扫描完成触发 | 安全漏洞闭环管理,合规审计追踪 |
| Prompt工具 ↔ 版本管理 | Prompt版本 → Git仓库 → 评测关联 | Prompt变更触发 | Prompt变更追溯,版本回滚能力 |
| 评测数据 ↔ 测试管理平台 | 评测用例/结果 ↔ TAPD ↔ 质量报表 | 评测完成触发 | 统一质量视图,多维度报告 |
3.1 评测工具 ↔ CI/CD
这是最核心的集成点,目标是将 AI 评测嵌入 CI/CD 流水线,实现"每次模型变更都自动评测":
- 触发时机:模型权重更新、Prompt 变更、RAG 知识库更新时自动触发评测。
- 数据流:CI 触发 → 拉取最新模型/Prompt → 执行 DeepEval/RAGAS 评测 → 结果与基线对比 → 判定质量门禁(通过/阻断)。
- 关键技术:
- DeepEval 原生支持 pytest,可直接集成到 CI 脚本中。
- 评测结果通过 exit code(0=通过,1=失败)控制 CI 流水线走向。
- 建议使用
threshold机制设置最低可接受分数(如 Faithfulness ≥ 0.8)。
- 银行场景注意:评测数据可能包含敏感信息,CI 日志应脱敏处理或使用私有化 Runner。
3.2 安全工具 ↔ 缺陷管理
AI 安全测试(越狱攻击、偏见检测、隐私泄露等)发现的问题需要纳入标准缺陷管理流程:
- 触发时机:Garak/Giskard 安全扫描完成后,自动创建或更新缺陷工单。
- 数据流:安全扫描完成 → 解析扫描报告(JSON/XML) → 提取漏洞详情 → 通过 API 创建 TAPD/Jira 缺陷 → 关联被测模型版本。
- 关键字段映射:
安全工具字段 TAPD 字段 说明 vulnerability_type 缺陷类型 如"越狱攻击"、"偏见输出"、"隐私泄露" severity 严重程度 Critical/High/Medium/Low attack_payload 复现步骤 触发漏洞的输入内容 model_version 发现版本 被测模型版本号 remediation 修复建议 工具生成的修复指导意见
3.3 Prompt工具 ↔ 版本管理
Prompt 是 AI 应用的"源代码",需要像代码一样进行版本管理:
- 集成方案:将 Prompt 存储在 Git 仓库中(如 YAML/Markdown 格式),通过 Git 进行版本控制。
- 触发机制:Prompt 文件变更时触发对应评测用例,确保修改不会导致质量退化。
- 推荐工具链:Git(版本管理)+ Promptfoo(Prompt 评测)+ GitLab CI(自动触发评测)。
- 版本命名规范:建议使用语义化版本
v{major}.{minor}.{patch},如v2.1.0。
3.4 评测数据 ↔ 测试管理平台
测试管理平台(如 TAPD)是测试活动的统一入口,AI 评测数据应该在此汇聚:
- 同步内容:
- 上游同步:TAPD 中的 AI 测试用例 → 评测工具的数据集输入。
- 下游同步:评测工具的执行结果 → TAPD 的测试执行记录和质量报表。
- 技术方案:通过 TAPD Open API 实现双向数据同步,建议使用定时任务(cron)+ Webhook 结合的机制。
- 数据格式:建议定义统一的 JSON Schema 作为中间数据格式,避免各工具数据结构不一致导致的数据转换问题。
4. 集成技术方案
选择合适的集成技术方案是工具集成的核心工程决策。以下列出四种主流方案及其适用场景:
| 方案 | 原理 | 实时性 | 复杂度 | 最佳场景 |
|---|---|---|---|---|
| API 集成 (REST/GraphQL) |
工具间通过 HTTP API 直接调用,主动拉取或推送数据 | 准实时 (秒级) |
⭐⭐⭐ | 数据同步、触发执行、结果回传 |
| 事件驱动 (Webhook) |
源工具在事件发生时,向目标工具发送 HTTP 回调 | 实时 (毫秒级) |
⭐⭐ | 评测完成通知、缺陷自动创建 |
| 数据层共享 (DB / 文件) |
工具共享同一个数据库或文件存储,通过读写同一数据源实现集成 | 准实时 (秒级) |
⭐⭐ | 测试用例共享、评测结果汇聚 |
| CLI 集成 (Shell/Python) |
通过命令行调用工具,脚本编排多工具协作 | 批量 (分钟级) |
⭐ | CI/CD 流水线、批量评测任务 |
4.1 API 集成(REST/GraphQL)
最常见的集成方式,适用于工具间需要传递结构化数据的场景:
- REST API:简单直观,适合 CRUD 操作。大部分评测工具(DeepEval、RAGAS)都提供 Python SDK,底层封装了 REST 调用。
- GraphQL:适合复杂查询场景(如按多条件筛选评测结果),减少数据过载和多次请求。
- 示例:通过 TAPD API 拉取测试用例 → 转换为 RAGAS 数据集 → 执行评测 → 通过 TAPD API 回传结果。
- 银行场景注意:API 调用需要使用内网环境,接口通信需走 HTTPS + Token 认证,敏感数据传输需加密。
4.2 事件驱动(Webhook)
适合"当 X 发生时,触发 Y"的异步场景,减少轮询开销:
- 典型应用:
- GitLab/GitHub Push → Webhook → 触发 CI 流水线中的评测脚本。
- 安全扫描完成 → Webhook → 自动创建 TAPD 缺陷。
- 评测通过/失败 → Webhook → 发送企业微信/钉钉通知。
- 注意事项:需要处理 Webhook 投递失败的重试机制,建议配合消息队列(如 RabbitMQ/Kafka)增加可靠性。
4.3 数据层共享
当多个工具需要操作同一批数据时,数据层共享是最直接的方案:
- 共享数据库:所有工具读写同一个评测结果数据库(如 PostgreSQL、MySQL),避免数据同步开销。
- 共享文件存储:使用 NAS 或对象存储(如 MinIO)统一存放 Prompt 文件、评测数据集和结果报告。
- 风险:共享数据库可能成为性能瓶颈,建议仅用于元数据和汇总结果,不要存放原始评测日志。
4.4 CLI 集成
最轻量的集成方式,适合脚本化编排和快速验证:
- 示例:编写 Shell 脚本串联 lm-eval → DeepEval → RAGAS,将结果汇总到统一 JSON 文件。
- 适用:CI/CD 流水线的各个 Stage 或 Job。
- 局限:缺乏错误处理和重试机制,适合简单管道但不适合复杂的企业级集成。
5. 某银行工具链规划建议
结合某银行现有测试平台
某银行目前已有成熟的测试基础设施(TAPD 测试管理、Jenkins CI/CD、企业微信通知),工具链集成应充分利用现有平台,避免"推倒重来":
- TAPD:作为测试管理的中心枢纽,统一管理 AI 测试用例、执行记录和缺陷。通过 TAPD Open API 与评测工具对接。
- Jenkins:作为 CI/CD 编排引擎,通过 Pipeline 脚本串联各评测工具的 CLI/API 调用。
- 企业微信:作为通知渠道,评测结果和异常告警通过 Webhook 推送到指定群聊。
- GitLab:作为代码和 Prompt 版本管理平台,存储 Prompt 模板和评测脚本。
分阶段集成路线
基于"小步快跑、持续迭代"的原则,建议按以下三个阶段推进:
| 阶段 | 时间周期 | 目标 | 关键任务 | 产出 |
|---|---|---|---|---|
| 🥇 第一阶段 基础集成 |
1~2 个月 | 打通核心链路,建立信心 |
· 搭建 DeepEval + RAGAS 的 CLI 评测脚本 · 集成到 Jenkins Pipeline,实现 MR 触发 · 评测结果通过 Webhook 通知企业微信 · Prompt 文件纳入 GitLab 版本管理 |
✅ CI 中自动执行的评测流水线 ✅ Prompt 版本追溯能力 ✅ 企业微信评测通知 |
| 🥈 第二阶段 平台对接 |
2~4 个月 | 消除数据孤岛,统一管理 |
· 开发评测数据与 TAPD 的同步模块 · 安全工具(Garak)结果自动创建 TAPD 缺陷 · 建立统一评测数据集管理规范 · 搭建 AI 测试质量仪表盘(Grafana) |
✅ TAPD ↔ 评测工具双向同步 ✅ 安全漏洞自动录入缺陷 ✅ 统一质量可视化大盘 |
| 🥉 第三阶段 智能化升级 |
4~6 个月 | 智能化运营,持续优化 |
· 评测基线自动更新与异常检测 · TruLens 接入生产环境持续监控 · 多模型 A/B 评测自动化 · Agent 行为全链路追踪 |
✅ 智能基线管理 ✅ 生产环境实时监控 ✅ 全链路质量追踪体系 |
- 利旧优先:优先复用某银行现有的 TAPD、Jenkins、GitLab 平台,避免引入过多新系统。
- 接口标准化:所有工具间交互使用统一的 JSON 数据格式和 REST API 规范。
- 安全合规:评测数据不出内网,敏感信息脱敏后再传输,所有 API 调用记录审计日志。
- 可观测性:所有集成链路必须可监控,集成故障需在 5 分钟内告警。
6. 实战演练
以下两个实战任务覆盖了工具集成中最核心的两个场景,建议按顺序完成,预计总耗时 2~3 小时。
🟢 任务一:构建 DeepEval 评测 → CI 质量门禁集成
目标:将 DeepEval 评测嵌入 Jenkins Pipeline,实现 MR 合入前的自动质量检查。
步骤
- 准备评测脚本:编写
test_ai_quality_gate.py,包含至少 3 个评测指标(Faithfulness、AnswerRelevancy、Hallucination),每个指标设置合理的 threshold:from deepeval import assert_test from deepeval.metrics import FaithfulnessMetric, AnswerRelevancyMetric, HallucinationMetric from deepeval.test_case import LLMTestCase def test_faithfulness(): metric = FaithfulnessMetric(threshold=0.7) test_case = LLMTestCase( input="某银行理财产品赎回规则是什么?", actual_output="理财产品可在T+1日赎回,最低持有期为7天...", retrieval_context=["理财产品赎回规则:客户可在T+1日申请赎回..."] ) assert_test(test_case, [metric]) def test_relevancy(): metric = AnswerRelevancyMetric(threshold=0.7) test_case = LLMTestCase( input="如何开通手机银行?", actual_output="您可以通过以下步骤开通手机银行:1. 下载APP...", retrieval_context=["手机银行开通流程:下载官方APP后..."] ) assert_test(test_case, [metric]) def test_no_hallucination(): metric = HallucinationMetric(threshold=0.0) test_case = LLMTestCase( input="大额转账限额是多少?", actual_output="单日累计限额为100万元。", context=["大额转账限额:单日累计最高100万元..."] ) assert_test(test_case, [metric]) - 配置 Jenkins Pipeline:在 Jenkinsfile 中添加评测 Stage:
stage('AI Quality Gate') { steps { sh ''' pip install deepeval export OPENAI_API_KEY=${OPENAI_API_KEY} pytest test_ai_quality_gate.py -v --tb=short ''' } post { failure { // 评测失败时通知企微 sh 'curl -X POST ${WEWORK_WEBHOOK} -d \'{"msgtype":"text","text":{"content":"AI评测门禁未通过!请检查评测结果"}}\'' } } } - 验证:提交一个正确回答和一个错误回答,分别验证 CI 通过和阻断行为。
- 优化:根据实际业务场景调整 threshold 阈值,避免过于宽松(漏检)或过于严格(误报)。
评估标准
- ✅ DeepEval 评测脚本可正常执行,3+ 指标全部运行
- ✅ Jenkins Pipeline 中可自动触发评测 Stage
- ✅ 低质量输出能正确被 CI 阻断
- ✅ 失败时企业微信收到通知
预计耗时:60~90 分钟
🟡 任务二:安全扫描结果自动录入 TAPD 缺陷
目标:将 Garak 安全扫描结果自动解析并创建 TAPD 缺陷,实现安全漏洞的闭环管理。
步骤
- 运行 Garak 安全扫描:对目标 LLM 应用执行安全扫描,导出 JSON 格式报告:
# 安装 Garak pip install garak # 运行安全扫描(示例:检测提示注入漏洞) python -m garak --model_type rest \ --model_name my_bank_llm \ --probes promptinject \ --report_format json \ --report_prefix ./garak_report - 编写转换脚本:将 Garak JSON 报告转换为 TAPD 缺陷格式:
import json import requests def parse_garak_report(report_path): """解析 Garak 报告并创建 TAPD 缺陷""" with open(report_path, 'r') as f: report = json.load(f) # TAPD API 配置 TAPD_API = "https://api.tapd.cn/bugs" HEADERS = {"Authorization": "Basic YOUR_TOKEN"} for finding in report.get('findings', []): # 映射字段 bug = { "title": f"[AI安全] {finding['probe']}: {finding['detector']}", "description": f""" **漏洞类型**: {finding['probe']} **严重程度**: {finding.get('severity', '中')} **触发输入**: {finding.get('prompt', 'N/A')} **模型响应**: {finding.get('response', 'N/A')} **修复建议**: 请参考 Garak 安全指南 """, "severity": map_severity(finding.get('severity')), "priority_label": "High", "module": "AI系统-安全评测" } # 创建 TAPD 缺陷 resp = requests.post(TAPD_API, headers=HEADERS, json=bug) if resp.status_code == 200: print(f"✅ 缺陷已创建: {bug['title']}") else: print(f"❌ 创建失败: {resp.text}") def map_severity(garak_severity): mapping = {"HIGH": "严重", "MEDIUM": "一般", "LOW": "轻微"} return mapping.get(garak_severity, "一般") if __name__ == "__main__": parse_garak_report("./garak_report.json") - 集成到 CI Pipeline:在 Jenkins 中添加安全扫描 Stage,扫描完成后自动调用转换脚本创建缺陷。
- 验证闭环:模拟一个安全漏洞,确认 TAPD 中正确创建缺陷,修复后在 TAPD 中关闭缺陷。
评估标准
- ✅ Garak 扫描能生成 JSON 格式报告
- ✅ 转换脚本能正确解析报告并映射到 TAPD 字段
- ✅ 缺陷成功创建在 TAPD 指定项目中
- ✅ 字段映射准确(严重程度、模块、描述完整)
预计耗时:60~90 分钟